CN114647651A - 异构数据库同步方法及系统 - Google Patents

异构数据库同步方法及系统 Download PDF

Info

Publication number
CN114647651A
CN114647651A CN202210544742.5A CN202210544742A CN114647651A CN 114647651 A CN114647651 A CN 114647651A CN 202210544742 A CN202210544742 A CN 202210544742A CN 114647651 A CN114647651 A CN 114647651A
Authority
CN
China
Prior art keywords
log file
database
hash value
sql
synchronization
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.)
Pending
Application number
CN202210544742.5A
Other languages
English (en)
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.)
Tongri Yunlian Information Technology Suzhou Co ltd
Original Assignee
Tongri Yunlian Information Technology Suzhou 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 Tongri Yunlian Information Technology Suzhou Co ltd filed Critical Tongri Yunlian Information Technology Suzhou Co ltd
Priority to CN202210544742.5A priority Critical patent/CN114647651A/zh
Publication of CN114647651A publication Critical patent/CN114647651A/zh
Pending legal-status Critical Current

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据库的领域,尤其是涉及一种异构数据库同步方法及系统,其中方法包括建立同步配置表;对当前源数据库的日志文件进行哈希运算生成第一哈希值;判断预设的同步记录表中是否包含第一哈希值;当所述同步记录表中不包含第一哈希值时,比对源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集;依据所述日志文件增量集操作所述同步配置表得到目标数据库的配置信息,并依据日志文件增量集信息生成SQL序列;依据SQL序列和目标数据库的配置信息对目标数据库进行编译实现源数据库和目标数据库的同步。本申请具有便于提升异构数据库之间同步效率的效果。

Description

