CN116804994A - 数据同步方法、系统、装置、电子设备及存储介质 - Google Patents

数据同步方法、系统、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116804994A
CN116804994A CN202311062518.3A CN202311062518A CN116804994A CN 116804994 A CN116804994 A CN 116804994A CN 202311062518 A CN202311062518 A CN 202311062518A CN 116804994 A CN116804994 A CN 116804994A
Authority
CN
China
Prior art keywords
data
database
temporary
original
original table
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.)
Granted
Application number
CN202311062518.3A
Other languages
English (en)
Other versions
CN116804994B (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.)
Beijing Zhufeng Technology Co ltd
Original Assignee
Beijing Zhufeng 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 Beijing Zhufeng Technology Co ltd filed Critical Beijing Zhufeng Technology Co ltd
Priority to CN202311062518.3A priority Critical patent/CN116804994B/zh
Publication of CN116804994A publication Critical patent/CN116804994A/zh
Application granted granted Critical
Publication of CN116804994B publication Critical patent/CN116804994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models

Landscapes

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

Abstract

本申请实施例公开了一种数据同步方法、系统、装置、电子设备及存储介质,该方法包括:确定源端数据库的第一原表对应的第一临时表;基于第一临时表和第一原表,确定源端数据库的结构变化事件;根据预设映射关系,在目标端数据库中确定与第一原表对应的第二原表;其中,预设映射关系表征源端数据库中原表与目标端数据库中原表的对应关系;在所述目标端数据库中创建第二原表对应的第二临时表;在第二临时表中应用结构变化事件,使得第二临时表完成结构变化的数据同步,避免了在原表出现结构变化的情况下进行锁表,进一步避免了在原表出现结构变化的情况下应用无法连续访问数据表的问题,有效提高应用访问数据表的连续性。

Description

