实时数仓 Hologres产品使用合集之在主键重复写入时无法保证保留最后一条记录如何解决

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。

问题一:我们这边发现一个Hologres问题,不知道是不是设计如此?


我们这边发现一个Hologres问题,不知道是不是设计如此。

问题描述:我们现在hologres中有几张表开启了binlog,然后通过flink去消费hologres的binlog数据,可以正常消费(会自动创建Publication并关联表)。如果我们把hologres中的表删除了,pg_publication_tables里面的数据会删除,pg_publication不会删除。我们再重新创建hologres表后,flink消费时,Publication就不会自动关联表了,就会报错。

解决方案:删除hologres表时,再手动删除PUBLICATION。


参考回答:

Hologres目前存在的问题是,当删除带有 binlog 的表时,对应的 Publication 记录没有被同步删除,导致再次创建表后无法与 Publication 自动关联。您提供的解决方案是正确的,即手动删除 Publication 记录以解决问题。

这个情况可能是由于 Hologres 当前的设计缺陷引起的,建议您及时联系技术支持团队报告这一问题,以便尽快修复这一问题。同时,也可以考虑在每次删除表前,检查是否有相关的 Publication 记录,如有则一并删除,避免出现类似的问题。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/568924


问题二:Hologres现在主键重复写入 无法保证保留最后吗?


Hologres现在主键重复写入 无法保证保留最后吗?When there are multiple inserting data records for a primary key, 'keep_last' or 'keep_first' cannot be strictly guaranteed. (The currently guaranteed semantics is 'keep_any').

hg_experimental_affect_row_multiple_times_keep_last 这个参数已经配置了


参考回答:

是的,根据您提供的信息,Hologres确实存在无法严格保证主键重复写入时保留最后一条记录的情况。这是因为在Hologres中,当遇到主键冲突时,默认的行为是放弃所有冲突的插入操作,并返回错误信息。如果此时有多个插入操作都涉及到了相同的主键,则只能保留其中之一,而不能确定保留哪一条记录。

为了解决这个问题,Hologres提供了实验性的参数 hg_experimental_affect_row_multiple_times_keep_last 来控制这种行为。如果设置了这个参数,则当发生主键冲突时,Hologres将尽力保留最后一次插入的操作结果,而不是随意放弃任何一次插入操作的结果。不过需要注意的是,这个参数是一个实验性特性,可能存在一些不稳定或未知的问题,所以在使用时还需要谨慎对待。

在实际的使用场景中,为了避免主键重复写入的问题,建议您尽可能减少一次事务中涉及主键冲突的插入操作的数量。如果无法避免这种情况,可以考虑使用其他的数据库操作或查询方式,如分页查询、批量插入等,以减少主键冲突的风险。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/568923


问题三:请问一下,往hologres里面upsert数据。hologres支持一批事物的数据写入嘛?


请问一下,往hologres里面upsert数据。上游业务库的变更是多条数据变更在一个事物里面。hologres支持一批事物的数据写入嘛?


参考回答:

Hologres支持UPSERT操作,即在插入数据时如果主键存在重复的行数据,则对该数据执行更新或跳过操作。具体的语法格式是:INSERT INTO [ AS ] [ ( [, ...] ) ] VALUES ... ON CONFLICT DO UPDATE SET [, ...] [WHERE ];。

Hologres目前仅支持DDL的显式事务,并不支持单纯的DML事务,也不支持DDL和DML混合的事务。这意味着,尽管语法上可以通过多个DML语句组成的事务,但实际并不支持原子提交和回滚。因此,如果您的业务库在一个事物中有多个数据变更,那么这些变更不能保证全部成功或者全部失败,可能存在部分成功部分失败的情况。

本文为您介绍在Hologres中INSERT ON CONFLICT语句的用法。https://help.aliyun.com/zh/hologres/user-guide/insert-on-conflict?spm=a2c4g.11186623.0.i61


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/568922


问题四:请问:我在dataworks上 创建了10个hologres作业,那么这10个任务的资源怎么划分呢?


请问:我在dataworks上 创建了10个hologres作业,让他们同时调度。这10个任务在同一个计算组里面,那么这10个任务的资源怎么划分呢?


参考回答:

在DataWorks中,当您创建多个Hologres作业并让它们同时调度时,这些作业会在同一个计算组中运行。DataWorks会根据您为计算组分配的资源来划分这10个任务的资源。

您可以在DataWorks的计算资源管理页面为计算组分配CPU和内存资源。DataWorks会根据您分配的资源以及当前系统中可用的资源来动态调整每个任务的资源分配。

您可以通过MaxCompute资源面板,查看在MaxCompute计算引擎中存在的资源、资源的变更历史,并可以一键添加资源文件至数据开发面板的业务流程中。https://help.aliyun.com/zh/dataworks/user-guide/manage-maxcompute-resources?spm=a2c4g.11186623.0.i53


chttps://developer.aliyun.com/ask/568921


问题五:Hologres我想要查看某个实例下所有表的ddl,有相应的语法吗?


Hologres我想要查看某个实例下所有表的ddl,有相应的语法吗?


参考回答:

是的,Hologres支持查看某个实例下所有表的DDL语法。您可以使用以下SQL语句:

SELECT table_name, create_time, update_time, ddl
FROM information_schema.tables
WHERE table_schema = 'your_database_name';

请将your_database_name替换为您要查看的数据库名称。

SELECT的常用方法如下:https://help.aliyun.com/zh/hologres/user-guide/select?spm=a2c4g.11186623.0.i39

FROM列表中的所有元素都会被计算( FROM中的每一个元素都是一个真实表或者虚拟表)。如果在FROM列表中指定了多于一个元素,得到的结果做并集。

如果指定了WHERE子句,所有不满足该条件的行都会被从输出中消除。

如果指定了GROUP BY子句或者如果有聚集函数,输出会被组合成由在一个或者多个值上匹配的行构成的分组,并且在其上计算聚集函数的结果。如果出现了HAVING子句,它会消除不满足给定条件的分组。

对于每一个被选中的行或者行组,会使用SELECT输出表达式计算实际的输出行。

通过使用操作符UNION、INTERSECT和EXCEPT,多于一个SELECT语句的输出可以被整合形成一个结果集。UNION操作符返回位于一个或者两个结果集中的全部行。INTERSECT操作符返回同时位于两个结果集中的所有行。EXCEPT操作符返回位于第一个结果集但不在第二个结果集中的行。在所有三种情况下,重复行都会被消除(除非指定ALL)。可以增加DISTINCT来显式的消除重复行。注意虽然ALL是SELECT自身的默认行为,但这里DISTINCT是默认行为。

如果指定了ORDER BY子句,被返回的行会以指定的顺序排序。如果没有给定ORDER BY,系统会以能最快产生行的顺序返回它们。

如果指定了LIMIT(或FETCH FIRST) 或者OFFSET子句,SELECT语句只返回结果行的一个子集。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/568920

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
相关文章
|
3月前
|
存储 运维 搜索推荐
实时数仓Hologres发展问题之Hologres在无人车送货场景中的应用如何解决
实时数仓Hologres发展问题之Hologres在无人车送货场景中的应用如何解决
44 2
|
3月前
|
SQL NoSQL 关系型数据库
实时数仓Hologres发展问题之实时数仓的类数据库化与HTAP数据库的差异如何解决
实时数仓Hologres发展问题之实时数仓的类数据库化与HTAP数据库的差异如何解决
54 2
|
3月前
|
数据采集 运维 双11
实时数仓Hologres发展问题之Hologres提升实时数仓的生产级高可用性如何解决
实时数仓Hologres发展问题之Hologres提升实时数仓的生产级高可用性如何解决
67 2
|
3月前
|
存储 边缘计算 运维
实时数仓Hologres发展问题之实时数仓对Lambda架构的问题如何解决
实时数仓Hologres发展问题之实时数仓对Lambda架构的问题如何解决
63 2
|
1月前
|
SQL 分布式计算 数据挖掘
加速数据分析:阿里云Hologres在实时数仓中的应用实践
【10月更文挑战第9天】随着大数据技术的发展,企业对于数据处理和分析的需求日益增长。特别是在面对海量数据时,如何快速、准确地进行数据查询和分析成为了关键问题。阿里云Hologres作为一个高性能的实时交互式分析服务,为解决这些问题提供了强大的支持。本文将深入探讨Hologres的特点及其在实时数仓中的应用,并通过具体的代码示例来展示其实际应用。
154 0
|
3月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之使用CTAS同步MySQL到Hologres时出现的时区差异,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
存储 分布式计算 数据挖掘
实时数仓 Hologres 问题之适用于业务场景的实时数仓如何搭建
实时数仓 Hologres 问题之适用于业务场景的实时数仓如何搭建
|
3月前
|
Java 数据库连接 数据库
实时数仓 Hologres产品使用合集之怎么查询版本
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
3月前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之hologres是否支持MERGE INTO语句
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
SQL 分布式计算 关系型数据库
实时数仓 Hologres操作报错合集之指定主键更新模式报错主键数据重复,该如何处理
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。

热门文章

最新文章

相关产品

  • 实时数仓 Hologres