异构数据库同步方法及系统
技术领域
本申请涉及数据库的领域,尤其是涉及一种异构数据库同步方法及系统。
背景技术
异构数据库同步是一种将对源数据库所有操作适时完整地复制到目标数据库的技术。支持在两种不同数据库类型、不同数据库结构的异构数据库间进行数据同步。
目前的异构数据库同步技术中很多是使用触发器法进行变化数据的捕获,并将源数据库中变化的数据同步到目标数据库中。
在实现本申请的过程中,发明人发现上述技术至少存在以下问题:触发器法需要为每个需要同步的数据库表编写用于增、删、改操作的触发器,工作量巨大,从而使得异构数据库之间的同步效率较低。
发明内容
为了便于提升异构数据库之间的同步效率,本申请提供一种异构数据库同步方法及系统。
第一方面,本申请提供一种异构数据库同步方法,采用如下的技术方案:
一种异构数据库同步方法,包括:
建立同步配置表,所述同步配置表包括源数据库和目标数据库的配置信息,还包括所述源数据库和所述目标数据库中数据库表的配置信息;
对当前所述源数据库的日志文件进行哈希运算生成第一哈希值;
判断预设的同步记录表中是否包含所述第一哈希值,所述同步记录表用于按时序记录每次对所述源数据库的日志文件进行哈希运算得到的哈希值;
当所述同步记录表中不包含所述第一哈希值时,比对所述源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集;
依据所述日志文件增量集操作所述同步配置表得到所述目标数据库的所述配置信息,并依据所述日志文件增量集信息生成SQL序列;
依据所述SQL序列和所述目标数据库的所述配置信息对所述目标数据库进行编译实现所述源数据库和所述目标数据库的同步。
通过采用上述技术方案,先建立同步配置表以获取源数据库和目标数据库以及它们内部各个数据库表的配置信息,在服务器中设置有关于源数据库的日志文件,每次对源数据库进行操作后都会有新的日志文件生成,并对每次生成的日志文件进行哈希运算得到相应的哈希值,并将得到的哈希值均记录在同步记录表中,将最新日志对应的且尚未记录进同步记录表中的哈希值记为第一哈希值,进一步判断同步记录表中是否包含第一哈希值,若不包含,则说明最新的日志文件相较于上一次的日志文件有所改动,然后,将此次的日志文件和上一次的日志文件比较文本差异从而可得到日志文件增量集,接着将日志文件增量集转换成对应的SQL序列,最后使用SQL序列按照时序对目标数据库进行编译从而实现源数据库和目标数据库的同步,便于提升异构数据库之间的同步效率。
在一个具体的可实施方案中,所述数据库表的配置信息包括与所述源数据库和所述目标数据库中需同步的数据库表相对应的解析规则,且所述解析规则包括通用规则和业务专用算法。
通过采用上述技术方案,源数据库和目标数据库中相对应的数据库表作主键的对象不同,为了实现源数据库和目标数据库的同步,以某些主键作对象的数据库表需要使用通用规则,而有些以主键作对象的数据库表需要使用业务专用算法。
在一个具体的可实施方案中,所述判断预设的同步记录表中是否包含所述第一哈希值,包括:
获取在时序上最靠近所述第一哈希值的哈希值并记为第二哈希值;
判断所述第一哈希值与所述第二哈希值是否一致。
通过采用上述技术方案,通过判断第一哈希值和第二哈希值是否相同可以判断第一哈希值对应的日志文件相对于第二哈希值对应的日志文件是否有变化。
在一个具体的可实施方案中,所述当所述同步记录表中不包含所述第一哈希值时,比对所述源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集,包括:
当所述第一哈希值与所述第二哈希值不一致时,获取所述第一哈希值对应的日志文件并记为第一日志文件,还获取所述第二哈希值对应的日志文件并记为第二日志文件;
比较所述第一日志文件和第二日志文件得到第一日志文件相较于第二日志文件的变化,记为所述日志文件增量集。
通过采用上述技术方案,当第一哈希值与第二哈希值不一致时,说明第一日志文件和第二日志文件不同,然后通过比对的方式可以找出第一日志文件和第二日志文件不同之处,然后得到相应的日志文件增量集。
在一个具体的可实施方案中,所述日志文件增量集包括第一日志文件相较于第二日志文件的数据库定义部分、增加部分、删除部分以及修改部分,且所述数据库定义部分、所述增加部分、所述删除部分以及所述修改部分均按时序记录在所述日志文件增量集中;所述SQL序列包括若干按时序与所述数据库定义部分、所述增加部分、所述删除部分以及所述修改部分对应的SQL语句。
通过采用上述技术方案,日志文件增量集包含的第一日志文件相较于第二日志文件的数据库定义部分、增加部分、删除部分以及修改部分可以看出源数据库在一定的时间范围内发生的增、删、改的变化,通过了解这些增、删、改的变化便于接下来对目标数据库进行同步。
在一个具体的可实施方案中,所述依据所述日志文件增量集生成SQL序列后的步骤还包括:
将所述SQL序列中的SQL语句解析成语法树,并从所述语法树获取对应SQL语句的组成部分;
依据所述SQL语句的类型为所述SQL语句匹配相应的规则检查器;
通过所述规则检查器对相应的SQL语句的组成部分进行检查以判断所述SQL语句是否正确;
将正确的SQL语句组合成第二SQL序列。
通过采用上述技术方案,通过将SQL语句转换成对应的语法树,从便于使用规则检查器对生成的SQL语句进行检查,从而判断SQL语句是否正确。
第二方面,本申请提供一种异构数据库同步系统,采用如下的技术方案:
一种异构数据库同步系统,包括:
配置表建立模块100,用于建立同步配置表,所述同步配置表包括源数据库和目标数据库的配置信息,还包括源数据库和目标数据库中数据库表的配置信息;
第一哈希值生成模块200,用于对当前所述源数据库的日志文件进行哈希运算生成第一哈希值;
哈希值判断模块300,用于判断预设的同步记录表中是否包含所述第一哈希值,所述同步记录表用于按时序记录每次对所述源数据库的日志文件进行哈希运算得到的哈希值;
日志文件增量集获取模块400,用于当所述同步记录表中不包含所述第一哈希值时,比对所述源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集;
SQL序列生成模块500,用于依据所述日志文件增量集操作所述同步配置表得到所述目标数据库的所述配置信息,并依据所述日志文件增量集和所述目标数据库的所述配置信息生成SQL序列;
编译同步模块600,用于依据所述SQL序列和所述目标数据库的所述配置信息对所述目标数据库进行编译实现所述源数据库和所述目标数据库的同步。
通过采用上述技术方案,先建立同步配置表以获取源数据库和目标数据库以及它们内部各个数据库表的配置信息,在服务器中设置有关于源数据库的日志文件,每次对源数据库进行操作后都会有新的日志文件生成,并对每次生成的日志文件进行哈希运算得到相应的哈希值,并将得到的哈希值均记录在同步记录表中,将最新日志对应的且尚未记录进同步记录表中的哈希值记为第一哈希值,进一步判断同步记录表中是否包含第一哈希值,若不包含,则说明最新的日志文件相较于上一次的日志文件有所改动,然后,将此次的日志文件和上一次的日志文件比较文本差异从而得到日志文件增量集,接着将日志文件增量集转换成对应的SQL序列,最后使用SQL序列按照时序对目标数据库进行编译从而实现源数据库和目标数据库的同步。
第三方面,本申请提供一种计算机设备,采用如下技术方案:包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行如上述任意一种异构数据库同步方法的计算机程序。
通过采用上述技术方案,先建立同步配置表以获取源数据库和目标数据库以及它们内部各个数据库表的配置信息,在服务器中设置有关于源数据库的日志文件,每次对源数据库进行操作后都会有新的日志文件生成,并对每次生成的日志文件进行哈希运算得到相应的哈希值,并将得到的哈希值均记录在同步记录表中,将最新日志对应的且尚未记录进同步记录表中的哈希值记为第一哈希值,进一步判断同步记录表中是否包含第一哈希值,若不包含,则说明最新的日志文件相较于上一次的日志文件有所改动,然后,将此次的日志文件和上一次的日志文件比较文本差异从而得到日志文件增量集,接着将日志文件增量集转换成对应的SQL序列,最后使用SQL序列按照时序对目标数据库进行编译从而实现源数据库和目标数据库的同步。
第四方面,本申请提供一种计算机可读存储介质,采用如下技术方案:存储有能够被处理器加载并执行上述任意一种异构数据库同步方法的计算机程序。
通过采用上述技术方案,先建立同步配置表以获取源数据库和目标数据库以及它们内部各个数据库表的配置信息,在服务器中设置有关于源数据库的日志文件,每次对源数据库进行操作后都会有新的日志文件生成,并对每次生成的日志文件进行哈希运算得到相应的哈希值,并将得到的哈希值均记录在同步记录表中,将最新日志对应的且尚未记录进同步记录表中的哈希值记为第一哈希值,进一步判断同步记录表中是否包含第一哈希值,若不包含,则说明最新的日志文件相较于上一次的日志文件有所改动,然后,将此次的日志文件和上一次的日志文件比较文本差异从而得到日志文件增量集,接着将日志文件增量集转换成对应的SQL序列,最后使用SQL序列按照时序对目标数据库进行编译从而实现源数据库和目标数据库的同步。
第五方面,本申请提供一种信息数据处理终端,采用如下技术方案:所述信息数据处理终端执行上述一种异构数据库同步方法。
通过采用上述技术方案,先建立同步配置表以获取源数据库和目标数据库以及它们内部各个数据库表的配置信息,在服务器中设置有关于源数据库的日志文件,每次对源数据库进行操作后都会有新的日志文件生成,并对每次生成的日志文件进行哈希运算得到相应的哈希值,并将得到的哈希值均记录在同步记录表中,将最新日志对应的且尚未记录进同步记录表中的哈希值记为第一哈希值,进一步判断同步记录表中是否包含第一哈希值,若不包含,则说明最新的日志文件相较于上一次的日志文件有所改动,然后,将此次的日志文件和上一次的日志文件比较文本差异从而得到日志文件增量集,接着将日志文件增量集转换成对应的SQL序列,最后使用SQL序列按照时序对目标数据库进行编译从而实现源数据库和目标数据库的同步。
综上所述,本申请包括以下至少一种有益技术效果:
1.通过判断第一哈希值和第二哈希值的异同从而知晓日志文件是否发生变化,进一步找出日志文件发生变化的部分,也即日志文件增量集,然后依据日志文件增量集以及目标数据库的配置信息生成SQL序列,然后通过SQL序列对目标数据库进行编译,而不需要为每个需要同步的数据库表编写增、删、改触发器,如此便于提升异构数据库之间的同步效率。
2.通过判断第一哈希值和第二哈希值是否相同可以判断第一哈希值对应的日志文件相对于第二哈希值对应的日志文件是否有变化。
3.日志文件增量集包含的第一日志文件相较于第二日志文件的增加部分、删除部分以及修改部分可以看出源数据库在一定的时间范围内发生的增、删、改的变化,通过了解这些增、删、改的变化便于接下来对目标数据库进行同步。
附图说明
图1是本申请实施例1中一种异构数据库同步方法的流程示意图。
图2是本申请实施例2中一种异构数据库同步系统的结构框图。
附图标记说明:100、配置表建立模块;200、第一哈希值生成模块;300、哈希值判断模块;400、日志文件增量集获取模块;500、SQL序列生成模块;600、编译同步模块。
具体实施方式
以下结合附图1-2对本申请作进一步详细说明。
实施例1
本申请实施例1公开了一种异构数据库同步方法。参照图1,异构数据库同步方法包括:
S100、建立同步配置表,同步配置表包括源数据库和目标数据库的配置信息,还包括源数据库和目标数据库中数据库表的配置信息。
进行源数据库和目标数据库的数据同步前需要先将源数据库和目标数据库的配置数据以及源数据库和目标数据库的内的数据库表的配置数据均写入同步配置表中,如此不仅便于对源数据库和目标数据库进行数据同步还便于对源数据库和目标数据库的配置数据进行维护。
源数据库和目标数据库的配置数据包括源数据库和目标数据库的服务器IP、端口、SID(数据库的ID)、用户名以及密码;源数据库和目标数据库中的数据库表的配置数据包括数据库表的表名、主键、外键、自增键;表字段数据类型、数据精度、日期格式以及解析规则。
上述数据库表的解析规则包括:通用规则和专用业务算法,源数据库和目标数据库中的数据库表对应一种解析规则;举例来说,源数据库中的数据库表均有其自己的ID,有些数据库表在源数据库是用的自增键做主键,若直接同步会在目标数据库也自动生成一个ID,如此源数据库和目标数据库中数据库表的ID就不一致,这样会导致数据也无法同步。这样的数据库表就需要使用业务专用算法来处理从而使源数据库和目标数据库中对应的数据库表对应同一个ID。
S200、对当前源数据库的日志文件进行哈希运算生成第一哈希值。
为了便于了解对数据库执行的操作,源数据库有其对应的日志文件。在实施中,为了便于实现源数据库与目标数据库的数据同步,需要每隔预设的时间间隔扫描一次源数据库的日志文件,扫描的过程也即每隔预设的时间间隔对源数据库的日志文件使用安全哈希算法进行一次哈希运算,进而得到对应的哈希值,将每次计算得到的哈希值按时序记录在预设的同步记录表中,同步记录表中的哈希值为40位16进制字符的哈希值。假设在当前时刻对源数据库的日志文件进行哈希运算,则将得到的对应哈希值记为第一哈希值,还将第一哈希值也按时序写入同步记录表中。
S300、判断预设的同步记录表中是否包含第一哈希值,同步记录表用于按时序记录每次对源数据库的日志文件进行哈希运算得到的哈希值。
具体的,S300包括以下步骤:
S301、获取在时序上最靠近第一哈希值的哈希值并记为第二哈希值。
同步记录表按照时序记录有包括第一哈希值在内的若干哈希值,从同步记录表选取在时序最靠近第一哈希值的哈希值并记为第二哈希值。
S302、判断第一哈希值与第二哈希值是否一致。
从同步记录表中获取第一哈希值和第二哈希值,然后进一步判断第一哈希值和第二哈希值是否一致,然后得到判断结果。
每个哈希值均对应源数据库在一个时间节点上的日志文件,若两个时间节点上的日志文件相同,则两个时间节点上日志文件对应的两个哈希值也相同;若两个时间节点上的日志文件不同,则两个时间节点上日志文件对应的两个哈希值也不相同。
S400、当同步记录表中不包含第一哈希值时,比对源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集。
具体的,S400包括以下步骤:
S401、当第一哈希值与第二哈希值不一致时,获取第一哈希值对应的日志文件并记为第一日志文件,还获取第二哈希值对应的日志文件并记为第二日志文件。
在实施中,由于每个哈希值均有其对应的日志文件,且将第一哈希值对应的日志文件记为第一日志文件,还将第二哈希值对应的日志文件记为第二日志文件。
通过S302步骤得到的判断结果有两种情况:
第一种,第一哈希值和第二哈希值一致,此时说明第一日志文件相对于第二日志文件并没有发生变化,也说明与第一日志文件对应的源数据库相较于与第二日志文件对应的源数据库未发生的变化,也即在第一日志文件和第二日志文件之间的预设时间间隔内,源数据库未被操作过。
第二种,第一哈希值和第二哈希值不同,此时说明第一日志文件相于第二日志文件发生变化,也说明与第一日志文件对应的源数据库相较于与第二日志文件对应的源数据库发生变化,也即在第一日志文件和第二日志文件之间的预设时间间隔内,源数据库被操作过。
当判断出第一哈希值和第二哈希值不同时,获取并暂存第一日志文件和第二日志文件。
S402、比较第一日志文件和第二日志文件得到第一日志文件相较于第二日志文件的变化,记为日志文件增量集。
在判断出第一哈希值和第二哈希值不同的情况下,通过文本比对的方式对第一日志文件和第二日志文件进行比对,然后将第一日志文件相对于第二日志文件有变化的部分复制并暂存,将第一日志文件相对于第二日志文件有变化的部分记为日志文件增量集。
S500、依据日志文件增量集操作同步配置表得到目标数据库的配置信息,并依据日志文件增量集和目标数据库的配置信息生成SQL序列。
在第一哈希值和第二哈希值不同的情况下,则说明第一日志文件相对于第二日志文件有变化,这种变化也即第一日志文件多出第二日志文件的部分,在实施中,这种多出的部分也即日志文件增量集,日志文件增量集可包括:数据库定义部分、增加部分、删除部分以及修改部分,所谓数据库定义部分也即对数据库结构以及操作方法的定义,比如创建或者删除数据库以及创建或者删除数据库表;所谓增加部分也即在第一日志文件记录的在源数据库中增加的内容,比如增加的数据或者字段等内容;所谓删除部分也即第一日志文件记录的在源数据库中删除的内容,比如删除的数据等内容;所谓修改部分也即在第一日志文件记录的在源数据库中修改的内容。
一个日志文件增量集中按时序包含有上述数据库的定义部分、增加部分、删除部分以及修改部分,通过对一个日志文件增量集中的增加部分、删除部分以及修改部分进行解析得到SQL语句组成部分。SQL语句组成部分包括增加操作,比如“insert”、“delete”以及“update”;还包括操作目标,比如一个数据库表的某一列;还包括操作对象,比如某个数据库表的表名;还包括操作条件,比如“where”条件语句。
对上述数据库定义部分进行解析可以获取若干相应的DDL SQL语句;
获取SQL语句组成部分后,还需要进一步查询同步配置表以获取目标数据库中待同步的数据库表的配置信息,若一个待同步的数据库表的解析规则为通用规则,则使用预设的通用算法解析器对日志文件增量集中的增加部分、删除部分以及修改部分进行解析得到第一DDL SQL语句;若一个待同步的数据库表的解析规则为业务专用算法,则使用预设的业务专用算法解析器对日志文件增量集中的增加部分、删除部分以及修改部分进行解析得到第二DDL SQL语句,且将第一DDL SQL语句和第二DDL SQL语句统称为DDL SQL语句。
按照时序排列若干DDL SQL语句;且将按照时序排列的若干DDL SQL语句记为第一SQL序列。
S500步骤后还包括以下若干步骤:
S510、将第一SQL序列中的SQL语句解析成语法树,并从语法树获取对应SQL语句的组成部分。
通过解析日志文件增量集获取SQL语句组成部分,依据SQL语句组成部分获取组成第一SQL序列的SQL语句,但是通过此种方式获取的SQL语句并不一定是正确的,为了提高通过上述方式获取的SQL语句的正确率,需要对第一SQL序列中的SQL语句进行检查。
按照时序将第一SQL序列中的SQL语句解析成对应的语法树,语法树包含对应SQL语句的SQL语句组成部分,也即语法树包含SQL语句的操作类型、操作目标、操作对象以及操作条件。
S520、依据SQL语句的类型为SQL语句匹配相应的规则检查器。
通过SQL语句可以获取SQL语句的类型,比如,若一个SQL语句的操作信息为“insert”,则SQL语句的类型为“增加”。
若一个SQL语句的操作信息为“insert”,则SQL语句的类型为“增加”,进一步为该SQL语句匹配insert规则检查器;
若一个SQL语句的操作信息为“delete”,则SQL语句的类型为“删除”,进一步为该SQL语句匹配delete规则检查器;
若一个SQL语句的操作信息为“update”,则SQL语句的类型为“修改”,进一步为该SQL语句匹配update规则检查器;
通过上述insert规则检查器、delete规则检查器以及update规则检查器可对对应的SQL语句进行检查。
S530、通过上述三种规则检查器对相应的SQL语句的组成部分进行检查以判断SQL语句是否正确。
S540、将正确的SQL语句组合成第二SQL序列。
当通过规则检查器判断对应的SQL语句正确后,将SQL语句按照时序组合成第二SQL序列。
S600、依据SQL序列对目标数据库进行编译实现源数据库和目标数据库的同步。
通过第二SQL序列中的SQL语句按时序对目标数据库执行编译操作,这样可以实现源数据库和目标数据库的同步。
图1为一个实施例中异构数据库同步方法的流程示意图。应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行;除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行;并且图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
实施例2
本申请实施例2公开了一种异构数据库同步系统。参照图2,异构数据库同步系统包括:
配置表建立模块100,用于建立同步配置表,同步配置表包括源数据库和目标数据库的配置信息,还包括源数据库和目标数据库中数据库表的配置信息;
第一哈希值生成模块200,用于对当前源数据库的日志文件进行哈希运算生成第一哈希值;
哈希值判断模块300,用于判断预设的同步记录表中是否包含第一哈希值,同步记录表用于按时序记录每次对源数据库的日志文件进行哈希运算得到的哈希值;
日志文件增量集获取模块400,用于当同步记录表中不包含第一哈希值时,比对源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集;
SQL序列生成模块500,用于依据日志文件增量集操作同步配置表得到目标数据库的配置信息,并依据日志文件增量集和目标数据库的配置信息生成SQL序列;
编译同步模块600,用于依据SQL序列和目标数据库的配置信息对目标数据库进行编译实现源数据库和目标数据库的同步。
实施例3
在本实施例3中公开了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述一种异构数据库同步方法的步骤。此处一种异构数据库同步方法的步骤可以是上述各个实施例的一种异构数据库同步方法中的步骤。
实施例4
在本实施例4中公开了一种计算机可读存储介质,其存储有能够被处理器加载并执行如上述一种异构数据库同步方法的计算机程序,该计算机可读存储介质例如包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
实施例5
在本实施例5中公开了信息数据处理终端,该信息数据处理终端能够执行上述的异构数据库同步方法。
本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。

Claims (10)

1.一种异构数据库同步方法,其特征在于:包括:
建立同步配置表,所述同步配置表包括源数据库和目标数据库的配置信息,还包括所述源数据库和所述目标数据库中数据库表的配置信息;
对当前所述源数据库的日志文件进行哈希运算生成第一哈希值;
判断预设的同步记录表中是否包含所述第一哈希值,所述同步记录表用于按时序记录每次对所述源数据库的日志文件进行哈希运算得到的哈希值;
当所述同步记录表中不包含所述第一哈希值时,比对所述源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集;
依据所述日志文件增量集操作所述同步配置表得到所述目标数据库的所述配置信息,并依据所述日志文件增量集和所述目标数据库的所述配置信息生成SQL序列;
依据所述SQL序列和所述目标数据库的所述配置信息对所述目标数据库进行编译实现所述源数据库和所述目标数据库的同步。
2.根据权利要求1所述的异构数据库同步方法,其特征在于:所述数据库表的配置信息包括与所述源数据库和所述目标数据库中需同步的数据库表相对应的解析规则,且所述解析规则包括通用规则和业务专用算法。
3.根据权利要求2所述的异构数据库同步方法,其特征在于:所述判断预设的同步记录表中是否包含所述第一哈希值,包括:
获取在时序上最靠近所述第一哈希值的哈希值并记为第二哈希值;
判断所述第一哈希值与所述第二哈希值是否一致。
4.根据权利要求3所述的异构数据库同步方法,其特征在于:所述当所述同步记录表中不包含所述第一哈希值时,比对所述源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集,包括:
当所述第一哈希值与所述第二哈希值不一致时,获取所述第一哈希值对应的日志文件并记为第一日志文件,还获取所述第二哈希值对应的日志文件并记为第二日志文件;
比较所述第一日志文件和第二日志文件得到第一日志文件相较于第二日志文件的变化,记为所述日志文件增量集。
5.根据权利要求4所述的异构数据库同步方法,其特征在于:所述日志文件增量集包括第一日志文件相较于第二日志文件的数据库定义部分、增加部分、删除部分以及修改部分,且所述数据库定义部分、所述增加部分、所述删除部分以及所述修改部分均按时序记录在所述日志文件增量集中;所述SQL序列包括若干按时序与所述数据库定义部分、所述增加部分、所述删除部分以及所述修改部分对应的SQL语句。
6.根据权利要求2所述的异构数据库同步方法,其特征在于:所述依据所述日志文件增量集生成SQL序列后的步骤还包括:
将所述SQL序列中的SQL语句解析成语法树,并从所述语法树获取对应SQL语句的组成部分;
依据所述SQL语句的类型为所述SQL语句匹配相应的规则检查器;
通过所述规则检查器对相应的SQL语句的组成部分进行检查以判断所述SQL语句是否正确;
将正确的SQL语句组合成第二SQL序列。
7.一种异构数据库同步系统,其特征在于:包括:
配置表建立模块(100),用于建立同步配置表,所述同步配置表包括源数据库和目标数据库的配置信息,还包括源数据库和目标数据库中数据库表的配置信息;
第一哈希值生成模块(200),用于对当前所述源数据库的日志文件进行哈希运算生成第一哈希值;
哈希值判断模块(300),用于判断预设的同步记录表中是否包含所述第一哈希值,所述同步记录表用于按时序记录每次对所述源数据库的日志文件进行哈希运算得到的哈希值;
日志文件增量集获取模块(400),用于当所述同步记录表中不包含所述第一哈希值时,比对所述源数据库当前的日志文件和在时序上的前一日志文件得到日志文件增量集;
SQL序列生成模块(500),用于依据所述日志文件增量集操作所述同步配置表得到所述目标数据库的所述配置信息,并依据所述日志文件增量集和所述目标数据库的所述配置信息生成SQL序列;
编译同步模块(600),用于依据所述SQL序列和所述目标数据库的所述配置信息对所述目标数据库进行编译实现所述源数据库和所述目标数据库的同步。
8.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-6任意一项所述的异构数据库同步方法。
9.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1-6任意一项所述的异构数据库同步方法。
10.一种信息数据处理终端,其特征在于,所述信息数据处理终端执行如权利要求1-6任意一项所述的异构数据库同步方法。
CN202210544742.5A 2022-05-19 2022-05-19 异构数据库同步方法及系统 Pending CN114647651A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210544742.5A CN114647651A (zh) 2022-05-19 2022-05-19 异构数据库同步方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210544742.5A CN114647651A (zh) 2022-05-19 2022-05-19 异构数据库同步方法及系统

Publications (1)

Publication Number Publication Date
CN114647651A true CN114647651A (zh) 2022-06-21

Family

ID=81996865

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210544742.5A Pending CN114647651A (zh) 2022-05-19 2022-05-19 异构数据库同步方法及系统

Country Status (1)

Country Link
CN (1) CN114647651A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599858A (zh) * 2022-09-14 2023-01-13 昆仑数智科技有限责任公司(Cn) 数据库同步方法、装置、设备及介质
CN116506449A (zh) * 2023-06-26 2023-07-28 新亿成科技(江苏)有限公司 通信网络节点信息同步方法、系统、设备及存储介质
CN117708094A (zh) * 2023-12-26 2024-03-15 行吟信息科技(武汉)有限公司 数据处理方法、装置、电子设备和存储介质
CN117971984A (zh) * 2024-03-29 2024-05-03 天津南大通用数据技术股份有限公司 分布式数据库集群间表数据的同步方法及系统
CN118445120A (zh) * 2024-05-14 2024-08-06 深圳计算科学研究院 数据库集群的脑裂修复方法、装置、设备及介质
CN118585457A (zh) * 2024-08-02 2024-09-03 湖南长银五八消费金融股份有限公司 Sql脚本同步执行测试环境的方法、装置、设备及介质
CN118585457B (zh) * 2024-08-02 2024-10-22 湖南长银五八消费金融股份有限公司 Sql脚本同步执行测试环境的方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761318A (zh) * 2014-01-27 2014-04-30 中国工商银行股份有限公司 一种关系型异构数据库数据同步的方法及系统
CN106844143A (zh) * 2016-12-27 2017-06-13 微梦创科网络科技(中国)有限公司 一种日志去重处理方法及装置
CN111597257A (zh) * 2020-05-09 2020-08-28 远光软件股份有限公司 数据库的同步方法、装置、存储介质及终端
CN113553373A (zh) * 2021-06-11 2021-10-26 北京旷视科技有限公司 数据同步方法及装置、存储介质及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761318A (zh) * 2014-01-27 2014-04-30 中国工商银行股份有限公司 一种关系型异构数据库数据同步的方法及系统
CN106844143A (zh) * 2016-12-27 2017-06-13 微梦创科网络科技(中国)有限公司 一种日志去重处理方法及装置
CN111597257A (zh) * 2020-05-09 2020-08-28 远光软件股份有限公司 数据库的同步方法、装置、存储介质及终端
CN113553373A (zh) * 2021-06-11 2021-10-26 北京旷视科技有限公司 数据同步方法及装置、存储介质及电子设备

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599858A (zh) * 2022-09-14 2023-01-13 昆仑数智科技有限责任公司(Cn) 数据库同步方法、装置、设备及介质
CN116506449A (zh) * 2023-06-26 2023-07-28 新亿成科技(江苏)有限公司 通信网络节点信息同步方法、系统、设备及存储介质
CN116506449B (zh) * 2023-06-26 2023-09-26 新亿成科技(江苏)有限公司 通信网络节点信息同步方法、系统、设备及存储介质
CN117708094A (zh) * 2023-12-26 2024-03-15 行吟信息科技(武汉)有限公司 数据处理方法、装置、电子设备和存储介质
CN117971984A (zh) * 2024-03-29 2024-05-03 天津南大通用数据技术股份有限公司 分布式数据库集群间表数据的同步方法及系统
CN118445120A (zh) * 2024-05-14 2024-08-06 深圳计算科学研究院 数据库集群的脑裂修复方法、装置、设备及介质
CN118585457A (zh) * 2024-08-02 2024-09-03 湖南长银五八消费金融股份有限公司 Sql脚本同步执行测试环境的方法、装置、设备及介质
CN118585457B (zh) * 2024-08-02 2024-10-22 湖南长银五八消费金融股份有限公司 Sql脚本同步执行测试环境的方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
CN114647651A (zh) 异构数据库同步方法及系统
US6560598B2 (en) Internal database validation
US8688659B2 (en) Method for indexed-field based difference detection and correction
KR101917807B1 (ko) 원본 데이터베이스의 부하를 최소화한 데이터 정합성 검증 방법 및 시스템
CN103514223A (zh) 一种数据仓库数据同步方法和系统
CN109408589B (zh) 数据同步方法及装置
US11809406B2 (en) Event records in a log file
CN111324607B (zh) Sql语句复用方法和装置
CN111143368A (zh) 一种关系型数据库数据对比方法及系统
CN112860265B (zh) 一种源代码数据库操作异常检测方法及装置
CN110990055B (zh) 一种基于程序分析的Pull Request功能分类方法
CN113420026A (zh) 数据库表结构变更方法、装置、设备及存储介质
CN115391457B (zh) 跨数据库的数据同步方法、装置及存储介质
JP2021140430A (ja) データベースマイグレーション方法、データベースマイグレーションシステム、及びデータベースマイグレーションプログラム
CN116595051A (zh) 时序数据库处理方法及装置、介质、设备
CN116361287A (zh) 路径解析方法、装置以及系统
CN114168122A (zh) 数据脚本的生成方法及装置
CN112749197B (zh) 数据分片刷新方法、装置、设备及存储介质
CN114490865A (zh) 数据库同步方法、装置、设备及计算机存储介质
CN114153857A (zh) 数据同步方法、数据同步装置和计算机可读存储介质
CN113448965A (zh) 一种全表扫描的结构化查询语句的确定方法、装置和设备
CN112732331B (zh) 一种代码历史记录恢复方法、系统及介质
Bras et al. Robust FCS parsing: Exploring 211,359 public files
CN111079199B (zh) 基于区块链技术的企业信用数据截图防篡改方法
CN115599858A (zh) 数据库同步方法、装置、设备及介质

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20220621

RJ01 Rejection of invention patent application after publication