一种解决clickhouse删除和更新性能低下的同步方法技术

技术编号:27656131 阅读:11 留言:0更新日期:2021-03-12 14:18
本发明专利技术公开了一种解决clickhouse删除和更新性能低下的同步方法,涉及大数据分析技术领域;该方法包括以下的步骤:S1、将所需表的全量数据从源端数据库同步至目标数据库;S2、监听源端数据库中所需表的binlog,将二进制日志信息发送到kafka;S3、存入已发送到kafka的binlog的位置到mongodb数据库;S4、消费处理binlog中的增删改信息;S5、设置当消费的binlog信息达到设定条数或者消费时间达到设定时间时,触发数据批量插入至目标数据库中的动作;本发明专利技术的有益效果是:可以实时准确返回增删改后的数据,解决clickhouse在小批量增、删、改操作所导致的性能问题。

【技术实现步骤摘要】
一种解决clickhouse删除和更新性能低下的同步方法
本专利技术涉及大数据分析
,更具体的说,本专利技术涉及一种解决clickhouse删除和更新性能低下的同步方法。
技术介绍
随着物联网IOT时代的来临,IOT设备感知和报警存储的数据越来越大,有用的价值数据需要数据分析师去分析。大数据分析成了非常重要的环节。当然近两年开启的开源大潮,为大数据分析工程师提供了十分富余的工具。但这同时也增加了开发者选择合适的工具的难度,尤其对于新入行的开发者来说。学习成本,框架的多样化和复杂度成了很大的难题。例如kafka,hdfs,spark,hive等等组合才能产生最后的分析结果。把各种开源框架、工具、库、平台人工整合到一起所需工作之复杂,是大数据领域开发和数据分析师常有的抱怨之一,也是他们支持大数据分析平台简单化和统一化的首要原因。ClickHouse是Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快100-1000倍。ClickHouse的性能超过了目前市场上可比的面向列的DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。ClickHouse对于低频率高吞吐量的查询写入速度非常快。特别适合使用在大量数据分析的场景。ClickHouse表中的数据存在以下问题:1、不支持真正的删除/更新,MergeTree系列的表引擎虽然支持数据更新,但也只能保证最终一致性,在此之前会查询到多余数据。2、逐行insert或小批量的增、删、改操作时,底层会不断的做异步的数据合并影响提供服务的性能。
技术实现思路
为了克服现有技术的不足,本专利技术提供一种解决clickhouse删除和更新性能低下的同步方法,可以实时准确返回增删改后的数据,解决clickhouse在小批量增、删、改操作所导致的性能问题。本专利技术解决其技术问题所采用的技术方案是:一种解决clickhouse删除和更新性能低下的同步方法,其特征在于,该方法包括以下的步骤:S1、将所需表的全量数据从源端数据库同步至目标数据库,并在同步过程中初始化数据;S2、监听源端数据库中所需表的binlog,将二进制日志信息发送到kafka;S3、存入已发送到kafka的binlog的位置到mongodb数据库;S4、消费处理binlog中的增删改信息;S5、设置当消费的binlog信息达到设定条数或者消费时间达到设定时间时,触发数据批量插入至目标数据库中的动作。进一步的,步骤S1中,所需表的全量数据同步至目标数据库的过程为全量初始化数据。进一步的,步骤S1中,源端数据库包括但不限于oracle数据库、mysql数据库、postgresql数据库以及mongodb数据库。进一步的,步骤S1中,所述的目标数据库即为ClickHouse。进一步的,步骤S1中,通过Datax工具或waterdrop工具实现全量数据的导入。进一步的,步骤S4中,对于binlog中记录为更新的数据,将其改为insert的数据插入目标数据库对应的表中,并将操作标识字段op_type标记为更新而来的数据。步骤S4中,对于删除数据,将表中删除标志置为1,并将操作标识字段op_type标记为删除数据,并以insert的形式插入目标数据库对应的表中。进一步的,步骤S5中,设置消费的binlog信息的条数为5万条。进一步的,步骤S5中,消费时间的设置值为1分钟。进一步的,步骤S5中,将数据批量插入至目标数据库中的动作即为增量同步。本专利技术的有益效果是:对于亿级别数据的聚合查询可以做到秒级甚至毫秒级返回;并且,可以准实时准确返回增删改后的数据,解决ClickHouse在小批量增、删、改操作所导致的性能问题;另外,有比较好的容灾健壮性,可以处理同步进程崩溃或重启时导致的数据质量问题。通过引入kafka消息队列,对瞬时大事务同步时进行一个消峰,解决了大批量数据同步时的瞬时压力问题。附图说明图1为本专利技术的一种解决clickhouse删除和更新性能低下的同步方法的流程示意图。图2为本专利技术的一种解决clickhouse删除和更新性能低下的同步方法的具体实施例图。具体实施方式下面结合附图和实施例对本专利技术进一步说明。以下将结合实施例和附图对本专利技术的构思、具体结构及产生的技术效果进行清楚、完整地描述,以充分地理解本专利技术的目的、特征和效果。显然,所描述的实施例只是本专利技术的一部分实施例,而不是全部实施例,基于本专利技术的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本专利技术保护的范围。另外,专利中涉及到的所有联接/连接关系,并非单指构件直接相接,而是指可根据具体实施情况,通过添加或减少联接辅件,来组成更优的联接结构。本专利技术创造中的各个技术特征,在不互相矛盾冲突的前提下可以交互组合。实施例1参照图1、图2所示,本专利技术揭示了一种解决clickhouse删除和更新性能低下的同步方法,该方法包括以下的步骤:S1、将所需表的全量数据从源端数据库同步至目标数据库;所需表的全量数据同步至目标数据库的过程为全量初始化数据;本实施例中,通过Datax工具或waterdrop工具实现全量数据的导入;如图2所示,源端数据库包括但不限于oracle数据库、mysql数据库、postgresql数据库以及mongodb数据库;并且,所述的目标数据库即为ClickHouse。通过将数据同步到ClickHouse,主要用来做分析统计。S2、监听源端数据库中所需表的binlog,将二进制日志信息发送到kafka;该步骤中,将消息发送到kafka是为了增加程序的健壮性、可靠性、可扩展性等。以及当数据库有大事务时还可以进行消峰,降低单台服务器的压力,根据业务情况通过分布式消费还可以增消费性能;S3、存入已发送到kafka的binlog的位置到mongodb数据库;考虑到有序的将binlog日志信息发送到kafka,并保证在同步增量数据的过程中程序出现异常也不会导致数据质量问题;由于数据库中的binlog是不断变化的,当程序进程出现异常重启时,可以查询意外中断时所保存的binlog位置,从此处继续监听binlog发送到kafka。不然如果一直监听最新的binlog会导致丢数据,如果从头开始监听会出现重复数据。S4、消费处理binlog中的增删改信息;对于binlog中记录为更新的数据,将其改为insert的数据插入目标数据库对应的表中,并将操作标识字段op_type标记为更新而来的数据。对于删除数据,将表中删除标志置为1,并将操作标识字段op_type标记为删除数据,并以insert的形式插入目标数据库对应的表中。通过同一个消费组可以多个应用同时并发消费处理kafka上同一个binlog主题的消息,通过分布式消费本文档来自技高网
...

【技术保护点】
1.一种解决clickhouse删除和更新性能低下的同步方法,其特征在于,该方法包括以下的步骤:/nS1、将所需表的全量数据从源端数据库同步至目标数据库;/nS2、监听源端数据库中所需表的binlog,将二进制日志信息发送到kafka;/nS3、存入已发送到kafka的binlog的位置到mongodb数据库;/nS4、消费处理binlog中的增删改信息;/nS5、设置当消费的binlog信息达到设定条数或者消费时间达到设定时间时,触发数据批量插入至目标数据库中的动作。/n

【技术特征摘要】
1.一种解决clickhouse删除和更新性能低下的同步方法,其特征在于,该方法包括以下的步骤:
S1、将所需表的全量数据从源端数据库同步至目标数据库;
S2、监听源端数据库中所需表的binlog,将二进制日志信息发送到kafka;
S3、存入已发送到kafka的binlog的位置到mongodb数据库;
S4、消费处理binlog中的增删改信息;
S5、设置当消费的binlog信息达到设定条数或者消费时间达到设定时间时,触发数据批量插入至目标数据库中的动作。


2.根据权利要求1所述的一种解决clickhouse删除和更新性能低下的同步方法,其特征在于,步骤S1中,所需表的全量数据同步至目标数据库的过程为全量初始化数据。


3.根据权利要求1所述的一种解决clickhouse删除和更新性能低下的同步方法,其特征在于,步骤S1中,源端数据库包括但不限于oracle数据库、mysql数据库、postgresql数据库以及mongodb数据库。


4.根据权利要求1所述的一种解决clickhouse删除和更新性能低下的同步方法,其特征在于,步骤S1中,所述的目标数据库即为ClickHouse。


5.根据权利要求2所述的一种解决clickh...

【专利技术属性】
技术研发人员:刘跃红余丽玲
申请(专利权)人:银盛支付服务股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1