System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据同步,尤其涉及一种基于sql合并的增量数据同步方法和系统及设备。
技术介绍
1、随着数据库技术和产品的逐步改进,越来越多的用户会随着应用环境的发展进行数据库的替换。在数据库替换的过程中,需要将源库的数据完整地迁移到新库中,在业务割接到新数据库前,为了观察和验证数据同步和数据一致性以及支持业务侧并轨运行一段时间,需要进行一段时间的增量同步。在实际应用中,业务侧存在大量的定时任务,这些定时任务对数据库进行批量操作,从而产生大量的数据变更。这些操作比如删除数据等操作在业务侧执行时可能只是一条sql语句,但是产生的增量数据可能非常大。
2、现有的数据库增量同步方法,采用sql预处理的方式进行数据写入。但由于短时间产生的增量数据过多,导致同步这种大事务数据同步耗时较长,无法在业务割接窗口期完成所有的增量数据同步;并且由于同步速度慢,源库和目标库的数据差异大,也无法达到业务并轨运行的需求。
3、因此,如何提供一种更加高效和准确的增量数据合并方法,成为亟待解决的技术问题。
技术实现思路
1、有鉴于此,为了克服现有技术的不足,本专利技术旨在提供一种基于sql合并的增量数据同步方法和系统及设备。
2、根据本专利技术的第一方面,提供一种基于sql合并的增量数据同步方法,该方法包括:
3、从源库采集增量dml数据,判断采集的增量dml数据是否为事务结束数据;
4、当增量dml数据为事务未结束数据,为满足合并条件的增量dml数据
5、当增量dml数据为事务结束数据,判断构建的trie字典树是否为空,在提交事务至目标库前,根据不为空的trie字典树构建语义级的delete sql写入目标库中。
6、优选地,本专利技术基于sql合并的增量数据同步方法中,从源库采集增量dml数据,判断采集的增量dml数据是否为事务结束数据,包括:从源库采集增量dml数据,获取采集的增量dml数据的操作字段信息,根据增量dml数据的操作字段信息获取增量dml数据的操作类型,根据增量dml数据的操作类型判断采集的增量dml数据是否为事务结束数据。
7、优选地,本专利技术基于sql合并的增量数据同步方法中,根据增量dml数据的操作字段信息获取增量dml数据的操作类型,根据增量dml数据的操作类型判断采集的增量dml数据是否为事务结束数据,包括:当增量dml数据的操作字段信息中包括commit字段,将增量dml数据判定为事务结束数据,当增量dml数据的操作字段信息中不存在commit字段,将增量dml数据判定为事务未结束数据。
8、优选地,本专利技术基于sql合并的增量数据同步方法中,当增量dml数据为事务未结束数据,为满足合并条件的增量dml数据构建trie字典树,将不满足合并条件的增量dml数据写入目标库,包括:
9、当增量dml数据为事务未结束数据,通过增量主线程创建事务缓存队列,采用创建的事务缓存队列判断增量dml数据组成的事务是否为大事务;
10、当增量dml数据组成的事务不是大事务,将增量dml数据按原始顺序写入目标库;
11、当增量dml数据组成的事务是大事务,判断增量dml数据是否存在对应的主键表delete操作,为存在对应的主键表delete操作的增量dml数据构建trie字典树,将不存在对应的主键表delete操作的增量dml数据写入目标库。
12、优选地,本专利技术基于sql合并的增量数据同步方法中,采用创建的事务缓存队列判断增量dml数据组成的事务是否为大事务,包括:
13、采用创建的事务缓存队列缓存采集的增量dml数据,根据缓存有增量dml数据的事务缓存队列的长度判断增量dml数据组成的事务是否为大事务;
14、当缓存有增量dml数据的事务缓存队列的长度大于预设值,将增量dml数据组成的事务判定为大事务;
15、当缓存有增量dml数据的事务缓存队列的长度小于等于预设值,将增量dml数据组成的事务判定为不是大事务。
16、优选地,本专利技术基于sql合并的增量数据同步方法中,当增量dml数据组成的事务是大事务,判断增量dml数据是否存在对应的主键表delete操作,为存在对应的主键表delete操作的增量dml数据构建trie字典树,将不存在对应的主键表delete操作的增量dml数据写入目标库,包括:
17、当增量dml数据组成的事务是大事务,查询该事务是否存在trie字典树构建记录,当该事务存在trie字典树构建记录,判断当前的增量dml数据与trie字典树构建记录对应的增量dml数据是否对应同一个主键表的delete操作;
18、如果当前的增量dml数据与trie字典树构建记录对应的增量dml数据对应同一个主键表的delete操作,根据当前的增量dml数据获取该主键表在目标库中的主键列名,根据获取的主键列名获取delete操作对应的delete数据的主键值,采用获取的主键值构建trie字典树;
19、如果当前的增量dml数据与trie字典树构建记录对应的增量dml数据不是对应同一个主键表的delete操作,将增量dml数据按原始顺序写入目标库。
20、优选地,本专利技术基于sql合并的增量数据同步方法中,当增量dml数据组成的事务是大事务,判断增量dml数据是否存在对应的主键表delete操作,为存在对应的主键表delete操作的增量dml数据构建trie字典树,将不存在对应的主键表delete操作的增量dml数据写入目标库,包括:
21、当增量dml数据组成的事务不存在trie字典树构建记录,判断当前的增量dml数据对应的操作是否为主键表的delete操作;
22、如果当前的增量dml数据对应的操作是主键表的delete操作,根据delete操作对应的delete数据的主键值构建trie字典树;
23、如果当前的增量dml数据对应的操作不是主键表的delete操作,将增量dml数据按原始顺序写入目标库。
24、优选地,本专利技术基于sql合并的增量数据同步方法中,当增量dml数据为事务结束数据,判断构建的trie字典树是否为空,在提交事务至目标库前,根据不为空的trie字典树构建语义级的delete sql写入目标库中,包括:
25、当增量dml数据为事务结束数据,判断构建的trie字典树是否为空,如果构建的trie字典树为空,向目标库提交增量dml数据对应的事务,在目标库记录该事务的在源库日志的位置数据;
26、如果构建的trie字典树不为空,递归遍历构建的trie字典树,获取字典树的范围数据,根据获取的范围数据构建语义级的delete sql,将构建的语义级的delete sql写入目标库中,向目标库提交增量dml数据对应的事务,在目标库记录该事务的在源库日志的位置数本文档来自技高网...
【技术保护点】
1.一种基于SQL合并的增量数据同步方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于SQL合并的增量数据同步方法,其特征在于,从源库采集增量DML数据,判断采集的增量DML数据是否为事务结束数据,包括:从源库采集增量DML数据,获取采集的增量DML数据的操作字段信息,根据增量DML数据的操作字段信息获取增量DML数据的操作类型,根据增量DML数据的操作类型判断采集的增量DML数据是否为事务结束数据。
3.根据权利要求2所述的基于SQL合并的增量数据同步方法,其特征在于,根据增量DML数据的操作字段信息获取增量DML数据的操作类型,根据增量DML数据的操作类型判断采集的增量DML数据是否为事务结束数据,包括:当增量DML数据的操作字段信息中包括COMMIT字段,将增量DML数据判定为事务结束数据,当增量DML数据的操作字段信息中不存在COMMIT字段,将增量DML数据判定为事务未结束数据。
4.根据权利要求1所述的基于SQL合并的增量数据同步方法,其特征在于,当增量DML数据为事务未结束数据,为满足合并条件的增量DML数据构建tri
5.根据权利要求4所述的基于SQL合并的增量数据同步方法,其特征在于,采用创建的事务缓存队列判断增量DML数据组成的事务是否为大事务,包括:
6.根据权利要求1所述的基于SQL合并的增量数据同步方法,其特征在于,当增量DML数据组成的事务是大事务,判断增量DML数据是否存在对应的主键表delete操作,为存在对应的主键表delete操作的增量DML数据构建trie字典树,将不存在对应的主键表delete操作的增量DML数据写入目标库,包括:
7.根据权利要求6所述的基于SQL合并的增量数据同步方法,其特征在于,当增量DML数据组成的事务是大事务,判断增量DML数据是否存在对应的主键表delete操作,为存在对应的主键表delete操作的增量DML数据构建trie字典树,将不存在对应的主键表delete操作的增量DML数据写入目标库,包括:
8.根据权利要求1所述的基于SQL合并的增量数据同步方法,其特征在于,当增量DML数据为事务结束数据,判断构建的trie字典树是否为空,在提交事务至目标库前,根据不为空的trie字典树构建语义级的delete SQL写入目标库中,包括:
9.一种基于SQL合并的增量数据同步系统,其特征在于,所述系统包括增量数据同步服务端,所述增量数据同步服务端用于:从源库采集增量DML数据,判断采集的增量DML数据是否为事务结束数据;当增量DML数据为事务未结束数据,为满足合并条件的增量DML数据构建trie字典树,将不满足合并条件的增量DML数据写入目标库;当增量DML数据为事务结束数据,判断构建的trie字典树是否为空,在提交事务至目标库前,根据不为空的trie字典树构建语义级的delete SQL写入目标库中。
10.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1-8中任一项所述方法的步骤。
...【技术特征摘要】
1.一种基于sql合并的增量数据同步方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于sql合并的增量数据同步方法,其特征在于,从源库采集增量dml数据,判断采集的增量dml数据是否为事务结束数据,包括:从源库采集增量dml数据,获取采集的增量dml数据的操作字段信息,根据增量dml数据的操作字段信息获取增量dml数据的操作类型,根据增量dml数据的操作类型判断采集的增量dml数据是否为事务结束数据。
3.根据权利要求2所述的基于sql合并的增量数据同步方法,其特征在于,根据增量dml数据的操作字段信息获取增量dml数据的操作类型,根据增量dml数据的操作类型判断采集的增量dml数据是否为事务结束数据,包括:当增量dml数据的操作字段信息中包括commit字段,将增量dml数据判定为事务结束数据,当增量dml数据的操作字段信息中不存在commit字段,将增量dml数据判定为事务未结束数据。
4.根据权利要求1所述的基于sql合并的增量数据同步方法,其特征在于,当增量dml数据为事务未结束数据,为满足合并条件的增量dml数据构建trie字典树,将不满足合并条件的增量dml数据写入目标库,包括:
5.根据权利要求4所述的基于sql合并的增量数据同步方法,其特征在于,采用创建的事务缓存队列判断增量dml数据组成的事务是否为大事务,包括:
6.根据权利要求1所述的基于sql合并的增量数据同步方法,其特征在于,当增量dml数据组成的事务是大事务,判断增量dml数据是否存在对应的主键表delete操作,为存在...
【专利技术属性】
技术研发人员:张雪,黄赵伟,
申请(专利权)人:北京海量数据技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。