数据同步方法、系统、装置、电子设备及存储介质
技术领域
本申请涉及数据库技术领域,特别是涉及一种数据同步方法、系统、装置、电子设备及存储介质。
背景技术
在基于日志捕获的数据同步系统中,系统会采集源端两类日志记录:一类是关于结构变化的数据定义语言(Data Definition Language,DDL)信息;另一类是关于数据增删改的数据操作语言(Data Manipulation Language,DML)信息。当源端发生结构变化时,如果源表的数据库量很大,那么DDL的执行过程可能长达数十分钟。在这个过程中,源表会处于锁定状态,无法被应用程序所访问。同理,在目标表中执行DDL,也可能会导致目标表长期被锁定,影响下游应用。
发明内容
有鉴于此,本申请实施例提供了一种数据同步方法、系统、装置、电子设备及存储介质,旨在有效提高应用访问数据表的连续性。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据同步方法,包括:
确定源端数据库的第一原表和所述第一原表对应的第一临时表;
基于所述第一临时表和所述第一原表,确定所述源端数据库的结构变化事件;
根据预设映射关系,在目标端数据库中确定与所述第一原表对应的第二原表;其中,所述预设映射关系表征所述源端数据库中原表与所述目标端数据库中原表的对应关系;
在所述目标端数据库中创建所述第二原表对应的第二临时表;
在所述第二临时表中应用所述结构变化事件,使得所述第二临时表完成结构变化的数据同步。
在上述方案中,所述确定源端数据库的第一原表和所述第一原表对应的第一临时表,包括:
获取所述源端数据库中新增的临时表;
基于预设规则确定所述新增的临时表对应的所述源端数据库中原表;
若在所述预设映射关系中查询到与所述源端数据库中原表对应的所述目标端数据库中原表,则将所述源端数据库中原表确定为所述第一原表以及将所述新增的临时表确定为所述第一临时表。
在上述方案中,所述在所述目标端数据库中创建所述第二原表对应的第二临时表,包括:
获取所述第一临时表的创建方式;
基于所述创建方式对所述第二原表对应的所述第二临时表进行创建。
在上述方案中,所述方法还包括:
获取所述源端数据库生成的转换信息;所述转换信息表征所述第一原表按照第一规则转换为第一备份表,所述第一临时表按照第二规则转换为第一数据表;所述第一数据表用于确定所述源端数据库的数据变化事件;
按照所述第一规则对所述第二原表进行转换,得到第二备份表;
按照所述第二规则对所述第二临时表进行转换,得到第二数据表;所述第二数据表用于应用所述数据变化事件。
在上述方案中,所述按照所述第二规则对所述第二临时表进行转换,得到第二数据表之后,所述方法还包括:
在所述第二数据表中应用所述数据变化事件,使得所述第二数据表完成数据变化的数据同步。
在上述方案中,所述获取所述源端数据库中新增的临时表,包括:
基于所述源端数据库的日志和/或所述源端数据库的系统表,获取所述源端数据库中新增的临时表。
在上述方案中,所述方法还包括:
获取所述第一临时表重命名为所述第一数据表对应的日志位点;
基于所述日志位点和所述第一数据表,确定所述源端数据库的数据变化事件。
本申请实施例提供一种数据同步装置,包括:
第一确定模块,用于确定源端数据库的第一原表和所述第一原表对应的第一临时表;
第二确定模块,用于基于所述第一临时表和所述第一原表,确定所述源端数据库的结构变化事件;
第三确定模块,用于根据预设映射关系,在目标端数据库中确定与所述第一原表对应的第二原表;其中,所述预设映射关系表征所述源端数据库中原表与所述目标端数据库中原表的对应关系;
创建模块,用于在所述目标端数据库中创建所述第二原表对应的第二临时表;
应用模块,用于在所述第二临时表中应用所述结构变化事件,使得所述第二临时表完成结构变化的数据同步。
本申请实施例提供一种数据同步设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据同步方法中的步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述数据同步方法中的步骤。
本申请实施例提供了一种数据同步方法、系统、装置、电子设备及存储介质,所述方法包括:确定源端数据库的第一原表对应的第一临时表;基于所述第一临时表和所述第一原表,确定所述源端数据库的结构变化事件;根据预设映射关系,在目标端数据库中确定与所述第一原表对应的第二原表;其中,所述预设映射关系表征所述源端数据库中原表与所述目标端数据库中原表的对应关系;在所述目标端数据库中创建所述第二原表对应的第二临时表;在所述第二临时表中应用所述结构变化事件,使得所述第二临时表完成结构变化的数据同步。采用本申请实施例的技术方案,通过在临时表上完成结构变化,在结构变化的过程中原表仍然可以被访问,避免了在原表出现结构变化的情况下进行锁表,进一步避免了在原表出现结构变化的情况下应用无法连续访问数据表的问题,有效提高应用访问数据表的连续性。
附图说明
图1为本申请实施例数据同步方法实现流程示意图;
图2为本申请一应用示例中数据同步方法实现流程示意图;
图3为本申请数据同步方法的一种系统部署运行架构示意图;
图4为本申请数据同步方法的另一种系统部署运行架构示意图;
图5为本申请数据同步方法的同步系统结构示意图;
图6为本申请实施例数据同步装置的结构示意图;
图7为本申请实施例数据同步设备的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
本申请实施例提供了一种数据同步方法、系统、装置、电子设备及存储介质,基于本申请实施例的数据同步方法,可以实现有效提高应用访问数据表的连续性。
相关技术中,关于结构变化的DDL信息,包括表的重命名、新增列、删除列、修改列定义等,如果新增列有默认值,数据库日志中通常还会产生大量的更新操作记录,这些记录如果需要同步到下游,会造成较大的输入/输出(Input/ Output,IO)开销,导致同步延迟发生。
相关技术中结构变化同步方案包括:通过日志解析获取到DDL以及由于DDL产生的DML,同步时跳过不必要的DML以节省时间;从捕获到DDL就开始在下游进行相应的处理,从而有效降低了最终完成DDL处理的总体时间;通过在下游创建临时表的方式,避免DDL处理过程中对下游较长时间的锁表操作。
上述相关技术的局限在于:结构变化是在源端表上发生的。在此期间,源端表处于锁定状态,应用访问请求会较长时间处于阻塞状态。这在一些应用场景是不可接受的。
为了减少访问请求的阻塞,本申请实施例提供了一种数据同步方法、系统、装置、电子设备及存储介质,提供一种针对源端以重名表方式实现结构变更的数据同步场景下的方案。该方案可以自动识别源端以重命名表方式进行的结构变更,自动完成目标端的结构变化,保证数据同步的一致性,并且在结构变更过程中较少阻塞对源表以及目标表的查询请求。
在源端按照新的表结构创建临时表,然后将源表的历史数据通过查询插入、导出导入等方式写入临时表,将源表重命名为备份表,再将临时表重命名为源表。由于重命名表的操作时间非常短暂,基本不会阻塞对源表的查询请求。但相应的,目的地表也需要类似的机制来保证a)应用查询请求基本不会因为结构变更被阻塞;b)目标表的数据可以有延迟,但要保证与源表的最终一致。而相关技术无法实现此场景下的数据同步要求。
本申请实施例提供一种数据同步方法,如图1所示,该方法包括:
步骤101:确定源端数据库的第一原表和第一原表对应的第一临时表。
示例性地,该方法应用于数据同步系统,数据同步系统能够访问源端数据库中的数据表及目的端数据库中的数据表,并对数据表进行转换、备份等操作,如此,即数据同步系统可以直接、或者间接控制各数据表。其中,源端数据库和目标端数据库都是标准的数据库,数据同步系统可以通过提交结构化查询语言(Structured Query Language,SQL)或者解析/加载文件的方式与源端数据库及目标端数据库进行交互。
可以理解的是,源端数据库中原表创建临时表,表征源端数据库中出现了结构变化,可以通过源端数据库中新增的临时表,判断新增的临时表对应的原表是否为第一原表,若新增的临时表对应的原表为第一原表,则确定新增的临时表为第一临时表。
在一应用示例中,确定源端数据库的第一原表和第一原表对应的第一临时表,包括:
获取源端数据库中新增的临时表;
基于预设规则确定新增的临时表对应的源端数据库中原表;
若在预设映射关系中查询到与源端数据库中原表对应的目标端数据库中原表,则将源端数据库中原表确定为第一原表以及将新增的临时表确定为第一临时表。
示例性地,预设规则可以为源端数据库中原表创建对应的临时表执行的预设重命名规则,其中,源端数据库中原表可以根据预设重命名规则创建多个临时表。基于预设规则确定新增的临时表对应的源端数据库中原表,可以为根据预设重命名规则可以确定新增临时表对应唯一的源端数据库中原表。
在其他实施例中,若在预设映射关系中没有查询到与源端数据库中原表对应的目标端数据库中原表,则丢弃该新增的临时表;继续获取源端数据库中新增的临时表。
在一应用示例中,获取源端数据库中新增的临时表,包括:
基于源端数据库的日志和/或源端数据库的系统表,获取源端数据库中新增的临时表。
示例性地,可以基于源端数据库以查询或日志采集的方式获取日志和/或系统表;基于源端数据库的日志和/或源端数据库的系统表,获取源端数据库中新增的数据表;判断新增的数据表是否满足预设临时表规则,若新增的数据表满足预设临时表规则,则将新增的数据表确定为新增的临时表。其中,预设临时表规则与预设重命名规则可以相同,也可以不同。
在其他实施例中,基于源端数据库的日志和/或系统表获取DDL;可以基于DDL确定第一原表和第一临时表的结构变化事件;其中,可以对获取的DDL进行编码格式转换,从而屏蔽源端数据库的类型差异。可以理解的是,也可以基于源端数据库的日志和/或系统表获取DML。
步骤102:基于第一临时表和第一原表,确定源端数据库的结构变化事件。
示例性地,对第一临时表和第一原表进行分析,确定第一临时表和第一原表结构差异,生成结构变化事件。具体的分析方法包括但不限于:对比表的建表语句、通过(JavaDataBase Connectivity standard,JDBC)/(Open Database Connectivity ,ODBC)程序获取表对象进行比较等。
示例性地,结构变化事件可以包括删除列事件、修改列事件和增加列事件中至少之一。
步骤103:根据预设映射关系,在目标端数据库中确定与第一原表对应的第二原表;其中,预设映射关系表征源端数据库中原表与目标端数据库中原表的对应关系。
示例性地,可以在同步的过程中从源端数据库选择一个或多个数据表,将选择的数据表对应到目标表进行表名的映射、字段名称的映射以及类型的映射,得到预设映射关系。
步骤104:在所述目标端数据库中创建第二原表对应的第二临时表。
可以理解的是,在所述目标端数据库中创建第二原表对应的第二临时表的方式可以与第一原表创建第一临时表的方式相同。
在一应用示例中,在所述目标端数据库中创建第二原表对应的第二临时表,包括:
获取第一临时表的创建方式;
基于创建方式对第二原表对应的第二临时表进行创建。
示例性地,第一临时表的创建可以采用数据没有发生改变的方式进行创建,具体地,第一临时表的创建的方式可以为查询插入或导出导入方式。基于创建方式对第二原表对应的第二临时表进行创建,可以为在第一原表创建第一临时表之后,第二原表按照同样的创建方式创建第二临时表。
步骤105:在第二临时表中应用结构变化事件,使得第二临时表完成结构变化的数据同步。
示例性地,对于删除列/修改列事件,第一临时表中数据全部来源于第一原表;第二临时表中数据全部来源于第二原表。对于增加列操作,第一临时表中的数据可能包含默认值;第二临时表中数据可能包含默认值。如果包含默认值,则使用第一原表的默认值,确保默认值与源端数据库中数据保持一致。
在一应用示例中,该方法还包括:
获取所述源端数据库生成的转换信息;所述转换信息表征所述第一原表按照第一规则转换为第一备份表,所述第一临时表按照第二规则转换为第一数据表;所述第一数据表用于确定所述源端数据库的数据变化事件;
按照所述第一规则对所述第二原表进行转换,得到第二备份表;
按照所述第二规则对所述第二临时表进行转换,得到第二数据表;所述第二数据表用于应用所述数据变化事件。
示例性地,源端数据库通过预设程序实现将第一原表转换为第一备份表,以及将第一临时表转换为第一数据表。在完成上述两个转换之后源端数据库生成转换信息;该转换信息可以通过源端数据库发送至数据同步系统,也可以通过数据同步系统对源端数据库的轮询获取。数据同步系统获取到转换信息之后,能够确定源端数据库产生了两个转换操作。其中,预设程序可以是外部终端应用系统的外部程序。
示例性地,第一规则用于表征原表重命名为备份表的规则,第二规则用于表征临时表重命名为数据表的规则;第一规则和第二规则可以根据实际情况确定,在此不做限定。
示例性地,第一原表按照第一规则转换为第一备份表的时间可以为第一原表创建第一临时表之后,可以理解的是,重命名操作可以在极短的时间内完成,将第一原表重命名为第一备份表后,第一备份表(即第一原表)仍然可以被访问,避免第一原表出现结构变化的情况下进行锁表。
示例性地,第一临时表按照第二规则转换为第一数据表的时间可以为第一原表重命名为第一备份表之后,可以理解的是,将第一临时表重命名为第一数据表后,包含结构变化的第一数据表(即第一临时表)可以替代第一备份表(即第一原表)被访问,而将第一备份表(即第一原表)进行存储,第一备份表(即第一原表)不再被访问。
示例性地,数据变化事件可以表征数据表中出现的增量数据事件、删除数据事件和修改数据事件中至少之一。
在其他实施例中,第一备份表可以加上时间戳,防止源端数据库中至少一个第一备份表出现重复;第一备份表也可以基于固定的保留规则进行删除,从而节省存储空间。
示例性地,第二原表按照第一规则进行转换得到第二备份表的时间可以为第一临时表重命名为第一数据表之后,可以理解的是,重命名操作可以在极短的时间内完成,将第二原表重命名为第二备份表后,第二备份表(即,第二原表)仍然可以被访问。
示例性地,第二临时表按照第二规则进行转换得到第二数据表的时间可以为第二原表重命名为第二备份表之后,可以理解的是,将第二临时表重命名为第二数据表后,包含结构变化的第二数据表(即,第二临时表)可以替代第二备份表(即,第二原表)被访问,而将第二备份表(即,第二原表)进行存储,第二备份表(即,第二原表)不再被访问。
在其他实施例中,第二备份表可以加上时间戳,防止源端数据库中至少一个第二备份表出现重复;第二备份表也可以基于固定的保留规则进行删除,从而节省存储空间。
在一应用示例中,该方法还包括:
获取第一临时表重命名为第一数据表对应的日志位点;
基于日志位点和第一数据表,确定源端数据库的数据变化事件。
示例性地,在第一临时表重命名为第一数据表之后,第一原表不再被访问,记录第一临时表重命名为第一数据表的日志位点;基于该日志位点,若第一数据表中出现数据变化,则确定源端数据库的数据变化事件。
在一应用示例中,按照第二规则对第二临时表进行重命名,得到第二数据表之后,该方法还包括:
在第二数据表中应用数据变化事件,使得第二数据表完成数据变化的数据同步。
示例性地,在第一临时表重命名为第一数据表之前,第一原表的数据变化可以直接同步至第二原表中;在第一临时表重命名为第一数据表之后,第一原表不再被访问,基于第一临时表重命名为第一数据表的日志位点,将第一数据表的数据变化同步至第二数据表中。
本申请在处理结构变化过程中,源端数据表和目标端数据表无需加读锁,不会限制应用的访问;在结构变化过程中,源端数据库和目标端数据库可以几乎同时进行结构变化,缩短了结构变化造成的同步数据延迟;不与特定的数据库实现技术绑定,具备较强的通用性。
为了理解本申请实施例,以下以一种支持结构变化的数据同步方法及装置为例进行说明。
本申请提供了一种通用的、基于临时表的数据库结构变化同步方法。这些数据库可以根据实际情况确定,在此不做限定。结构变化的获取优选采用日志解析的方式。但其它方式,包括定义表级别的触发器,只要能够检测到表结构变化,均可采用本申请的流程及装置来实现结构变化的同步。
部署架构上,数据同步系统与源端和目标端的数据库可能采用侵入式和非侵入式两种。如果数据的采集和写入必须在数据库服务器上安装程序,数据同步系统将部署采集/写入代理到相应的数据库服务器。如果数据的采集和写入可以通过远程接口的方式访问(例如,JDBC/ODBC),那么数据同步系统也可以采用远程部署的模式。但无论哪种部署模式,都不影响本申请的处理流程。
本申请有一个应用的前提:源端数据库的表结构变更必须遵循约定的规则,首先基于原表(src_org_tableA)创建一个临时表(src_new_tableA)。需要指出的是,src_org_tableA和src_new_tableA的命名仅用于示意,在实际应用中,系统开发者可以使用任意命名方式来建立原表和临时表之间的关系。在不是一般性前提下,本申请的实施例说明中,统一采用src_org_tableA和src_new_tableA来代表源端数据库的原表和临时表,用tgt_org_tableA和tgt_new_tableA来代表目标端数据库的原表和临时表。
具体方法流程如图2所示:
步骤S201中,同步系统基于确定的映射关系,检测到产生了原表src_org_tableA的临时表创建操作,其中,产生创建临时表操作表征原表出现了结构变化。映射关系表征原表与目标表的映射关系。
检测到产生临时表创建操作后,需判断产生临时表创建操作的原表是否存在映射的目标表,若存在,则进行本申请的方法过程,若不存在,则继续检测是否产生临时表创建操作。
检测是否产生了原表的临时表可以基于日志解析检测新增的数据表是否根据约定的临时表规则进行创建,若是,则新增的数据表为临时表;也可以基于系统表的轮询检测是否存在新增的根据约定的临时表规则的数据表,若是,则新增的数据表为临时表。当检测到临时表创建后,通过分析原表和临时表的结构差异,生成结构变化事件。
步骤S202中,同步系统识别到源端数据库产生了结构变化后,在目标端数据库从tgt_org_tableA创建出临时表tgt_new_tableA,并在tgt_new_tableA应用结构变化事件,确保tgt_new_tableA的结构正确反映了源端数据库的结构变化。
步骤S203中,同步系统在目标端数据库从tgt_org_tableA查询数据插入tgt_new_tableA。这个过程中,不需要等待源端数据库src_org_tableA向src_new_table的数据插入完成,可以同时进行。
步骤S204中,同步系统检测到源端数据库产生了src_org_tableA重命名为src_org_tableA_bak的DDL操作,然后等待源端数据库src_new_tableA被重命名为src_org_tableA。捕获到这两个DDL事件后,进入步骤S205。同时还需要记录下此时src_org_tableA对应的日志位点。
优选的,src_org_tableA_bak可以加上时间戳防止重复,或基于固定的保留规则进行删除以节省存储空间。
由于src_org_tableA的重命名会造成应用无法访问,因此源端数据库进行结构变化的外部程序需要将“src_org_tableA重命名为src_org_tableA_bak”和“src_new_tableA重命名为src_org_tableA”两个操作顺序执行,从而在极短的时间内完成,其中,外部程序可以是用户的应用系统。
步骤S205中,同步系统将目标端数据库tgt_org_tableA重命名为tgt_org_tableA_bak,并将tgt_new_tableA重命名为tgt_org_tableA。
优选的,tgt_org_tableA_bak可以加上时间戳防止重复,或基于固定的保留规则进行删除以节省存储空间。
由于tgt_org_tableA的重命名会造成应用无法访问,因此需要将“tgt_org_tableA重命名为tgt_org_tableA_bak”和“将tgt_new_tableA重命名为tgt_org_tableA”两个操作顺序执行,从而在极短的时间内完成。
步骤S206中,同步系统完成了目标端数据库的结构变化之后,从记录的src_org_tableA对应的日志位点开始,将后继的增量数据变化同步到tgt_org_tableA。
本申请提供了一种数据同步系统的实施例,如图3和图4所示为该数据同步系统的部署运行架构,如图5所示,该数据同步系统500包括:
获取单元501,用于访问数据库的数据表、日志以及元数据。其中,元数据可以是系统表。取决于数据库的具体实现技术,对日志的获取可能通过远程或者本地的方式来实现。
如果可以通过远程实现(例如,MySQL数据库),那么获取单元501可以运行在远程服务器上,对应图3的部署运行架构,如图3所示,源端数据库宿主机设置有数据库进程301,目标端数据库宿主机设置有数据库进程302,数据同步系统宿主机中设置有数据同步进程303。
如果对日志的访问必须在数据库本地完成(例如,Oracle数据库的单机模式),那么获取单元501需要单独以采集代理形式运行在数据库宿主机上,对应图4的部署架构,如图4所示,源端数据库宿主机设置有数据库进程401,目标端数据库宿主机设置有数据库进程403,源端数据库宿主机设置有采集代理进程402,目标端数据库宿主机设置有加载代理进程404,数据同步系统宿主机中设置有数据同步进程405。
解析单元502,用于解析日志,获得明文化的DDL和DML。本申请场景下关注的DDL包括表的创建、重命名、列的增加、列的修改、列的删除等操作,本申请场景下关注的DML包括数据的增加、删除和修改。在基于查询的获取方式下,解析单元502将查询获得的明文数据直接传递给转换单元503。
转换单元503,用于将DDL和DML转换为统一的数据编码格式。统一的数据编码可以屏蔽源端数据库的类型差异,从而实现异构数据库之间的同步。在具体的实施例中,可以采用包括但不限于Avro的编码方式。Avro格式编码方法如下:Avro依赖"schema"(模式)来实现数据结构的定义,Avro格式包括原始类型(即基本类型,例如null、boolean、int、long、float、double、bytes和string等)和复杂类型(例如record、enum、array、map、union和fixed)。通过原始类型和复杂类型的组合,Avro格式可以对任意结构化的数据进行编码。
假定本实施例中的源表是一张用户表(user_info)、包含三列,分别为姓名(name,varchar(50)类型)、年龄(age,int类型)和兴趣(interest,array类型),对应DML数据的Avro模式定义如下:其中,entity代表源端的表名,用于识别数据的隶属关系;mType代表数据类型,取值范围为DDL/DML。这主要是方便加载单元进行后继处理;op字段代表DML类型,取值范围为I/U/D,分别代表插入、更新和删除;实际的数据放在data字段下,这是一个record复合类型,其中包括了name、age、和interest的具体定义。
需要指出的是,Avro会利用Schema对数据进行二进制编码。
本申请场景下,由于需要提供给加载单元的DDL数据只有一种:“源端发生了创建临时表的操作,并且临时表相比源表,产生了如下列变化”。其结构定义如下:其中op代表DDL类型,对于创建临时表的结构变化,该字段的值为“alter-table-by-tmp”。data字段为array类型,其中每一个item定义为符合结构,包括column(列名)、op(类型,I/U/D,分别对应列的增加、删除和修改)、def(具体的列定义,对于D类型可以为空)。
加载单元504,用于在目标数据库应用DDL和DML,实现结构变化与数据同步。取决于具体的写入方式,对目标数据库的写入可能通过远程或者本地的方式来实现。如果可以通过远程实现(例如JDBC写入方式),那么获取单元501可以运行在远程服务器上。对应图3的部署运行架构;如果对目标数据库的写入必须在数据库本地完成(通常发生在需要以文件形式实现高性能写入,且目标数据库不支持远程文件流方式),那么加载单元504需要单独以加载代理形式运行在数据库宿主机上,对应于图4的部署模式。
需要指出的是,图3和图4的两种部署架构代表了实施中的两种极端场景。采集代理和加载代理可以根据需要自由组合实施,例如只采用采集代理,或只采用加载代理。
为了实现本申请实施例的方法,本申请实施例还提供一种数据同步装置,上述数据同步方法实施例中的各步骤也完全适用于本数据同步装置实施例。
本申请实施例提供一种数据同步装置,如图6所示,该数据同步装置600包括:
第一确定模块601,用于确定源端数据库的第一原表和第一原表对应的第一临时表;
第二确定模块602,用于基于第一临时表和第一原表,确定源端数据库的结构变化事件;
第三确定模块603,用于根据预设映射关系,在目标端数据库中确定与第一原表对应的第二原表;其中,预设映射关系表征源端数据库中原表与目标端数据库中原表的对应关系;
创建模块604,用于在所述目标端数据库中创建第二原表对应的第二临时表;
应用模块605,用于在第二临时表中应用结构变化事件,使得第二临时表完成结构变化的数据同步。
在一些实施例中,第一确定模块601,还用于获取源端数据库中新增的临时表;基于预设规则确定新增的临时表对应的源端数据库中原表;若在预设映射关系中查询到与源端数据库中原表对应的目标端数据库中原表,则将源端数据库中原表确定为第一原表以及将新增的临时表确定为第一临时表。
在一些实施例中,创建模块604,还用于获取第一临时表的创建方式;基于创建方式对第二原表对应的第二临时表进行创建。
在一些实施例中,应用模块605,还用于若确定第一原表按照第一规则进行重命名,得到第一备份表;等待第一临时表按照第二规则进行重命名,得到第一数据表;第一数据表用于确定源端数据库的数据变化事件;按照第一规则对第二原表进行重命名,得到第二备份表;按照第二规则对第二临时表进行重命名,得到第二数据表;第二数据表用于应用数据变化事件。
在一些实施例中,应用模块605,还用于在第二数据表中应用数据变化事件,使得第二数据表完成数据变化的数据同步。
在一些实施例中,第一确定模块601,还用于基于源端数据库的日志和/或源端数据库的系统表,获取源端数据库中新增的临时表。
在一些实施例中,数据同步装置600还包括:
获取模块,用于获取第一临时表重命名为第一数据表对应的日志位点;
第四确定模块,用于基于日志位点和第一数据表,确定源端数据库的数据变化事件。
需要说明的是:上述实施例提供的数据同步装置在进行控制时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据同步装置与前述的数据同步方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供一种数据同步设备。图7仅仅示出了该数据同步设备的示例性结构而非全部结构,根据需要可以实施图7示出的部分结构或全部结构。
如图7所示,本申请实施例提供的数据同步设备700,包括:至少一个处理器701、存储器702和用户接口703。数据同步设备700中的各个组件通过总线系统704耦合在一起。可以理解,总线系统704用于实现这些组件之间的连接通信。总线系统704除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统704。
其中,用户接口703可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
本申请实施例中的存储器702用于存储各种类型的数据以支持控制设备的操作。这些数据的示例包括:用于在控制设备上操作的任何计算机程序。
本申请实施例揭示的数据同步方法可以应用于处理器701中,或者由处理器701实现。处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,数据同步方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器701可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成本申请实施例提供的数据同步方法的步骤。
在示例性实施例中,数据同步设备可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程逻辑门阵列(FPGA,Field Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或者其他电子元件实现,用于执行前述方法。
可以理解,存储器702可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read OnlyMemory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体可以是计算机可读存储介质,例如包括存储计算机程序的存储器702,上述计算机程序可由数据同步设备的处理器701执行,以完成本申请实施例方法所述的步骤。计算机可读存储介质可以是ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
另外,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请披露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种数据同步方法,其特征在于,包括:
确定源端数据库的第一原表和所述第一原表对应的第一临时表;
基于所述第一临时表和所述第一原表,确定所述源端数据库的结构变化事件;
根据预设映射关系,在目标端数据库中确定与所述第一原表对应的第二原表;其中,所述预设映射关系表征所述源端数据库中原表与所述目标端数据库中原表的对应关系;
在所述目标端数据库中创建所述第二原表对应的第二临时表;
在所述第二临时表中应用所述结构变化事件,使得所述第二临时表完成结构变化的数据同步。
2.根据权利要求1所述的方法,其特征在于,所述确定源端数据库的第一原表和所述第一原表对应的第一临时表,包括:
获取所述源端数据库中新增的临时表;
基于预设规则确定所述新增的临时表对应的所述源端数据库中原表;
若在所述预设映射关系中查询到与所述源端数据库中原表对应的所述目标端数据库中原表,则将所述源端数据库中原表确定为所述第一原表以及将所述新增的临时表确定为所述第一临时表。
3.根据权利要求1所述的方法,其特征在于,所述在所述目标端数据库中创建所述第二原表对应的第二临时表,包括:
获取所述第一临时表的创建方式;
基于所述创建方式对所述第二原表对应的所述第二临时表进行创建。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述源端数据库生成的转换信息;所述转换信息表征所述第一原表按照第一规则转换为第一备份表,所述第一临时表按照第二规则转换为第一数据表;所述第一数据表用于确定所述源端数据库的数据变化事件;
按照所述第一规则对所述第二原表进行转换,得到第二备份表;
按照所述第二规则对所述第二临时表进行转换,得到第二数据表;所述第二数据表用于应用所述数据变化事件。
5.根据权利要求4所述的方法,其特征在于,所述按照所述第二规则对所述第二临时表进行转换,得到第二数据表之后,所述方法还包括:
在所述第二数据表中应用所述数据变化事件,使得所述第二数据表完成数据变化的数据同步。
6.根据权利要求2所述的方法,其特征在于,所述获取所述源端数据库中新增的临时表,包括:
基于所述源端数据库的日志和/或所述源端数据库的系统表,获取所述源端数据库中新增的临时表。
7.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述第一临时表重命名为所述第一数据表对应的日志位点;
基于所述日志位点和所述第一数据表,确定所述源端数据库的数据变化事件。
8.一种数据同步装置,其特征在于,包括:
第一确定模块,用于确定源端数据库的第一原表和所述第一原表对应的第一临时表;
第二确定模块,用于基于所述第一临时表和所述第一原表,确定所述源端数据库的结构变化事件;
第三确定模块,用于根据预设映射关系,在目标端数据库中确定与所述第一原表对应的第二原表;其中,所述预设映射关系表征所述源端数据库中原表与所述目标端数据库中原表的对应关系;
创建模块,用于在所述目标端数据库中创建所述第二原表对应的第二临时表;
应用模块,用于在所述第二临时表中应用所述结构变化事件,使得所述第二临时表完成结构变化的数据同步。
9.一种数据同步设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述方法中的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法中的步骤。
CN202311062518.3A 2023-08-23 2023-08-23 数据同步方法、系统、装置、电子设备及存储介质 Active CN116804994B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311062518.3A CN116804994B (zh) 2023-08-23 2023-08-23 数据同步方法、系统、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311062518.3A CN116804994B (zh) 2023-08-23 2023-08-23 数据同步方法、系统、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116804994A true CN116804994A (zh) 2023-09-26
CN116804994B CN116804994B (zh) 2023-11-14

Family

ID=88079685

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311062518.3A Active CN116804994B (zh) 2023-08-23 2023-08-23 数据同步方法、系统、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116804994B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991882A (zh) * 2023-09-28 2023-11-03 成都新希望金融信息有限公司 基于业务优先级的查询优化方法、装置和电子设备
CN117056359A (zh) * 2023-10-09 2023-11-14 宁波银行股份有限公司 一种表格重建方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070038642A1 (en) * 2004-09-15 2007-02-15 Scott Durgin Method for providing extensible software components within a distributed synchronization system
CN109656934A (zh) * 2018-11-19 2019-04-19 武汉达梦数据库有限公司 基于日志解析的源端Oracle数据库DDL同步方法及设备
CN110909087A (zh) * 2019-11-28 2020-03-24 北京思特奇信息技术股份有限公司 一种关系型数据库在线ddl修改表结构的方法和装置
CN111241192A (zh) * 2019-12-31 2020-06-05 航天信息软件技术有限公司 一种数据同步方法
CN111241094A (zh) * 2019-12-31 2020-06-05 武汉达梦数据库有限公司 一种基于日志解析的数据库删除列同步方法和装置
CN115168347A (zh) * 2022-06-28 2022-10-11 武汉众邦银行股份有限公司 一种多数据库间快速同步及异常回滚合并数据的方法
WO2023142610A1 (zh) * 2022-01-28 2023-08-03 马上消费金融股份有限公司 数据处理方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070038642A1 (en) * 2004-09-15 2007-02-15 Scott Durgin Method for providing extensible software components within a distributed synchronization system
CN109656934A (zh) * 2018-11-19 2019-04-19 武汉达梦数据库有限公司 基于日志解析的源端Oracle数据库DDL同步方法及设备
CN110909087A (zh) * 2019-11-28 2020-03-24 北京思特奇信息技术股份有限公司 一种关系型数据库在线ddl修改表结构的方法和装置
CN111241192A (zh) * 2019-12-31 2020-06-05 航天信息软件技术有限公司 一种数据同步方法
CN111241094A (zh) * 2019-12-31 2020-06-05 武汉达梦数据库有限公司 一种基于日志解析的数据库删除列同步方法和装置
WO2023142610A1 (zh) * 2022-01-28 2023-08-03 马上消费金融股份有限公司 数据处理方法和装置
CN115168347A (zh) * 2022-06-28 2022-10-11 武汉众邦银行股份有限公司 一种多数据库间快速同步及异常回滚合并数据的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991882A (zh) * 2023-09-28 2023-11-03 成都新希望金融信息有限公司 基于业务优先级的查询优化方法、装置和电子设备
CN116991882B (zh) * 2023-09-28 2023-12-01 成都新希望金融信息有限公司 基于业务优先级的查询优化方法、装置和电子设备
CN117056359A (zh) * 2023-10-09 2023-11-14 宁波银行股份有限公司 一种表格重建方法、装置、电子设备及存储介质
CN117056359B (zh) * 2023-10-09 2024-01-09 宁波银行股份有限公司 一种表格重建方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN116804994B (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
CN116804994B (zh) 数据同步方法、系统、装置、电子设备及存储介质
KR101149994B1 (ko) 외부 메타데이터 프로세싱 방법 및 시스템
US20200320091A1 (en) Schemaless to relational representation conversion
USRE48243E1 (en) Log based data replication from a source database to a target database
US11016932B2 (en) Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system
EP3026580A1 (en) Set-oriented visibility state retrieval scheme
JP2020502626A (ja) データベース・システムにおけるテスト・データの形成及び動作
CN109491989B (zh) 数据处理方法及装置、电子设备、存储介质
US9171051B2 (en) Data definition language (DDL) expression annotation
CN105556519A (zh) 对oracle存储器中数据库的存储器中快照存储的多版本并行控制
CN105556520A (zh) 在存储器中镜像盘中的数据以提高查询性能
US20090204570A1 (en) Method and apparatus for performing multi-stage table updates
US20070124302A1 (en) Mapping a Source File From a Source System To a Target System
CN101008952A (zh) 一种持久层生成方法及装置
JP2007066017A (ja) データベースに対するアクセスを制御するシステム、およびその方法
CN111046036A (zh) 数据同步方法、装置、系统及存储介质
CN114691704A (zh) 一种基于MySQL binlog的元数据同步方法
CN115168338A (zh) 数据处理方法、电子设备及存储介质
CN105353988A (zh) 一种元数据读写方法及装置
CN112860802B (zh) 数据库操作语句的处理方法、装置及电子设备
CN115952203B (zh) 数据查询方法、设备、系统及存储介质
US20070100869A1 (en) Transferring specifications and providing an integration point for external tools to access the specifications
Richardson Disambiguating databases
CA2322603C (en) Optimizing updatable scrollable cursors in database systems
CN116521142B (zh) 基于Presto扩展的时空大数据SQL引擎的实现方法

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