数据同步的方法技术

技术编号:39601973 阅读:26 留言:0更新日期:2023-12-03 20:02
本发明专利技术涉及数据同步技术领域,公开了数据同步的方法

【技术实现步骤摘要】
数据同步的方法、装置、计算机设备及存储介质


[0001]本专利技术涉及数据同步
,具体涉及数据同步的方法

装置

计算机设备及存储介质


技术介绍

[0002]随着计算机技术和信息技术的不断发展,海量数据的不断涌现,企业迫切需要对数据进行高效

准确

及时地分析,数据作为一种生产要素,其挖掘和分析价值越来越被重视,越来越多的客户在其数字化项目中都会引入数据分析相关的应用,这涉及数据同步技术

[0003]数据同步指的是由源端数据库向目标端数据库定期同步数据,一般是按天

周或者月作为数据的更新周期,目标端数据库可以提供对历史数据的分析与查询,能够帮助决策者制定企业运营战略,但这种方式不能实时地反映企业商业信息的变化

为了能够及时将数据发送到决策者手中,为企业提供更有价值的战术型决策支持,因此以
CDC(Change Data Capture
,变化数据捕获
)
为桥梁的实时
BI(Business Intelligence
,商业智能
)
分析系统需求和建设应运而生

[0004]源端数据库对数据进行
DML(Data Manipulation Language
,数据操作语言
)
操作,例如插入操作
(Insert)、
更新操作
(Update)、
删除操作
(Delete)
,可以生成相应的
DML
数据;基于
CDC
能够实时捕获这些
DML
数据,所捕获的
DML
数据即为
DML
数据,这种方式可以尽可能高效地同步到目标端数据库中,尽可能提高目标端数据库中数据的实时性

[0005]但基于
CDC
将源端的
DML
数据同步入库目标端时,需要频繁地进行
I/O(InputOutput
,输入输出
)
操作,导致数据在目标端的入库效率较低


技术实现思路

[0006]有鉴于此,本专利技术提供了一种数据同步的方法

装置

计算机设备及存储介质,以解决数据入库时效率较低的技术问题

[0007]第一方面,本专利技术提供了一种数据同步的方法,包括:
[0008]将实时捕获的源端数据库的数据操作语言
DML
数据缓存至缓存队列;所述缓存队列用于缓存多条
DML
数据;
[0009]根据
DML
数据的操作类型,将所述缓存队列中非冗余的
DML
数据分类聚合为多个缓存子队列;所述非冗余的
DML
数据包括所述缓存队列中对应同一数据对象的最后一个
DML
数据,所述缓存子队列中的
DML
数据属于同一操作类型;
[0010]以所述缓存子队列为单位,向目标端数据库同步所述缓存队列的
DML
数据

[0011]本专利技术将实时捕获的
DML
数据缓存至缓存队列,并基于
DML
数据的操作类型对缓存队列中的
DML
数据进行分类聚合,使得缓存子队列中的
DML
数据均对应同一种操作类型,从而在向目标端数据库进行数据同步时,只需一次
I/O
操作,即可将一个缓存子队列中的多个
DML
数据批量并行写入至目标端数据库,并最终实现整个缓存队列的快速入库;并且,只将
非冗余的
DML
数据分类至缓存子队列,在以缓存子队列为单位进行同步时,可以有效保证目标端数据库与源端数据库相一致

与传统按序将
DML
数据同步至目标端数据库的目标端入库方案相比,该方法可以对同一操作类型的多个
DML
数据批量入库,只需少量
I/O
操作,可以减少数据时延,能够提升端到端数据同步的效率,保证实时性,且可以大幅度提升吞吐量

[0012]在一些可选的实施方式中,所述根据
DML
数据的操作类型,将所述缓存队列中非冗余的
DML
数据分类聚合为多个缓存子队列,包括:
[0013]从所述缓存队列中按序取出需要分类的当前
DML
数据,根据所述当前
DML
数据的操作类型将所述当前
DML
数据分类至相应的缓存子队列,并删除与所述当前
DML
数据对应同一数据对象的之前的冗余
DML
数据,直至遍历所述缓存队列;其中,
DML
数据在所述缓存队列中的顺序,与所述源端数据库生成
DML
数据的顺序一致;
[0014]得到与插入操作相对应的插入缓存子队列,与更新操作相对应的更新缓存子队列以及与删除操作相对应的删除缓存子队列

[0015]本专利技术以遍历缓存队列的方式,可以方便快速地将每个
DML
数据分类至相应的缓存子队列中

并且,可以将缓存队列分类为三个缓存子队列,基于较少的缓存子队列,可以较快地实现目标端数据入库;相较于传统入库方法,可以提高十倍以上的入库速率

[0016]在一些可选的实施方式中,所述根据所述当前
DML
数据的操作类型将所述当前
DML
数据分类至相应的缓存子队列,并删除与所述当前
DML
数据对应同一数据对象的之前的冗余
DML
数据,包括:
[0017]确定所述当前
DML
数据的操作类型;
[0018]在所述当前
DML
数据的操作类型为插入操作的情况下,将所述当前
DML
数据推入至所述插入缓存子队列;
[0019]在所述当前
DML
数据的操作类型为更新操作的情况下,将所述当前
DML
数据推入至所述更新缓存子队列;
[0020]在所述当前
DML
数据的操作类型为删除操作的情况下,将所述当前
DML
数据推入至所述删除缓存子队列,并在所述插入缓存子队列存在第一
DML
数据的情况下,删除所述插入缓存子队列中的所述第一
DML
数据,在所述更新缓存子队列存在第二
DML
数据的情况下,删除所述更新缓存子队列中的所述第二
DML
数据;
[0021]其中,所述第一<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种数据同步的方法,其特征在于,所述方法包括:将实时捕获的源端数据库的数据操作语言
DML
数据缓存至缓存队列;所述缓存队列用于缓存多条
DML
数据;根据
DML
数据的操作类型,将所述缓存队列中非冗余的
DML
数据分类聚合为多个缓存子队列;所述非冗余的
DML
数据包括所述缓存队列中对应同一数据对象的最后一个
DML
数据,所述缓存子队列中的
DML
数据属于同一操作类型;以所述缓存子队列为单位,向目标端数据库同步所述缓存队列的
DML
数据
。2.
根据权利要求1所述的方法,其特征在于,所述根据
DML
数据的操作类型,将所述缓存队列中非冗余的
DML
数据分类聚合为多个缓存子队列,包括:从所述缓存队列中按序取出需要分类的当前
DML
数据,根据所述当前
DML
数据的操作类型将所述当前
DML
数据分类至相应的缓存子队列,并删除与所述当前
DML
数据对应同一数据对象的之前的冗余
DML
数据,直至遍历所述缓存队列;其中,
DML
数据在所述缓存队列中的顺序,与所述源端数据库生成
DML
数据的顺序一致;得到与插入操作相对应的插入缓存子队列,与更新操作相对应的更新缓存子队列以及与删除操作相对应的删除缓存子队列
。3.
根据权利要求2所述的方法,其特征在于,所述根据所述当前
DML
数据的操作类型将所述当前
DML
数据分类至相应的缓存子队列,并删除与所述当前
DML
数据对应同一数据对象的之前的冗余
DML
数据,包括:确定所述当前
DML
数据的操作类型;在所述当前
DML
数据的操作类型为插入操作的情况下,将所述当前
DML
数据推入至所述插入缓存子队列;在所述当前
DML
数据的操作类型为更新操作的情况下,将所述当前
DML
数据推入至所述更新缓存子队列;在所述当前
DML
数据的操作类型为删除操作的情况下,将所述当前
DML
数据推入至所述删除缓存子队列,并在所述插入缓存子队列存在第一
DML
数据的情况下,删除所述插入缓存子队列中的所述第一
DML
数据,在所述更新缓存子队列存在第二
DML
数据的情况下,删除所述更新缓存子队列中的所述第二
DML
数据;其中,所述第一
DML
数据为对所述当前
DML
数据所操作的数据对象进行插入操作的
DML
数据;所述第二
DML
数据为对所述当前
DML
数据所操作的数据对象进行更新操作的
DML
数据
。4.
根据权利要求3所述的方法,其特征在于,所述根据所述当前
DML
数据的操作类型将所述当前
DML
数据分类至相应的缓存子队列,还包括:确定所述当前
DML
数据的唯一键;所述唯一键与
DML
数据所操作的数据对象相对应;在所述当前
DML
数据的操作类型为插入操作的情况下,将所述当前
DML
数据的唯一键添加至键缓存队列;在所述当前
DML
数据的操作类型为更新操作的情况下,将所述当前
DML
数据的唯一键添加至键缓存队列;在所述当前
DML
数据的操作类型为删除操作的情况下,通过判断所述键缓存队列是否存在所述当前
DML
数据的唯一键,确定所述插入缓存子队列是否存在第一
DML
数据

或所述更新缓存子队列是否存在第二
DML
数据

5.
根据权利要求4所述的方法,其特征在于,所述根据所述当前
DML
数据的操作类型将所述当前
DML
数据分类至相应的缓存子队列,还包括:在所述当前
DML
数据的操作类型为删除操作

且所述键缓存队列存在所述当前
DML
数据的唯一键的情况下,删除所述键缓存队列中的所述当前
DML
数据的唯一键
。6.
根据权利要求3所述的方法,其特征在于,所述更新...

【专利技术属性】
技术研发人员:王萌萌郑亚飞沙朋白晨李渭帅
申请(专利权)人:新华三大数据技术有限公司
类型:发明
国别省市:

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

1