CN114003660B - 基于flink的高效同步实时数据到ClickHouse的方法及装置 - Google Patents

基于flink的高效同步实时数据到ClickHouse的方法及装置 Download PDF

Info

Publication number
CN114003660B
CN114003660B CN202111309015.2A CN202111309015A CN114003660B CN 114003660 B CN114003660 B CN 114003660B CN 202111309015 A CN202111309015 A CN 202111309015A CN 114003660 B CN114003660 B CN 114003660B
Authority
CN
China
Prior art keywords
data
setting
deleting
operation type
statement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111309015.2A
Other languages
English (en)
Other versions
CN114003660A (zh
Inventor
肖明睿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Chenqi Travel Technology Co Ltd
Original Assignee
Guangzhou Chenqi Travel Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Chenqi Travel Technology Co Ltd filed Critical Guangzhou Chenqi Travel Technology Co Ltd
Priority to CN202111309015.2A priority Critical patent/CN114003660B/zh
Publication of CN114003660A publication Critical patent/CN114003660A/zh
Application granted granted Critical
Publication of CN114003660B publication Critical patent/CN114003660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于flink的高效同步实时数据到ClickHouse的方法及装置,本申请的查询ClickHouse集群中所有分片的链接列表,基于预设分片规则,从链接列表中查找对应分片的机器,将变化数据写入对应分片的机器的本地表中。现有的flink不支持按照分片规则写入本地表的方式,数据写入到分布式表再同步到本地表存在很大的性能问题。本发明提供了直接将数据写入本地表的技术手段,而避免通过分布式表再写入本地表中,写入速度极大提升,且不存在数据一致性的问题。

Description

基于flink的高效同步实时数据到ClickHouse的方法及装置
技术领域
本发明属于数据库技术领域,具体涉及一种基于flink的高效同步实时数据到ClickHouse的方法及装置。
背景技术
ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。使用ClickHouse实时数据分析的首要条件是实现将数据从业务数据库实时同步到ClickHouse中,业务数据库例如可为MySQL数据库、阿里云的RDS这种类MySQL数据库等。数据实时同步是将数据从源数据库迁移至目的数据库,实时数据实时同步则是保证源数据库和目的数据库在全量数据的基础上实时保持一致的过程。
然而,ClickHouse像ElasticSearch一样具有数据分片(shard)的概念,这也是分布式存储的特点之一,即通过并行读写提高效率。ClickHouse依靠Distributed引擎实现了Distributed(分布式)表机制,在所有分片(本地表)上建立视图进行分布式查询。
Distributed表引擎自身不会存储任何数据,在集群内部自动开展数据的写入、分发、查询、路由等工作;通过读取或写入其他远端节点上的表进行数据处理的表引擎。为此,ClickHouse需要先将数据写入到分布式表再同步到本地表,存在很大的性能问题。
发明内容
本发明的目的是要解决上述的技术问题,提供一种基于flink的高效同步实时数据到ClickHouse的方法及装置。
为了解决上述问题,本发明按以下技术方案予以实现的:
第一方面,本发明提供了一种基于flink的高效同步实时数据到ClickHouse的方法,应用于flink分布式框架,所述方法包括如下步骤:
获取源数据库的变化数据,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存;
当检测到源数据库同步数据操作被触发时,将变化数据加载至ClickHouse中,具体包括:
检测用户配置为写入本地表时,查询ClickHouse集群中所有分片的链接列表;
基于预设分片规则,从链接列表中查找对应分片的机器;
将变化数据写入对应分片的机器的本地表中。
结合第一方面,本发明还提供了第一方面的第1种优选实施方式,基于预设分片规则,从链接列表中查找对应分片的机器,具体包括:
获取链接列表中的分片连接,基于轮训、随机或哈希的查询方式在分片连接中确定对应分片的机器;
所述查询方式根据变化数据的主键,基于一致性哈希算法确定对应分片的机器。
结合第一方面,本发明还提供了第一方面的第2种优选实施方式,所述用户配置可指定目标分片和目标本地表,将变化数据根据预设分片规则直接写入到用户配置的目标本地表。
结合第一方面,本发明还提供了第一方面的第3种优选实施方式,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存,具体包括:
预设所述数据插入操作方式包括生成插入语句、设置标记位的值和设置版本号;
解析变化数据的操作类型,根据操作类型生成插入语句,插入语句包括删除标记位;
根据操作类型,设置插入语句中的删除标记位的值,生成操作语句;
设置操作语句的版本号。
结合第一方面,本发明还提供了第一方面的第4种优选实施方式,所述生成插入语句包括:
若操作类型为数据插入操作,设置删除标记位为新增标识,生成一条插入语句;
若操作类型为数据删除操作,设置删除标记位为删除标识,生成一条插入语句;
若操作类型为数据更新操作,则将更新前和更新后的数据,分别生成两条新增语句,设置更新前的数据的删除标记位为删除标识,设置更新后的数据的删除标记位为新增标识。
结合第一方面,本发明还提供了第一方面的第5种优选实施方式,所述设置标记位的值包括:
若操作类型为数据插入操作,将删除标记位设置为,用户配置中新增标识对应的删除标记位的值,若用户配置没有设定,则默认为1;
若操作类型为数据删除操作,将删除标记位设置为,用户配置中删除标识对应的删除标记位的值,若用户配置没有设定,则默认为-1;
若操作类型为数据更新操作,分别将更新前和更新后的数据的删除标记位,设置为用户配置中的新增标识和删除标识对应的值,若用户配置没有设定,则设置默认值。
结合第一方面,本发明还提供了第一方面的第7种优选实施方式,所述设置版本号包括:
判断变化数据的版本号字段是否存在于源数据库的表中;
若是,则将源表数据的值设置为版本号;
若否,则将源表数据的哈希值设置为版本号。
结合第一方面,本发明还提供了第一方面的第8种优选实施方式,
所述源数据库同步数据操作包括自动触发条件,在检测到源数据库满足数据导入的自动触发条件时,从Flink分布式框架中将变化数据写入至ClickHouse中;
所述触发条件包括当检测到变化数据的操作记录数达到预设次数阈值或检测到当前时刻满足预设周期,将变化数据加载至ClickHouse中。
第二方面,本发明还提供了一种基于flink的高效同步实时数据到ClickHouse的装置,应用于flink分布式框架,所述装置包括:
获取模块,其用于获取源数据库的变化数据;
转换模块,其用于根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存;
配置模块,其用于设置用户配置;
本地表写入模块,其用于当检测到源数据库同步数据操作被触发时,将变化数据加载至ClickHouse中,具体包括:
检测用户配置为写入本地表时,查询ClickHouse集群中所有分片的链接列表;
基于预设分片规则,从链接列表中查找对应分片的机器;
将变化数据写入对应分片的机器的本地表中。
结合第二方面,本发明还提供了第二方面的第1种优选实施方式,所述转换模块基于预设分片规则,从链接列表中查找对应分片的机器,具体执行如下操作:
获取链接列表中的分片连接,基于轮训、随机或哈希的查询方式在分片连接中确定对应分片的机器;
所述查询方式根据变化数据的主键,基于一致性哈希算法确定对应分片的机器。
结合第二方面,本发明还提供了第二方面的第2种优选实施方式,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存,具体包括:
预设所述数据插入操作方式包括生成插入语句、设置标记位的值和设置版本号;
解析变化数据的操作类型,根据操作类型生成插入语句,插入语句包括删除标记位;
根据操作类型,设置插入语句中的删除标记位的值,生成操作语句;
设置操作语句的版本号;
其中,所述生成插入语句包括:
若操作类型为数据插入操作,设置删除标记位为新增标识,生成一条插入语句;
若操作类型为数据删除操作,设置删除标记位为删除标识,生成一条插入语句;
若操作类型为数据更新操作,则将更新前和更新后的数据,分别生成两条新增语句,设置更新前的数据的删除标记位为删除标识,设置更新后的数据的删除标记位为新增标识;
其中,所述设置标记位的值包括:
若操作类型为数据插入操作,将删除标记位设置为,用户配置中新增标识对应的删除标记位的值,若用户配置没有设定,则默认为1;
若操作类型为数据删除操作,将删除标记位设置为,用户配置中删除标识对应的删除标记位的值,若用户配置没有设定,则默认为-1;
若操作类型为数据更新操作,分别将更新前和更新后的数据的删除标记位,设置为用户配置中的新增标识和删除标识对应的值,若用户配置没有设定,则设置默认值;
其中,所述设置版本号包括:
判断变化数据的版本号字段是否存在于源数据库的表中;
若是,则将源表数据的值设置为版本号;
若否,则将源表数据的哈希值设置为版本号。
与现有技术相比,本发明的有益效果是:
本申请的查询ClickHouse集群中所有分片的链接列表,基于预设分片规则,从链接列表中查找对应分片的机器,将变化数据写入对应分片的机器的本地表中。现有的flink不支持按照分片规则写入本地表的方式,数据写入到分布式表再同步到本地表存在很大的性能问题。本发明提供了直接将数据写入本地表的技术手段,而避免通过分布式表再写入本地表中,写入速度极大提升,且不存在数据一致性的问题。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明,其中:
图1是本发明的基于flink的高效同步实时数据到ClickHouse的方法的流程示意图;
图2是本发明的基于flink的高效同步实时数据到ClickHouse的方法的流程示意总图;
图3是本发明的基于flink的高效同步实时数据到ClickHouse的装置的组成图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。目前国内社区火热,纷纷跟进大规模使用:
如今日头条的内部用ClickHouse来做用户行为分析,内部一共几千个ClickHouse节点,单集群最大1200节点,总数据量几十PB,日增原始数据300TB左右。腾讯内部用ClickHouse做游戏数据分析,并且为之建立了一整套监控运维体系。携程内部从18年7月份开始接入试用,目前80%的业务都跑在ClickHouse上,每天数据增量十多亿,近百万次查询请求。快手内部也在使用ClickHouse,存储总量大约10PB,每天新增200TB,90%查询小于3S。
OLAP类业务对于事务需求较少,通常是导入历史日志数据,或搭配一款事务型数据库并实时从事务型数据库中进行数据同步。
经申请人研究发现,ClickHouse依靠Distributed引擎实现了Distributed(分布式)表机制,在所有分片(本地表)上建立视图进行分布式查询。Distributed表引擎自身不会存储任何数据,在集群内部自动开展数据的写入、分发、查询、路由等工作;通过读取或写入其他远端节点上的表进行数据处理的表引擎。为此,ClickHouse需要先将数据写入到分布式表再同步到本地表,存在很大的性能问题,主要包括:
(1)性能问题:分布式表引擎需要依赖各个节点的本地表来创建,数据写入分布式表的时候,会创建一个临时表存储数据,然后将数据发送到本地表,如果数据量很大的情况下,会受制于转发的机器的性能,存在单点问题,并且数据经过中间层转发,速度受限于机器网络的速度,多一层转发,速度就会受阻。分布式表接收到数据后会将数据拆分成多个parts,并转发数据到其它服务器,会引起服务器间网络流量增加、服务器merge的工作量增加,导致写入速度变慢,并且增加了其他问题的可能性。
当业务数据量日增极大时,分布式表在写入时会在本地节点生成临时数据,会产生写放大,对CPU及内存造成一些额外消耗;分布式表写的临时block会把原始block根据sharding_key和weight进行再次拆分,会产生更多的block分发到远端节点,也增加了merge的负担。
(2)数据一致性问题:数据先在分布式表所在的机器进行落盘,然后异步的发送到本地表所在机器进行存储,中间没有一致性的校验,而且在分布式表所在机器时如果机器出现问题,会存在数据丢失风险。同时,数据写入默认是异步的,短时间内可能造成不一致的问题。
为此,本发明提供了一种基于flink的高效同步实时数据到ClickHouse的方法,应用于flink分布式框架,所述方法包括如下步骤:获取源数据库的变化数据,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存;当检测到源数据库同步数据操作被触发时,将变化数据加载至ClickHouse中,具体包括:检测用户配置为写入本地表时,查询ClickHouse集群中所有分片的链接列表;基于预设分片规则,从链接列表中查找对应分片的机器;将变化数据写入对应分片的机器的本地表中。本发明提供了一种创新的直接将数据写入本地表的技术手段,而避免通过分布式表再写入本地表中,写入速度极大提升,且不存在数据一致性的问题。
如图2所述,本发明所述基于flink的高效同步实时数据到ClickHouse的方法的总流程示意图。
如图1所述,本发明所述基于flink的高效同步实时数据到ClickHouse的方法的流程示意图。本方法应用于flink分布式框架,所述方法包括如下步骤:
S100:获取源数据库的变化数据。
在本发明中,变化数据的捕获可简称CDC,CDC大体分为两种:侵入式和非侵入式。常用的4种CDC方法是:基于时间戳的CDC、基于触发器的CDC、基于快照的CDC和基于日志的CDC,其中前三种是侵入式的。
S200:根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存,
经申请人研究发现,ClickHouse实时数据分析的首要条件是实现将数据从业务数据库实时同步到ClickHouse中,业务数据库例如可为MySQL数据库、阿里云的RDS这种类MySQL数据库等。
而现有flinkcdc的支持sql方式的同步方式,无法支持源表且没有相应的版本号和删除标记字段;在此情况下插入数据库的时候,无法生成自动有效的版本号值和删除标记字段值。同时,不支持将源数据表的增删改,统一转换为带有版本号和标记字段的插入的方式,在ClickHouse上面做更新和删除操作存在很大性能。
在本发明一种优选实例中,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存,具体包括:预设所述数据插入操作方式包括生成插入语句、设置标记位的值和设置版本号。
在一种实例中,源数据库是待处理数据的存储位置,ClickHouse作为目的数据库作为待处理数据即将要迁移的位置,通过Flink分布式框架读取中变化数据,然后调用Flink分布式框架中的解析器如binlogmt Reader来解析数据,并通过Flink分布式框架中的数据处理器如ClickHouse Writer将解析的数据进行转换后写入ClickHouse中。若源数据库为MySQL,则对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中。
S210:解析变化数据的操作类型,根据操作类型生成插入语句,插入语句包括删除标记位;
S220:根据操作类型,设置插入语句中的删除标记位的值,生成操作语句;
S230:设置操作语句的版本号。
为此,本发明通过步骤S210-S240解决上述技术问题。使用Flink分布式框架将源数据库的插入、更新、删除的数据均可进行转换和传输,实现了源端到目的端ClickHouse的端到端的高性能数据实时同步,保证端到端的数据一致性,解决相关技术长时间处理极易出现数据同步不一致的现象,有效提升数据同步的实时性能,满足高性能的实时同步需求;此外,更新操作拆分为两条插入操作,更新前的记录带有删除标记位,更新后的记录带有新增标记位,支持版本号标识当前数据的版本。
ClickHouse由于是列式存储的数据库,ClickHouse的数据同步包括实时同步都仅支持插入数据,而不支持数据的修改和删除。而源数据库如随机读写的行式数据库MySQL数据库,不可避免地有大量的更新和删除数据的操作,针对这一点,本实施例可利用ClickHouse的Replacing Merge Tree引擎,实现了实时同步MySQL的数据插入、更新和删除操作,保证端到端的数据一致性,而不是仅支持数据的插入。
S300:当检测到源数据库同步数据操作被触发时,将变化数据加载至ClickHouse中,具体包括:
S310:检测用户配置为写入本地表时,查询ClickHouse集群中所有分片的链接列表。
在分布式模式下,ClickHouse会将数据分为多个分片,并且分布到不同节点上。数据分片,让ClickHouse可以充分利用整个集群的大规模并行计算能力,快速返回查询结果。当用户配置为吸入本地表时,先查找出集群中所有的分片的机器的链接,用户配置的要写入的clickhouse的表写为本地表的表名。
支持同步的时候指定分片选择方式,可以将数据按照分片规则直接写入到用户配置的本地表,并且只需要配置clickhouse集群中任意一个节点接入的链接即可。
S320:基于预设分片规则,从链接列表中查找对应分片的机器。
本发明通过指定的分片算法,来定位到集群中的具体分片的机器。在一种实施中,基于预设分片规则,从链接列表中查找对应分片的机器,具体包括:
获取链接列表中的分片连接,基于轮训、随机或哈希的查询方式在分片连接中确定对应分片的机器。所述查询方式根据变化数据的主键,基于一致性哈希算法确定对应分片的机器。
在一种优选实施中,所述用户配置可指定目标分片和目标本地表,将变化数据根据预设分片规则直接写入到用户配置的目标本地表。
S330:将变化数据写入对应分片的机器的本地表中。完成将数据写入到对应分片的机器的连接。
在数据同步过程中,为了实现将所有类型的增量数据均实时更新,ClickHouse中实时同步的本地表可使用VersionedCollapsingMergeTree或ReplicatedVersionedCollapsingMergeTree的数据引擎,进行更高效的处理,并且可以处理数据乱序到达的问题,而现有技术无法解决数据乱序到达的问题。
为了减少数据频繁写入造成资源占用太大带来的不利影响,同时还需要保证数据实时保持一致,满足实时大数据量同步的需求,避免长时间处理带来的数据不一致。可预先设置源数据库同步数据操作的自动触发条件,在检测到源数据库的满足数据导入的自动触发条件时,从Flink分布式框架中将变化数据写入至ClickHouse中。
在一种实例中,触发条件例如可为:读取批量设置的时间和记录数,如果只存在一个,则按照当前的配置进行批量写入操作,如果两个都存在则按照最先命中的批量条件进行批量写入操作。
具体的,当检测到源数据库中变化数据的操作记录数达到预设次数阈值或检测到当前时刻到达Checkpoint周期,将数据加载至ClickHouse中。此外,Flink分布式框架还可以根据实际需要调整并发度,进一步满足高性能的实时同步需求。
在一种优选实施中,步骤S210:解析变化数据的操作类型,根据操作类型生成插入语句,插入语句包括删除标记位中,所述生成插入语句具体包括:
若操作类型为数据插入操作,设置删除标记位为新增标识,生成一条插入语句;
若操作类型为数据删除操作,设置删除标记位为删除标识,生成一条插入语句;
若操作类型为数据更新操作,则将更新前和更新后的数据,分别生成两条新增语句,设置更新前的数据的删除标记位为删除标识,设置更新后的数据的删除标记位为新增标识。
在一种优选实施中,步骤S220:根据操作类型,设置插入语句中的删除标记位的值,所述生成操作语句具体包括:
若操作类型为数据插入操作,将删除标记位设置为,用户配置中新增标识对应的删除标记位的值,若用户配置没有设定,则默认为1;
若操作类型为数据删除操作,将删除标记位设置为,用户配置中删除标识对应的删除标记位的值,若用户配置没有设定,则默认为-1;
若操作类型为数据更新操作,分别将更新前和更新后的数据的删除标记位,设置为用户配置中的新增标识和删除标识对应的值,若用户配置没有设定,则设置默认值。
在一种优选实施中,S230:设置操作语句的版本号中,所述设置版本号包括:
判断变化数据的版本号字段是否存在于源数据库的表中;
若是,则将源表数据的值设置为版本号;
若否,则将源表数据的哈希值设置为版本号。
如图3所示,本发明还提供了基于flink的高效同步实时数据到clickhouse的装置,应用于flink分布式框架,本装置用于实现上述方法的步骤。具体的,所述装置包括:
获取模块,其用于获取源数据库的变化数据;
转换模块,其用于根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存;
配置模块,其用于设置用户配置;
本地表写入模块,其用于当检测到源数据库同步数据操作被触发时,将变化数据加载至clickhouse中,具体包括:
检测用户配置为写入本地表时,查询clickhouse集群中所有分片的链接列表;
基于预设分片规则,从链接列表中查找对应分片的机器;
将变化数据写入对应分片的机器的本地表中。
在一种优先实施中,所述转换模块基于预设分片规则,从链接列表中查找对应分片的机器,具体执行如下操作:
获取链接列表中的分片连接,基于轮训、随机或哈希的查询方式在分片连接中确定对应分片的机器;
所述查询方式根据变化数据的主键,基于一致性哈希算法确定对应分片的机器。
在一种优先实施中,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存,具体包括:
预设所述数据插入操作方式包括生成插入语句、设置标记位的值和设置版本号;
解析变化数据的操作类型,根据操作类型生成插入语句,插入语句包括删除标记位;
根据操作类型,设置插入语句中的删除标记位的值,生成操作语句;
设置操作语句的版本号;
其中,所述生成插入语句包括:
若操作类型为数据插入操作,设置删除标记位为新增标识,生成一条插入语句;
若操作类型为数据删除操作,设置删除标记位为删除标识,生成一条插入语句;
若操作类型为数据更新操作,则将更新前和更新后的数据,分别生成两条新增语句,设置更新前的数据的删除标记位为删除标识,设置更新后的数据的删除标记位为新增标识;
其中,所述设置标记位的值包括:
若操作类型为数据插入操作,将删除标记位设置为,用户配置中新增标识对应的删除标记位的值,若用户配置没有设定,则默认为1;
若操作类型为数据删除操作,将删除标记位设置为,用户配置中删除标识对应的删除标记位的值,若用户配置没有设定,则默认为-1;
若操作类型为数据更新操作,分别将更新前和更新后的数据的删除标记位,设置为用户配置中的新增标识和删除标识对应的值,若用户配置没有设定,则设置默认值;
其中,所述设置版本号包括:
判断变化数据的版本号字段是否存在于源数据库的表中;
若是,则将源表数据的值设置为版本号;
若否,则将源表数据的哈希值设置为版本号。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,故凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (7)

1.基于flink的高效同步实时数据到ClickHouse的方法,其特征在于,应用于flink分布式框架,所述方法包括如下步骤:
获取源数据库的变化数据,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存;
当检测到源数据库同步数据操作被触发时,将变化数据加载至ClickHouse中,具体包括:
检测用户配置为写入本地表时,查询ClickHouse集群中所有分片的链接列表;
基于预设分片规则,从链接列表中查找对应分片的机器;
将变化数据写入对应分片的机器的本地表中;
其中,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存,具体包括:
预设所述数据插入操作方式包括生成插入语句、设置标记位的值和设置版本号;所述生成插入语句包括:
若操作类型为数据插入操作,设置删除标记位为新增标识,生成一条插入语句;
若操作类型为数据删除操作,设置删除标记位为删除标识,生成一条插入语句;
若操作类型为数据更新操作,则将更新前和更新后的数据,分别生成两条新增语句,设置更新前的数据的删除标记位为删除标识,设置更新后的数据的删除标记位为新增标识;
解析变化数据的操作类型,根据操作类型生成插入语句,插入语句包括删除标记位;
根据操作类型,设置插入语句中的删除标记位的值,生成操作语句;
设置操作语句的版本号。
2.根据权利要求1所述的基于flink的高效同步实时数据到ClickHouse的方法,其特征在于,基于预设分片规则,从链接列表中查找对应分片的机器,具体包括:
获取链接列表中的分片连接,基于轮训、随机或哈希的查询方式在分片连接中确定对应分片的机器;
所述查询方式根据变化数据的主键,基于一致性哈希算法确定对应分片的机器。
3.根据权利要求1所述的基于flink的高效同步实时数据到ClickHouse的方法,其特征在于:
所述用户配置可指定目标分片和目标本地表,将变化数据根据预设分片规则直接写入到用户配置的目标本地表。
4.根据权利要求1所述的基于flink的高效同步实时数据到ClickHouse的方法,其特征在于,所述设置标记位的值包括:
若操作类型为数据插入操作,将删除标记位设置为,用户配置中新增标识对应的删除标记位的值,若用户配置没有设定,则默认为1;
若操作类型为数据删除操作,将删除标记位设置为,用户配置中删除标识对应的删除标记位的值,若用户配置没有设定,则默认为-1;
若操作类型为数据更新操作,分别将更新前和更新后的数据的删除标记位,设置为用户配置中的新增标识和删除标识对应的值,若用户配置没有设定,则设置默认值。
5.根据权利要求1所述的基于flink的高效同步实时数据到ClickHouse的方法,其特征在于,所述设置版本号包括:
判断变化数据的版本号字段是否存在于源数据库的表中;
若是,则将源表数据的值设置为版本号;
若否,则将源表数据的哈希值设置为版本号。
6.根据权利要求1所述的基于flink的高效同步实时数据到ClickHouse的方法,其特征在于:
所述源数据库同步数据操作包括自动触发条件,在检测到源数据库满足数据导入的自动触发条件时,从Flink分布式框架中将变化数据写入至ClickHouse中;
所述触发条件包括当检测到变化数据的操作记录数达到预设次数阈值和/或检测到当前时刻满足预设周期,将变化数据加载至ClickHouse中。
7.基于flink的高效同步实时数据到ClickHouse的装置,其特征在于,应用于flink分布式框架,所述装置包括:
获取模块,其用于获取源数据库的变化数据;
转换模块,其用于根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存;
配置模块,其用于设置用户配置;
本地表写入模块,其用于当检测到源数据库同步数据操作被触发时,将变化数据加载至ClickHouse中,具体包括:
检测用户配置为写入本地表时,查询ClickHouse集群中所有分片的链接列表;
基于预设分片规则,从链接列表中查找对应分片的机器;
将变化数据写入对应分片的机器的本地表中;
其中,根据变化数据的操作类型,用相匹配的数据插入操作方式将变化数据储存,具体包括:
预设所述数据插入操作方式包括生成插入语句、设置标记位的值和设置版本号;
解析变化数据的操作类型,根据操作类型生成插入语句,插入语句包括删除标记位;
根据操作类型,设置插入语句中的删除标记位的值,生成操作语句;
设置操作语句的版本号;
其中,所述生成插入语句包括:
若操作类型为数据插入操作,设置删除标记位为新增标识,生成一条插入语句;
若操作类型为数据删除操作,设置删除标记位为删除标识,生成一条插入语句;
若操作类型为数据更新操作,则将更新前和更新后的数据,分别生成两条新增语句,设置更新前的数据的删除标记位为删除标识,设置更新后的数据的删除标记位为新增标识;
其中,所述设置标记位的值包括:
若操作类型为数据插入操作,将删除标记位设置为,用户配置中新增标识对应的删除标记位的值,若用户配置没有设定,则默认为1;
若操作类型为数据删除操作,将删除标记位设置为,用户配置中删除标识对应的删除标记位的值,若用户配置没有设定,则默认为-1;
若操作类型为数据更新操作,分别将更新前和更新后的数据的删除标记位,设置为用户配置中的新增标识和删除标识对应的值,若用户配置没有设定,则设置默认值;
其中,所述设置版本号包括:
判断变化数据的版本号字段是否存在于源数据库的表中;
若是,则将源表数据的值设置为版本号;
若否,则将源表数据的哈希值设置为版本号。
CN202111309015.2A 2021-11-05 2021-11-05 基于flink的高效同步实时数据到ClickHouse的方法及装置 Active CN114003660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111309015.2A CN114003660B (zh) 2021-11-05 2021-11-05 基于flink的高效同步实时数据到ClickHouse的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111309015.2A CN114003660B (zh) 2021-11-05 2021-11-05 基于flink的高效同步实时数据到ClickHouse的方法及装置

Publications (2)

Publication Number Publication Date
CN114003660A CN114003660A (zh) 2022-02-01
CN114003660B true CN114003660B (zh) 2022-06-03

Family

ID=79928220

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111309015.2A Active CN114003660B (zh) 2021-11-05 2021-11-05 基于flink的高效同步实时数据到ClickHouse的方法及装置

Country Status (1)

Country Link
CN (1) CN114003660B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934846A (zh) * 2023-02-06 2023-04-07 北京仁科互动网络技术有限公司 列式储存数据库clickhouse的数据同步方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054034A (zh) * 2010-12-27 2011-05-11 华中科技大学 企业信息系统的业务基础数据持久化实现方法
CN103440265A (zh) * 2013-08-01 2013-12-11 暨南大学 基于MapReduce的MYSQL数据库的变化数据捕获方法
CN112364019A (zh) * 2020-11-04 2021-02-12 中盈优创资讯科技有限公司 一种自定义Spark数据源实现数据快速写入ClickHouse的方法和装置
CN113010608A (zh) * 2021-04-07 2021-06-22 亿企赢网络科技有限公司 数据实时同步方法、装置及计算机可读存储介质
CN113360516A (zh) * 2021-08-11 2021-09-07 成都信息工程大学 基于先进先出及最小活跃数策略的集合成员管理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813926B (zh) * 2019-11-13 2022-12-09 中国传媒大学 一种图数据库Neo4J交互可视化的操作方法与系统
CN111597257A (zh) * 2020-05-09 2020-08-28 远光软件股份有限公司 数据库的同步方法、装置、存储介质及终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054034A (zh) * 2010-12-27 2011-05-11 华中科技大学 企业信息系统的业务基础数据持久化实现方法
CN103440265A (zh) * 2013-08-01 2013-12-11 暨南大学 基于MapReduce的MYSQL数据库的变化数据捕获方法
CN112364019A (zh) * 2020-11-04 2021-02-12 中盈优创资讯科技有限公司 一种自定义Spark数据源实现数据快速写入ClickHouse的方法和装置
CN113010608A (zh) * 2021-04-07 2021-06-22 亿企赢网络科技有限公司 数据实时同步方法、装置及计算机可读存储介质
CN113360516A (zh) * 2021-08-11 2021-09-07 成都信息工程大学 基于先进先出及最小活跃数策略的集合成员管理方法

Also Published As

Publication number Publication date
CN114003660A (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
CN102521405B (zh) 支持高速加载的海量结构化数据存储、查询方法和系统
CN111046034B (zh) 管理内存数据及在内存中维护数据的方法和系统
CN102122285B (zh) 一种数据缓存系统中的数据查询系统和数据查询方法
US9747320B2 (en) Efficient reference counting in content addressable storage
CN110879813B (zh) 一种基于二进制日志解析的MySQL数据库增量同步实现方法
CN102521406B (zh) 海量结构化数据复杂查询任务的分布式查询方法和系统
US7418544B2 (en) Method and system for log structured relational database objects
US10565208B2 (en) Analyzing multiple data streams as a single data object
CN105224546B (zh) 数据存储和查询方法及设备
CN111460023A (zh) 基于Elasticsearch的业务数据处理方法、装置、设备及存储介质
US20040205044A1 (en) Method for storing inverted index, method for on-line updating the same and inverted index mechanism
US8458218B2 (en) Incremental data transfer in a database management system
US20100257181A1 (en) Dynamic Hash Table for Efficient Data Access In A Relational Database System
CN101169785A (zh) 集群数据库系统的动态负载均衡方法
CN102375853A (zh) 分布式数据库系统、在其中建立索引的方法和查询方法
US8380663B2 (en) Data integrity in a database environment through background synchronization
Tang et al. Deferred lightweight indexing for log-structured key-value stores
CN104239377A (zh) 跨平台的数据检索方法及装置
US11777983B2 (en) Systems and methods for rapidly generating security ratings
CN102819586A (zh) 一种基于高速缓存的url分类方法和设备
CN110309233A (zh) 数据存储的方法、装置、服务器和存储介质
CN109597829B (zh) 一种实现可搜索加密关系型数据库缓存的中间件方法
CN103365987B (zh) 一种基于共享磁盘架构的集群数据库系统及数据处理方法
CN114003660B (zh) 基于flink的高效同步实时数据到ClickHouse的方法及装置
CN101404649A (zh) 一种基于cache的数据处理系统及其方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant