CN112925849A - 数据库同步的方法、装置、电子设备及计算机存储介质 - Google Patents
数据库同步的方法、装置、电子设备及计算机存储介质 Download PDFInfo
- Publication number
- CN112925849A CN112925849A CN202110211202.0A CN202110211202A CN112925849A CN 112925849 A CN112925849 A CN 112925849A CN 202110211202 A CN202110211202 A CN 202110211202A CN 112925849 A CN112925849 A CN 112925849A
- Authority
- CN
- China
- Prior art keywords
- database
- information
- incremental
- statement
- objects
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 230000006870 function Effects 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 16
- 238000000605 extraction Methods 0.000 claims description 15
- 230000002776 aggregation Effects 0.000 claims description 12
- 238000004220 aggregation Methods 0.000 claims description 12
- 238000012217 deletion Methods 0.000 claims description 11
- 230000037430 deletion Effects 0.000 claims description 11
- 239000000284 extract Substances 0.000 claims description 8
- 238000012986 modification Methods 0.000 abstract description 16
- 230000004048 modification Effects 0.000 abstract description 16
- 230000008569 process Effects 0.000 description 21
- 230000001360 synchronised effect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 7
- 230000004931 aggregating effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring 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)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库同步的方法、装置、电子设备及计算机存储介质。其中,数据库同步的方法包括:分别在第一数据库和第二数据库中,根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合;其中,每种数据库对象的信息模型用于表征对应种类数据库对象的信息结构;比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于第二数据库同步第一数据库的增量脚本;针对第一数据库执行增量脚本。根据本发明实施例,能够解决通过记录修改操作的方法执行增量同步时,由于未能完全记录所有修改操作导致同步失败的问题,可以实现更稳定的同步数据库的技术效果。
Description
技术领域
本发明属于数据库技术领域,尤其涉及一种数据库同步的方法、装置、电子设备及计算机存储介质。
背景技术
在源数据库和目标数据库之间进行数据库同步时,可以采用增量同步的方法。增量同步是针对源数据库与目标数据库中的不同,对源数据库进行修改,使源数据库同步为与目标数据库一致。
为了实现增量同步,相关技术中提供了一种方法,在目标数据库所在的服务器上挂在一个服务,用于记录目标数据库的每一次修改操作,在对源数据库进行同步时,根据服务记录的修改操作对源数据库执行相同的修改操作。
但是,如果该服务的进程被目标数据库服务器关闭,或者提供该服务的服务器出现问题,导致在目标数据库的修改期间没有记录到修改操作,则会导致对源数据库进行同步时,无法达到与目标数据库一致的效果,导致同步失败。
发明内容
本发明实施例提供一种数据库同步的方法、装置、电子设备及计算机存储介质,能够解决相关技术中通过记录修改操作的方法执行增量同步时,由于未能完全记录所有修改操作导致同步失败的问题。
一方面,本发明实施例提供一种数据库同步的方法,该方法包括:分别在第一数据库和第二数据库中,根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合;其中,每种数据库对象的信息模型用于表征对应种类数据库对象的信息结构;比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于第二数据库同步第一数据库的增量脚本;针对第一数据库执行增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,每个级别对应有不同的同步顺序;相应的,在比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合时,按照同步顺序进行比对;根据比对得到的差异生成基于第二数据库修改第一数据库的增量脚本,包括:创建增量脚本;根据按照同步顺序比对得到的差异,生成用于修改第一数据库中每个数据库对象的增量语句,并输出至增量脚本。
在一种可能的实施方式中,多个级别包括系统级、表级和数据级,其中,系统级的数据库对象至少包括以下之一:数据库模式、数据库类型、数据库序列、数据库函数、数据库聚集;表级的数据库对象至少包括以下之一:数据库表对象、数据库表字段、数据库表触发器、数据库表约束、数据库表索引;数据级的数据库对象至少包括数据库表数据。
在一种可能的实施方式中,比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于第二数据库同步第一数据库的增量脚本,包括:根据每个数据库对象的信息集合确定对应数据库对象的数据库对象名称;针对第一数据库中的数据库对象和第二数据库中的数据库对象,按照数据库对象名称进行匹配;根据匹配的结果,针对第一数据库相对于第二数据库多余的数据库对象、缺少的数据库对象、以及相匹配的数据库对象,分别生成对应的增量语句,并将生成的增量语句输出至增量脚本。
在一种可能的实施方式中,根据匹配的结果,针对第一数据库相对于第二数据库多余的数据库对象、缺少的数据库对象、以及相匹配的数据库对象,分别生成对应的增量语句,并将生成的增量语句输出至增量脚本,包括:针对第一数据库中多余的数据库对象,生成用于删除的增量语句,并输出至增量脚本;针对第一数据库中缺少的数据库对象,生成用于新增的增量语句,并输出至增量脚本;针对第一数据库和第二数据库中相匹配的数据库对象,根据对相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括系统级和表级,根据对相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至增量脚本,包括:在第一数据库中与第二数据库相匹配的数据库对象为系统级的数据库对象或表级的数据库对象的情况下:针对第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的增量语句,并输出至增量脚本;针对第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至增量脚本;针对第一数据库和第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于先删除第一数据库中数据库对象的信息集合中的对应信息、再新增第二数据库中相匹配数据库对象的信息集合中的不同信息的增量语句,并输出至增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括数据级,根据对相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至增量脚本,包括:在第一数据库中与第二数据库相匹配的数据库对象为数据级的数据库对象的情况下:针对第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的目标增量语句,并缓存目标增量语句;针对第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至增量脚本;针对第一数据库和第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于修改第四数据库对象的信息集合中对应信息的增量语句,并输出至增量脚本;在比对完具有相互引用关系的多个数据库表中的所有数据级的数据库对象之后,向增量脚本输出缓存的目标增量语句。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括数据级,数据级的数据库对象的信息集合中包括多个字段的内容;针对数据级的数据库对象,根据每个数据库对象的信息集合确定对应数据库对象的数据库对象名称,包括:拼接多个字段的内容,得到数据库对象名称。
在一种可能的实施方式中,在数据库表数据包括大对象类型表数据的情况下,针对大对象类型表数据,根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合,包括:调用大对象类型表数据的获取接口,以查询大对象类型表数据的数据内容;在大对象类型表数据的数据内容中,根据信息模型提取信息,得到大对象类型表数据的数据库对象的信息集合。
在一种可能的实施方式中,在分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息之前,该方法还包括:比对第一数据库的系统版本和第二数据库的系统版本;其中,在第一数据库的系统版本与第二数据库的系统版本相同的情况下,分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息。
另一方面,本发明实施例提供了一种数据库同步的装置,该装置包括:提取模块,用于分别在第一数据库和第二数据库中,根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合;其中,每种数据库对象的信息模型用于表征对应种类数据库对象的信息结构;第一执行模块,用于比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于第二数据库同步第一数据库的增量脚本;第二执行模块,用于针对第一数据库执行增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,每个级别对应有不同的同步顺序;相应的,在第一执行模块执行比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合时,按照同步顺序进行比对;第一执行模块包括:创建单元,用于创建增量脚本;第一生成单元,用于根据按照同步顺序比对得到的差异,生成用于修改第一数据库中每个数据库对象的增量语句,并输出至增量脚本。
在一种可能的实施方式中,多个级别包括系统级、表级和数据级,其中,系统级的数据库对象至少包括以下之一:数据库模式、数据库类型、数据库序列、数据库函数、数据库聚集;表级的数据库对象至少包括以下之一:数据库表对象、数据库表字段、数据库表触发器、数据库表约束、数据库表索引;数据级的数据库对象至少包括数据库表数据。
在一种可能的实施方式中,第一执行模块包括:确定单元,用于根据每个数据库对象的信息集合确定对应数据库对象的数据库对象名称;匹配单元,用于针对第一数据库中的数据库对象和第二数据库中的数据库对象,按照数据库对象名称进行匹配;第二生成单元,用于根据匹配的结果,针对第一数据库相对于第二数据库多余的数据库对象、缺少的数据库对象、以及相匹配的数据库对象,分别生成对应的增量语句,并将生成的增量语句输出至增量脚本。
在一种可能的实施方式中,第二生成单元包括:第三生成单元,用于针对第一数据库中多余的数据库对象,生成用于删除的增量语句,并输出至增量脚本;第四生成单元,用于针对第一数据库中缺少的数据库对象,生成用于新增的增量语句,并输出至增量脚本;第五生成单元,用于针对第一数据库和第二数据库中相匹配的数据库对象,根据对相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括系统级和表级,在第一数据库中与第二数据库相匹配的数据库对象为系统级的数据库对象或表级的数据库对象的情况下,第五生成单元包括:第六生成单元,用于针对第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的增量语句,并输出至增量脚本;第七生成单元,用于针对第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至增量脚本;第八生成单元,用于针对第一数据库和第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于先删除第一数据库中数据库对象的信息集合中的对应信息、再新增第二数据库中相匹配数据库对象的信息集合中的不同信息的增量语句,并输出至增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括数据级,在第一数据库中与第二数据库相匹配的数据库对象为数据级的数据库对象的情况下,第五生成单元包括:第九生成单元,用于针对第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的目标增量语句,并缓存目标增量语句;第十生成单元,用于针对第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至增量脚本;第十一生成单元,用于针对第一数据库和第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于修改第四数据库对象的信息集合中对应信息的增量语句,并输出至增量脚本;输出单元,用于在比对完具有相互引用关系的多个数据库表中的所有数据级的数据库对象之后,向增量脚本输出缓存的目标增量语句。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括数据级,数据级的数据库对象的信息集合中包括多个字段的内容;针对数据级的数据库对象,确定单元包括:拼接单元,用于拼接多个字段的内容,得到数据库对象名称。
在一种可能的实施方式中,在数据库表数据包括大对象类型表数据的情况下,针对大对象类型表数据,提取模块包括:调用单元,用于调用大对象类型表数据的获取接口,以查询大对象类型表数据的数据内容;提取单元,用于在大对象类型表数据的数据内容中,根据信息模型提取信息,得到大对象类型表数据的数据库对象的信息集合。
在一种可能的实施方式中,该装置还包括:比对模块,用于在提取模块分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息之前,比对第一数据库的系统版本和第二数据库的系统版本;其中,在第一数据库的系统版本与第二数据库的系统版本相同的情况下,提取模块用于分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息。
再一方面,本发明实施例提供了一种电子设备,该电子设备包括:处理器以及存储有计算机程序指令的存储器;处理器执行计算机程序指令时实现如本发明实施例的数据库同步的方法。
再一方面,本发明实施例提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如本发明实施例的数据库同步的方法。
本发明实施例的数据库同步的方法、装置、设备及计算机存储介质,能够基于预设的数据库对象的信息模型,在两个数据库中提取出数据库对象的信息集合,进而,根据两个数据库中信息集合的比对,得到用于同步的增量脚本,这样,通过两个数据库的对比进行同步,可以解决相关技术中通过记录修改操作的方法执行增量同步时,由于未能完全记录所有修改操作导致同步失败的问题,能够提高数据库同步过程的稳定性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的数据库同步的方法的流程示意图;
图2是本发明另一个实施例提供的数据库同步的方法的流程示意图;
图3是本发明另一个实施例提供的数据库同步的装置的结构示意图;
图4是本发明又一个实施例提供的电子设备的结构示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本发明,而不是限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了解决现有技术问题,本发明实施例提供了一种数据库同步的方法、装置、电子设备及计算机存储介质。下面首先对本发明实施例所提供的数据库同步的方法进行介绍。
图1示出了本发明一个实施例提供的数据库同步的方法的流程示意图。如图1所示,该方法包括如下步骤201~步骤203:
步骤201,分别在第一数据库和第二数据库中,根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合。
在本发明实施例中,第一数据库是在数据库同步过程中,需要变更的数据库,也可以称为源数据库;第二数据库是第一数据库的同步目标,第二数据库也可以称为目标数据库。示例性的,第一数据库和第二数据库可以是Postgres数据库,或者,MySQL数据库。
需要说明的是,在一种应用场景中,第一数据库可以是进行数据库升级之前的数据库,第二数据库可以是进行数据库升级之后的数据库,在这种应用场景中,本发明实施例用于将第一数据库升级为第二数据库;在另一种应用场景中,第一数据库可以是进行数据库升级之后的数据库,第二数据库可以是进行数据库升级之前的数据库,在这种应用场景中,本发明实施例用于将第一数据库回退为第二数据库。
每个数据库对象用于表示数据库的一个具体的元素,可以用于存储该元素的信息,具有一定的数据结构。
每种数据库对象的信息模型是根据对应种类的数据库对象的信息抽象出来的模型,可以用于提取每个数据库对象的至少一个信息。每种数据库对象的信息模型可以用于表征对应种类数据库对象的信息结构。信息结构可以是多个信息的结构。例如,信息结构可以是按照先后顺序排列的多个信息的信息内容,示例性的,可以通过java语言的list表示信息结构;或者,信息结构也可以是多个信息键值对,每个信息键值对由信息名和信息值组成,示例性的,可以通过java语言的map表示信息结构。
步骤202,比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于第二数据库同步第一数据库的增量脚本。
在比对两个数据库中的数据库对象时,可以先根据信息集合中的部分信息,在两个数据库中匹配出相同的数据库对象。
如果针对第二数据库中的某一个数据库对象,在第一数据库中未匹配到,则相应的在第一数据库中添加该数据库对象。
如果针对第一数据库中的某一个数据库对象,在第二数据库中未匹配到,则相应的在第一数据库中删除该数据库对象。
如果匹配到两个数据库中存在相同的数据库对象,则可以进一步对信息集合中的全部信息进行比对。例如,对于第一数据库和第二数据库中名称相同的数据库类型,分别比对每个属性的信息是否相同。
在比对每个数据库对象之后,根据第一数据库相对于第二数据库的差异,生成用于将第一数据库同步为第二数据库的增量脚本。
步骤203,针对第一数据库执行增量脚本。
可选的,可以在比对完两个数据库所有的差异之后,得到包括用于同步所有数据库对象的增量脚本,进而,对第一数据库执行增量脚本,以将第一数据库同步为第二数据库。
或者,也可以在每比对完部分差异之后,就执行增量脚本,示例性的,可以按照系统级、表级、数据级的同步顺序,分别在比对完每个级别数据库差异且生成增量脚本之后,即执行增量脚本。
本发明实施例提供的数据库同步的方法,可以根据需要增加或减少同步的数据库对象。在一个示例中,可以基于本发明实施例提供的数据库同步的方法设计软件程序以实现数据库同步的过程,在开发和维护设计的软件程序时,不同的数据库对象的同步流程可以使用相同的模板设计,如果需要增加或减少某个同步的数据库对象,包括比对、生成增量语句的流程,这样,在需要增加或删除某个数据库对象时,可以基于模板增加或删除该数据库对象,不需要对软件整体流程有大的改动,具有良好的扩展性。
在一个示例中,数据库对象可以分为多个级别,多个级别可以包括系统级、表级和数据级。其中,系统级的数据库对象至少包括以下之一:数据库模式、数据库类型、数据库序列、数据库函数、数据库聚集。表级的数据库对象至少包括以下之一:数据库表对象、数据库表字段、数据库表触发器、数据库表约束、数据库表索引。数据级的数据库对象至少包括数据库表数据,也即,每个表内的具体数据;可选的,还可以包括非系统的表信息,例如,表的主键,表字段,表字段类型、表外键等。
在步骤201中,在根据每个数据库对象的信息模型提取信息时,可以在用于存储数据库对象的文件中提取。例如,针对系统级和表级的数据库对象可以在系统表中提取信息,针对数据级的数据库对象可以在数据库表中提取信息。由于信息模型能够表征信息结构,因此,根据信息模型提取出的信息集合可以包括以对应的信息结构表示的至少一个信息,也即,信息集合中的每个信息的与信息结构中的每个信息/信息键值对一一映射。
每种数据库对象的信息模型中可以包括需要提取的信息的匹配字符串。
举例来说,对于系统级和表级的数据库对象,每种数据库对象需要提取的信息可以包括数据库对象的多个属性,这样,在信息模型中,可以包括每个属性的字段名。
例如,数据库对象可以是数据库类型,数据库类型的多个属性可以包括数据类型模式名、数据类型名、属性名、属性顺序等等,上述每个属性对应的字段名可以是UDT_SCHEMA、UDT_NAME、ATTRIBUTE_NAME、ORDINAL_POSITION,那么,以每个属性的字段名作为匹配字符串,分别在第一数据库和第二数据库的文件中进行匹配,匹配到与字段名相同的字符串之后,确定该字符串之后的字符串是对应属性的具体内容(属性值)。
再如,对于数据级的数据库对象,也即表内的数据,可以直接按照表内各字段的顺序,提取每行记录中每个字段的值。
在步骤202中,在匹配相同的数据库对象时,一个示例性的实施方式为,通过信息集合中的数据库对象名称来确定是否为相同的数据库对象,数据库对象名称相同则是相同的数据库对象,否则为不同的数据库对象。可选的,在另一些实施方式中,也可以通过其它实施方式来确定是否为相同的数据库对象,例如,如果在第一数据库中的第一数据库对象的信息集合与第二数据库中的第二数据库对象的信息集合中,存在超过n个以上的信息是相同的,则认定为第一数据库对象和第二数据库对象是相同的数据库对象,否则为不同的数据库对象。
在步骤202生成增量脚本时,一种示例性的实施方式为,先创建一个增量脚本,也即,在存储空间中创建一个文件,接着,在比对差异之后,将修改差异的增量语句输出至增量脚本。
在根据数据库对象名称进行匹配之后,如果第一数据库缺少第二数据库中的某个数据库对象,则生成新增该数据库对象的增量语句。如果第一数据库比第二数据库多出某个数据库对象,则生成删除该数据库对象的语句。
针对第一数据库和第二数据库中名称相同的两个数据库对象,如果第一数据库的数据库对象的信息集合中多出某个属性的信息,则生成删除对应信息的语句,如果缺少某个属性的信息,则生成新增对应信息的语句,如果某个属性的值不同,则生成修改对应信息的语句。其中,针对数据级的数据库对象,也即表内的行数据,数据库对象名称可以是通过对每个行数据中的多个字段进行拼接得到的,多个字段可以是全部字段,或者主键的字段,示例性的,可以在没有主键的情况下拼接全部字段得到每行数据的数据库对象名称,用于作为每行数据的唯一标识。
生成增量语句之后,可以输出至已创建的增量脚本。增量脚本是包括多个增量语句的文件,每个增量语句用于针对某个数据库对象/某个数据库对象的某个信息进行增加/修改/删除的增量处理。
在一个可选的实施方式中,每个级别的数据库对象对应有不同的同步顺序。相应的,在执行步骤202中的比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合时,可以按照同步顺序进行比对,具体来说,按照系统级、表级和数据级的同步顺序分别的进行比对。进而,在执行步骤202中的根据比对得到的差异生成基于第二数据库修改第一数据库的增量脚本时,可以按照同步顺序比对得到的差异,生成用于修改(包括新增、删除、修改)第一数据库中每个数据库对象的增量语句,并输出至已创建的增量脚本中。
可选的,针对系统级和表级的数据库对象,可以在按照同步顺序比对完某个数据库对象/某个数据库对象的某个信息之后,立即将增量语句输出至增量脚本,这样,在执行增量脚本时,针对系统级和表级的数据库对象/数据对象的某个信息,按照比对顺序执行对应的增量语句。示例性的,在SQL数据库系统中,修改数据库系统级和表级的语句可以是DDL(Data Definition Language,数据库定义语言,用于定义数据库的结构)语句。
针对数据级的数据库对象,包括单表内的具体数据,由于不同的单表之间存在外键引用关系,如果直接按照同步顺序比对并向增量脚本中输出增量语句,会导致在执行增量脚本时,将一些与未执行增量语句的表数据具有引用关系的表数据提前删除,使得后续存在外键引用关系的外键主表数据执行增量操作失败。因此,针对数据级的数据库对象,可以先缓存部分增量语句,然后在达到一定条件时(例如单表比对完毕、或者所有表比对完毕),将缓存的增量语句输出至增量脚本。这样,针对表内的数据,在执行增量脚本时,可以先对数据执行新增和修改的增量语句,然后再执行删除的增量语句,从而提高同步的稳定性和准确性。示例性的,针对SQL数据库系统,修改数据级的语句可以是DML(DataManipulation Language,数据库操作语言,用于处理数据库中的数据)语句,
其中,在数据库表数据包括大对象类型表数据的情况下,针对大对象类型表数据,可以调用大对象类型表数据的获取接口,以查询大对象类型表数据的数据内容,进而,在大对象类型表数据的数据内容中,根据信息模型提取信息,得到大对象类型表数据的数据库对象的信息集合。
在一种可能的实施方式中,在执行步骤201之前,还可以比对第一数据库的系统版本和第二数据库的系统版本。其中,在第一数据库的系统版本与第二数据库的系统版本相同的情况下,执行步骤201,否则,不继续进行数据库同步,不执行步骤201~步骤203。
本发明实施例的数据库同步的方法,能够基于预设的数据库对象的信息模型,在两个数据库中提取出数据库对象的信息集合,进而,根据两个数据库中信息集合的比对,得到用于同步的增量脚本,这样,通过两个数据库的对比进行同步,可以解决相关技术中通过记录修改操作的方法执行增量同步时,由于未能完全记录所有修改操作导致同步失败的问题,能够提高数据库同步过程的稳定性。并且,除了应用于对数据库进行升级的同步操作,还可以基于过去的数据库版本将当前的数据库进行回退的同步操作,可以在生产环境数据库系统出现问题时的通过软件生成增量修改脚本,回退至稳定的低版本环境,可以及时的避免生产环境数据库出现问题时所造成的损失,不仅实现了版本升级和回退的自动化,也避免了通过人工维护增量脚本和数据库备份文件的维护成本以及可能带来的错误,提高了同步效率的同时增加了同步的稳定性。
下面结合一个具体应用场景,介绍本发明实施例提供的数据库同步的方法的一个示例性的实施方式。
如图2所示,该示例性的数据库同步的方法在流程上包括以下顺序排列的四个阶段A1~A4:
在A1同步准备阶段,可以包括以下两个步骤10~20:
步骤10,初始化。
步骤20,比对数据库版本。
在A2系统级的数据库对象的比对阶段,可以包含以下用于比对不同数据库对象的步骤30~70:
步骤30,比对数据库模式。
步骤40,比对数据库类型。
步骤50,比对数据库序列。
步骤60,比对数据库函数。
步骤70,比对数据库聚合。
在A3表级的数据库对象的比对阶段,可以包含以下用于比对不同数据库对象的步骤80~120:
步骤80,比对数据库表对象。
步骤90,比对数据库表字段。
步骤100,比对数据库表触发器。
步骤110,比对数据库表约束。
步骤120,比对数据库表索引。
在A4数据级的数据库对象的比对阶段,可以包含以下用于比对不同数据库对象的步骤130~200:
步骤130,获取数据库非系统表信息。
步骤140,分组查询数据库表数据。
步骤150,根据数据库表数据填充信息集合。
步骤160,拼接数据库表数据的多个字段,得到数据库表数据的数据库对象名称(唯一标识)。
步骤170,匹配两个数据库中唯一标识相同的数据库表数据。
步骤180,如果匹配到的两个数据库表数据比对结果不一致,增加更新表记录update语句;如果比对结果一致,跳过该行数据比对。
步骤190,目标数据库中没有匹配到的行数据,增加插入insert语句。
步骤200,源数据库中没有匹配到的行数据,增加删除语句。
下面对图2所示的步骤10~步骤200进行具体的描述如下:
步骤10,初始化。
该示例性的数据库同步的方法可以封装在数据库同步软件中,进而,数据库同步软件在开始执行数据库同步时,可以首先加载配置信息,进行初始化。加载的配置信息中可以包括以下信息至少之一:
a.源数据库(第一数据库)URL地址
b.源数据库用户名
c.源数据库密码
d.目标数据库(第二数据库)URL地址
e.目标数据库用户名
f.目标数据库密码
g.数据库连接超时时间
h.增量脚本的文件地址
i.执行流程信息输出流对象
步骤20,比对数据库版本。
当数据库同步软件执行完初始化之后,比对两个数据库的数据库版本。在此步骤中,分别查询源数据库和目标数据库的系统版本号,如果系统版本号一致,则可以继续进行接下来的比对流程;如果系统版本号不一致,则停止同步,不执行接下来的流程。这是由于不同版本的数据库,系统级对象的定义会有差别,所以当数据库系统版本号不一致时,继续进行同步可能会导致同步错误、失败。
步骤30,比对数据库模式。
在比对完数据库版本,确定系统版本号一致的情况下,A1准备阶段的流程结束,进入A2系统级的数据库对象的比对阶段。
在A2阶段中,首先比对的数据库对象可以是数据库模式。
在步骤30中,根据数据库模式的信息模型提取数据库模式的信息集合。具体的,分别在源数据库和目标数据库中,根据信息模型中每个信息的匹配字符串,在数据库的schema系统表中查询具体的信息内容,查询到的信息集合映射到信息模型中,示例性的,数据库模式可以使用List<数据库模式信息集合>保存。
其中,系统级的数据库模式不包括pg_catalog和information_schema的模式,可以包括用户自定义的模式和基础的public模式,具体可以通过查询数据库的information_schema.schemata系统表,获取所需的信息。示例性的,数据库模式的信息模型中可以包括模式名,也即数据库模式的唯一名称,其属性字段的字符串为SCHEMA_NAME,在匹配到该字符串之后,提取该字符串对应的值。
接下来,进入信息集合比对的流程,遍历比对源数据库的数据库模式和目标数据库的数据库模式:
在数据库模式只包括一个信息的情况下,如果某个数据库模式的信息在源数据库中存在,在目标数据库中不存在,则表示该数据库模式在目标数据库中不存在,相应的,向增量脚本的文件中输出删除该数据库模式的语句。
如果某个数据库模式的信息在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中输出新增该数据库模式的语句。
如果某个数据库模式的信息在源数据库中存在,在目标数据库中也存在,则无需处理。
步骤40,比对数据库类型。
在比对和同步完数据库模式,并输出增量语句之后,开始比对数据库类型。
数据库类型的信息模型中可以包括表1所示的多个属性信息,表1还示出了每个属性信息的字段,以及对应的名称和描述。
表1数据库类型的信息模型包括的属性信息
基于上述的信息模型,分别查询源数据库和目标数据库的数据库类型,得到信息集合,并映射为信息模型的结构,示例性的,可以使用Map<String,数据库类型信息集合>保存。
在查询时,可以在information_schema.attributes系统表中查询以获取所需的信息。
接下来,遍历比对源数据库的数据库类型的信息集合和目标数据库的数据库类型的信息集合:
首先,可以根据数据类型名来确定两个数据库中的数据库类型是否为相同的数据库类型。
如果某个数据库类型在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库类型的语句。
如果某个数据库类型在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库类型的语句。
如果某个数据库类型在源数据库中存在,在目标数据库中也存在,则进一步的遍历比对数据库类型的信息集合中的各个属性信息,具体的:
如果某个数据库类型的某个属性在源数据库的数据库类型中存在,在目标数据库的数据库类型中不存在,则在增量脚本的文件中增加删除该数据库类型的对应属性的增量语句。
如果某个数据库类型的某个属性在源数据库的数据库类型中不存在,在目标数据库的数据库类型中存在,则在增量脚本的文件中增加新增该数据库类型的对应属性的增量语句。
如果某个数据库类型的某个属性在源数据库的数据库类型中存在,在目标数据库的数据库类型中也存在,但比对了属性信息之后确定属性信息的内容不一致,则在增量脚本的文件中增加如下增量语句:先删除该数据库类型的对应属性,再新增该数据库类型的对应属性。
步骤50,比对数据库序列。
数据库序列的信息模型中可以包括表2所示的多个属性信息,表2还示出了每个属性信息的字段,以及对应的名称和描述。
表2数据库序列的信息模型包括的属性信息
基于上述的信息模型,分别查询源数据库和目标数据库的数据库序列,得到信息集合,并映射为信息模型的结构,示例性的,可以使用Map<String,数据库序列信息集合>保存。
在查询时,可以在information_schema.sequences系统表中查询以获取所需的信息。
接下来,遍历比对源数据库的数据库序列的信息集合和目标数据库的数据库序列的信息集合:
首先,可以根据数据库序列的序列名来确定两个数据库中的数据库序列是否为相同的数据库序列。
如果某个数据库序列在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库序列的语句。
如果某个数据库序列在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库序列的语句。
如果某个数据库序列在源数据库中存在,在目标数据库中也存在,但数据库序列的信息集合中的属性信息内容不一致,则在增量脚本的文件中增加修改该数据库序列的语句。
步骤60,比对数据库函数。
数据库函数的信息模型中可以包括表3所示的多个属性信息,表3还示出了每个属性信息的字段,以及对应的名称和描述。
表3数据库函数的信息模型包括的属性信息
基于上述的信息模型,分别查询源数据库和目标数据库的数据库函数,得到信息集合,并映射为信息模型的结构,示例性的,可以使用Map<String,数据库函数信息集合>保存。
在查询时,可以在pg_proc,pg_namespace,pg_type,pg_namespace,pg_description系统表中查询以获取所需的信息。
接下来,遍历比对源数据库的数据库函数的信息集合和目标数据库的数据库函数的信息集合:
首先,可以根据数据库函数的函数名来确定两个数据库中的数据库函数是否为相同的数据库函数。
如果某个数据库函数在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库函数的语句。
如果某个数据库函数在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库函数的语句。
如果某个数据库函数在源数据库中存在,在目标数据库中也存在,但数据库函数的信息集合中的属性信息内容不一致,则在增量脚本的文件中增加如下增量语句:先删除该数据库函数,再新增该数据库函数。
步骤70,比对数据库聚合。
数据库聚合的信息模型中可以包括表4所示的多个属性信息,表4还示出了每个属性信息的字段,以及对应的名称和描述。
属性字段 | 属性名称和属性描述 |
AGGSCHEMANAME | 聚合模式名,聚合所属的模式名 |
AGGNAME | 聚合名,聚合的唯一名称 |
AGGSFUNC | 聚合转换函数名,聚合内部的转换函数的函数名称 |
AGGFFUNC | 聚合最终函数名,聚合内部的最终函数的函数名称 |
AGGTYPENAME | 聚合转移数据类型名,聚合内部的转移数据类型的名称 |
AGGARGTYPES | 聚合入参名,聚合入参的名称集合 |
表4数据库聚合的信息模型包括的属性信息
基于上述的信息模型,分别查询源数据库和目标数据库的数据库聚合,得到信息集合,并映射为信息模型的结构,示例性的,可以使用Map<String,数据库聚合信息集合>保存。
在查询时,可以在pg_aggregate,pg_type,pg_namespace系统表中查询以获取所需的信息。
接下来,遍历比对源数据库的数据库聚合的信息集合和目标数据库的数据库聚合的信息集合:
首先,可以根据数据库聚合的聚合名来确定两个数据库中的数据库聚合是否为相同的数据库聚合。
如果某个数据库聚合在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库聚合的语句。
如果某个数据库聚合在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库聚合的语句。
如果某个数据库聚合在源数据库中存在,在目标数据库中也存在,则在增量脚本的文件中增加如下增量语句:先删除该数据库聚合,再新增该数据库聚合。
步骤80,比对数据库表对象。
在执行完步骤70之后,A2阶段的流程结束,进入A3表级的数据库对象的比对阶段。
在A3阶段中,先同步数据库表对象,然后遍历所有的数据库表,并针对每一张数据库表,再遍历的针对数据库表字段、数据库表触发器、数据库表约束和数据库表索引的比对。也即,相当于先比对数据库表对象,然后针对每个数据库表,对数据库表的属性进行比对。
数据库表对象的信息模型中可以包括如下的属性信息:SCHEMANAME,数据库表对象的模式名,数据库表对象所属的模式的名称,TABLENAME,数据库表对象的表名,是数据库表对象的唯一名称。
在步骤80中,可以在pg_tables系统表中,查询上述属性信息的内容,并映射为List<数据库表对象信息集合>。
接下来,遍历比对源数据库的数据库表对象的信息集合和目标数据库的数据库表对象的信息集合:
首先,可以根据数据库表对象的表名来确定两个数据库中的数据库表对象是否为相同的数据库表对象。
如果某个数据库表对象在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库表对象的语句。
如果某个数据库表对象在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库表对象的语句。
如果某个数据库表对象在源数据库中存在,在目标数据库中也存在,则无需处理。
步骤90,比对数据库表字段。
数据库表字段的信息模型中可以包括表5所示的多个属性信息,表5还示出了每个属性信息的字段,以及对应的名称和描述。
表5数据库表字段的信息模型包括的属性信息
基于上述的信息模型,分别查询源数据库和目标数据库的数据库表字段,得到信息集合,并映射为信息模型的结构,示例性的,可以使用Map<String,数据库表字段信息集合>保存。
在查询时,可以在information_schema.columns系统表中查询以获取所需的信息。
接下来,遍历比对源数据库的数据库表字段的信息集合和目标数据库的数据库表字段的信息集合:
首先,可以根据数据库表字段的字段名来确定两个数据库中的数据库表字段是否为相同的数据库表字段。
如果某个数据库表字段在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库表字段的语句。
如果某个数据库表字段在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库表字段的语句。
如果某个数据库表字段在源数据库中存在,在目标数据库中也存在,但数据库表字段的信息集合中的属性信息内容不一致,则在增量脚本的文件中增加修改该数据库表字段的语句。
步骤100,比对数据库表触发器。
数据库表触发器的信息模型中可以包括表6所示的多个属性信息,表6还示出了每个属性信息的字段,以及对应的名称和描述。
表6数据库表触发器的信息模型包括的属性信息
基于上述的信息模型,分别查询源数据库和目标数据库的数据库表触发器,得到信息集合,并映射为信息模型的结构,示例性的,可以使用Map<String,数据库表触发器信息集合>保存。
在查询时,可以在information_schema.triggers系统表中查询以获取所需的信息。
接下来,遍历比对源数据库的数据库表触发器的信息集合和目标数据库的数据库表触发器的信息集合:
首先,可以根据数据库表触发器的触发器名来确定两个数据库中的数据库表触发器是否为相同的数据库表触发器。
如果某个数据库表触发器在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库表触发器的语句。
如果某个数据库表触发器在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库表触发器的语句。
如果某个数据库表触发器在源数据库中存在,在目标数据库中也存在,但数据库表触发器的信息集合中的属性信息内容不一致,则在增量脚本的文件中增加如下增量语句:先删除该数据库表触发器,再新增该数据库表触发器。
步骤110,比对数据库表约束。
数据库表约束的信息模型中可以包括表7所示的多个属性信息,表7还示出了每个属性信息的字段,以及对应的名称和描述。
表7数据库表约束的信息模型包括的属性信息
基于上述的信息模型,分别查询源数据库和目标数据库的数据库表约束,得到信息集合,并映射为信息模型的结构,示例性的,可以使用Map<String,数据库表约束信息集合>保存。
在查询时,可以在pg_constraint,pg_class,pg_namespace系统表中查询以获取所需的信息。
接下来,遍历比对源数据库的数据库表约束的信息集合和目标数据库的数据库表约束的信息集合:
首先,可以根据数据库表约束的约束名来确定两个数据库中的数据库表约束是否为相同的数据库表约束。
如果某个数据库表约束在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库表约束的语句。
如果某个数据库表约束在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库表约束的语句。
如果某个数据库表约束在源数据库中存在,在目标数据库中也存在,但数据库表约束的信息集合中的属性信息内容不一致,则在增量脚本的文件中增加如下增量语句:先删除该数据库表约束,再新增该数据库表约束。
步骤120,比对数据库表索引。
数据库表索引的信息模型中可以包括表8所示的多个属性信息,表8还示出了每个属性信息的字段,以及对应的名称和描述。
属性字段 | 属性名称和属性描述 |
SCHEMANAME | 索引模式名,是索引所属表的模式名 |
TABLENAME | 索引表名,是索引所属表的唯一名称 |
INDEXNAME | 索引名,是索引的唯一名称 |
INDEXDEF | 索引,是索引定义语句 |
表8数据库表索引的信息模型包括的属性信息
基于上述的信息模型,分别查询源数据库和目标数据库的数据库表索引,得到信息集合,并映射为信息模型的结构,示例性的,可以使用Map<String,数据库表索引信息集合>保存。
在查询时,可以在pg_indexes系统表中查询以获取所需的信息。
接下来,遍历比对源数据库的数据库表索引的信息集合和目标数据库的数据库表索引的信息集合:
首先,可以根据数据库表索引的索引名来确定两个数据库中的数据库表索引是否为相同的数据库表索引。
如果某个数据库表索引在源数据库中存在,在目标数据库中不存在,则在增量脚本的文件中增加删除该数据库表索引的语句。
如果某个数据库表索引在源数据库中不存在,在目标数据库中存在,则在增量脚本的文件中增加新增该数据库表索引的语句。
如果某个数据库表索引在源数据库中存在,在目标数据库中也存在,但数据库表索引的信息集合中的属性信息内容不一致,则在增量脚本的文件中增加如下增量语句:先删除该数据库表索引,再新增该数据库表索引。
步骤130,获取数据库非系统表信息。
在执行步骤130之后,A3阶段的流程结束,进入A4数据级的数据库对象的比对阶段。
首先,查询所有数据库的非系统自带的表信息,也即数据库非系统表信息,可以包括表的主键信息,表字段信息,表字段类型信息、表外键信息。
然后,根据表外键信息,对数据库表进行排序,保证外键主表在前,外键子表在后。这样,在执行根据比对得到的差异生成的增量脚本时,才不会因为存在外键引用关系而导致外键主表的数据的同步操作失败。
接下来,针对每一张数据表,遍历数据库非系统表信息,进行比对。需要说明的是,在每一张数据表的单表比对过程中,比对之后向增量脚本输出的增量语句只包括新增和修改语句,删除语句暂时缓存起来,当所有的单表比对结束后,统一将删除语句输出至增量脚本中,以用于保障在执行增量脚本的数据同步过程中,不会因为存在外键引用关系而导致外键主表数据的同步操作失败。
步骤140,分组查询数据库表数据。
在该步骤中,分别查询源数据库中每个数据库表(单表)和目标数据库的每个数据库表(单表)的数据,也即分别查询数据库表数据(或者称单表数据)。示例性的,可以采用分组查询的方式,每次仅查询单表内的10000条(行)记录(每条记录包括多个字段的数据),避免表内数据过多而导致的数据库连接执行查询动作超时。
步骤150,根据数据库表数据填充信息集合。
示例性的,可以将单表内每组查询到的多条记录映射到数据库表数据的信息模型List<Map<String,String>>,得到信息集合,其中,信息模型中的每个Map<String,String>对应查询到的单表中的每行数据。每行数据的每个字段包括键key和值value,其中,key是字段名;value是字段的数据值。
其中,如果数据库表数据的数据库表字段为大对象(oid)类型,由于该类型并非直接存储在表中,而是以字节数组形式存储在大对象数据表中,需要根据表中存储的oid(Object Identifier,对象标识符)值,调用大对象数据的获取接口,从而查询出具体的大对象数据,并转化为String类型,保存在信息集合中,该信息集合映射为上述List<Map<String,String>>信息模型的结构。
如果数据库表数据的数据库表字段为小数类型,在映射到信息模型时,需要去除小数部分末尾的非有效位数的0。
步骤160,拼接数据库表数据的多个字段,得到数据库表数据的数据库对象名称。
在此步骤中,提取数据库表数据的信息集合中每行数据的所有表主键的字段,或每行数据的所有字段值,并拼接成为用于标识该行数据的唯一字符串:linePkId,得到每行数据库表数据的数据库对象名称。其中,可以在没有表主键的情况下采用拼接所有字段值的方式。在比对数据库表数据时,linePkId用于判断源数据库的一行数据与目标数据库的一行数据是否是同一条数据,如果完全相同,则是同一条数据,否则不是同一条数据。
步骤170,匹配两个数据库中唯一标识相同的数据库表数据。
在此步骤中,遍历源数据库和目标数据库中的每行数据库表数据,使用linePkId作为唯一标识,比对源数据库中的每行数据和目标数据库中的每行数据。
其中,如果未匹配到linePkId一致的行数据,则执行步骤190,确定源库数据集合不包含目标库行数据一致的数据,生成insert语句,输出到增量脚本中。
如果匹配到linePkId一致的行数据:在linePkId是通过所有字段拼接的情况下,确定源数据库和目标数据库中的行数据是相同的;在linePkId是通过表主键拼接的情况下,逐个比对行数据中除了表主键之外的其余每个字段值,并执行步骤180。
步骤180,在比对源数据库和目标数据库中linePkId相同的数据库表数据时,如果除了表主键之外的其余字段值存在不一致,增加更新表记录update语句;如果一致,则确定两个行数据相同,跳过该行数据比对。
当完成步骤170~190后,进入步骤200,源数据库中没有匹配到的行数据,增加删除语句。
在该步骤中,可以在遍历源数据库和目标数据库相同的单表的处理流程中,根据linePkId判断源数据库中存在,目标数据库中不存在的行数据,生成删除语句,并缓存所有的删除语句。等单表遍历全部完成后,最终将缓存的全部删除语句一并输出到增量脚本的文件中。到此步骤,数据库结构和数据增量同步脚本完全生成。A4数据模型同步阶段结束。
最后,在源数据库环境下,执行增量脚本,即可将源数据库的结构和数据同步成和目标数据库的结构和数据一致。
本发明实施例还提供了一种数据库同步的装置,可以用于执行本发明实施例提供的数据库同步的方法。在本发明实施例提供的数据库同步的装置的实施例中未详述的部分,可以参考本发明实施例提供的数据库同步的方法的实施例中的说明,在此不再赘述。
图3示出了本发明实施例提供的数据库同步的装置的一种可选的结构示意图。
如图3所示,该数据库同步的装置可以包括提取模块31,第一执行模块32和第二执行模块33。
其中,提取模块31用于分别在第一数据库和第二数据库中,根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合;其中,每种数据库对象的信息模型用于表征对应种类数据库对象的信息结构;第一执行模块32用于比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于第二数据库同步第一数据库的增量脚本;第二执行模块33用于针对第一数据库执行增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,每个级别对应有不同的同步顺序;相应的,在第一执行模块执行比对第一数据库中每个数据库对象的信息集合和第二数据库中每个数据库对象的信息集合时,按照同步顺序进行比对;第一执行模块包括:创建单元,用于创建增量脚本;第一生成单元,用于根据按照同步顺序比对得到的差异,生成用于修改第一数据库中每个数据库对象的增量语句,并输出至增量脚本。
在一种可能的实施方式中,多个级别包括系统级、表级和数据级,其中,系统级的数据库对象至少包括以下之一:数据库模式、数据库类型、数据库序列、数据库函数、数据库聚集;表级的数据库对象至少包括以下之一:数据库表对象、数据库表字段、数据库表触发器、数据库表约束、数据库表索引;数据级的数据库对象至少包括数据库表数据。
在一种可能的实施方式中,第一执行模块包括:确定单元,用于根据每个数据库对象的信息集合确定对应数据库对象的数据库对象名称;匹配单元,用于针对第一数据库中的数据库对象和第二数据库中的数据库对象,按照数据库对象名称进行匹配;第二生成单元,用于根据匹配的结果,针对第一数据库相对于第二数据库多余的数据库对象、缺少的数据库对象、以及相匹配的数据库对象,分别生成对应的增量语句,并将生成的增量语句输出至增量脚本。
在一种可能的实施方式中,第二生成单元包括:第三生成单元,用于针对第一数据库中多余的数据库对象,生成用于删除的增量语句,并输出至增量脚本;第四生成单元,用于针对第一数据库中缺少的数据库对象,生成用于新增的增量语句,并输出至增量脚本;第五生成单元,用于针对第一数据库和第二数据库中相匹配的数据库对象,根据对相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括系统级和表级,在第一数据库中与第二数据库相匹配的数据库对象为系统级的数据库对象或表级的数据库对象的情况下,第五生成单元包括:第六生成单元,用于针对第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的增量语句,并输出至增量脚本;第七生成单元,用于针对第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至增量脚本;第八生成单元,用于针对第一数据库和第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于先删除第一数据库中数据库对象的信息集合中的对应信息、再新增第二数据库中相匹配数据库对象的信息集合中的不同信息的增量语句,并输出至增量脚本。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括数据级,在第一数据库中与第二数据库相匹配的数据库对象为数据级的数据库对象的情况下,第五生成单元包括:第九生成单元,用于针对第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的目标增量语句,并缓存目标增量语句;第十生成单元,用于针对第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至增量脚本;第十一生成单元,用于针对第一数据库和第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于修改第四数据库对象的信息集合中对应信息的增量语句,并输出至增量脚本;输出单元,用于在比对完具有相互引用关系的多个数据库表中的所有数据级的数据库对象之后,向增量脚本输出缓存的目标增量语句。
在一种可能的实施方式中,数据库对象分为多个级别,多个级别包括数据级,数据级的数据库对象的信息集合中包括多个字段的内容;针对数据级的数据库对象,确定单元包括:拼接单元,用于拼接多个字段的内容,得到数据库对象名称。
在一种可能的实施方式中,在数据库表数据包括大对象类型表数据的情况下,针对大对象类型表数据,提取模块包括:调用单元,用于调用大对象类型表数据的获取接口,以查询大对象类型表数据的数据内容;提取单元,用于在大对象类型表数据的数据内容中,根据信息模型提取信息,得到大对象类型表数据的数据库对象的信息集合。
在一种可能的实施方式中,该装置还包括:比对模块,用于在提取模块分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息之前,比对第一数据库的系统版本和第二数据库的系统版本;其中,在第一数据库的系统版本与第二数据库的系统版本相同的情况下,提取模块用于分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息。
本发明实施例的数据库同步的装置,能够基于预设的数据库对象的信息模型,在两个数据库中提取出数据库对象的信息集合,进而,根据两个数据库中信息集合的比对,得到用于同步的增量脚本,这样,通过两个数据库的对比进行同步,可以解决相关技术中通过记录修改操作的方法执行增量同步时,由于未能完全记录所有修改操作导致同步失败的问题,能够提高数据库同步过程的稳定性。
本发明实施例还提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如本发明实施例的数据库同步的方法。
图4示出了本发明实施例提供的电子设备的硬件结构示意图。
该电子设备可以包括处理器301以及存储有计算机程序指令的存储器302。
具体地,上述处理器301可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器302可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器302可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多的组合。在合适的情况下,存储器302可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器302可在综合网关容灾设备的内部或外部。在特定实施例中,存储器302是非易失性固态存储器。
在特定实施例中,存储器302包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多的组合。
存储器可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本发明的一方面的方法所描述的操作。
处理器301通过读取并执行存储器302中存储的计算机程序指令,以实现上述实施例中的任意一种数据库同步的方法。
在一个示例中,电子设备还可包括通信接口303和总线310。其中,如图4所示,处理器301、存储器302、通信接口303通过总线310连接并完成相互间的通信。
通信接口303,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线310包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦合连接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多的组合。在合适的情况下,总线310可包括一个或多个总线。尽管本发明实施例描述了且在附图中示出了特定的总线,但本发明考虑任何合适的总线或互连。
另外,结合上述实施例中的数据库同步的方法,本发明实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据库同步的方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (22)
1.一种数据库同步的方法,其特征在于,所述方法包括:
分别在第一数据库和第二数据库中,根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合;其中,每种所述数据库对象的信息模型用于表征对应种类数据库对象的信息结构;
比对所述第一数据库中每个数据库对象的信息集合和所述第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于所述第二数据库同步所述第一数据库的增量脚本;
针对所述第一数据库执行所述增量脚本。
2.根据权利要求1所述的数据库同步的方法,其特征在于,所述数据库对象分为多个级别,每个级别对应有不同的同步顺序;
相应的,在比对所述第一数据库中每个数据库对象的信息集合和所述第二数据库中每个数据库对象的信息集合时,按照所述同步顺序进行比对;
所述根据比对得到的差异生成基于所述第二数据库修改所述第一数据库的增量脚本,包括:
创建所述增量脚本;
根据按照所述同步顺序比对得到的差异,生成用于修改所述第一数据库中每个数据库对象的增量语句,并输出至所述增量脚本。
3.根据权利要求2所述的数据库同步的方法,其特征在于,所述多个级别包括系统级、表级和数据级,
其中,所述系统级的数据库对象至少包括以下之一:数据库模式、数据库类型、数据库序列、数据库函数、数据库聚集;
所述表级的数据库对象至少包括以下之一:数据库表对象、数据库表字段、数据库表触发器、数据库表约束、数据库表索引;
所述数据级的数据库对象至少包括数据库表数据。
4.根据权利要求1所述的数据库同步的方法,其特征在于,所述比对所述第一数据库中每个数据库对象的信息集合和所述第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于所述第二数据库同步所述第一数据库的增量脚本,包括:
根据每个数据库对象的信息集合确定对应数据库对象的数据库对象名称;
针对所述第一数据库中的数据库对象和所述第二数据库中的数据库对象,按照所述数据库对象名称进行匹配;
根据匹配的结果,针对所述第一数据库相对于所述第二数据库多余的数据库对象、缺少的数据库对象、以及相匹配的数据库对象,分别生成对应的增量语句,并将生成的增量语句输出至所述增量脚本。
5.根据权利要求4所述的数据库同步的方法,其特征在于,所述根据匹配的结果,针对所述第一数据库相对于所述第二数据库多余的数据库对象、缺少的数据库对象、以及相匹配的数据库对象,分别生成对应的增量语句,并将生成的增量语句输出至所述增量脚本,包括:
针对所述第一数据库中多余的数据库对象,生成用于删除的增量语句,并输出至所述增量脚本;
针对所述第一数据库中缺少的数据库对象,生成用于新增的增量语句,并输出至所述增量脚本;
针对所述第一数据库和所述第二数据库中相匹配的数据库对象,根据对所述相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至所述增量脚本。
6.根据权利要求5所述的数据库同步的方法,其特征在于,所述数据库对象分为多个级别,所述多个级别包括系统级和表级,所述根据对所述相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至所述增量脚本,包括:
在所述第一数据库中与所述第二数据库相匹配的数据库对象为所述系统级的数据库对象或所述表级的数据库对象的情况下:
针对所述第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的增量语句,并输出至所述增量脚本;
针对所述第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至所述增量脚本;
针对所述第一数据库和所述第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于先删除所述第一数据库中数据库对象的信息集合中的对应信息、再新增所述第二数据库中相匹配数据库对象的信息集合中的不同信息的增量语句,并输出至所述增量脚本。
7.根据权利要求5所述的数据库同步的方法,其特征在于,所述数据库对象分为多个级别,所述多个级别包括数据级,所述根据对所述相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至所述增量脚本,包括:
在所述第一数据库中与所述第二数据库相匹配的数据库对象为所述数据级的数据库对象的情况下:
针对所述第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的目标增量语句,并缓存所述目标增量语句;
针对所述第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至所述增量脚本;
针对所述第一数据库和所述第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于修改所述第四数据库对象的信息集合中对应信息的增量语句,并输出至所述增量脚本;
在比对完具有相互引用关系的多个数据库表中的所有所述数据级的数据库对象之后,向所述增量脚本输出缓存的所述目标增量语句。
8.根据权利要求4所述的数据库同步的方法,其特征在于,所述数据库对象分为多个级别,所述多个级别包括数据级,所述数据级的数据库对象的信息集合中包括多个字段的内容;
针对所述数据级的数据库对象,所述根据每个数据库对象的信息集合确定对应数据库对象的数据库对象名称,包括:
拼接所述多个字段的内容,得到所述数据库对象名称。
9.根据权利要求3所述的数据库同步的方法,其特征在于,在所述数据库表数据包括大对象类型表数据的情况下,针对所述大对象类型表数据,所述根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合,包括:
调用所述大对象类型表数据的获取接口,以查询所述大对象类型表数据的数据内容;
在所述大对象类型表数据的数据内容中,根据所述信息模型提取信息,得到所述大对象类型表数据的数据库对象的信息集合。
10.根据权利要求1-9任一项所述的数据库同步的方法,其特征在于,在分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息之前,所述方法还包括:
比对所述第一数据库的系统版本和所述第二数据库的系统版本;
其中,在所述第一数据库的系统版本与所述第二数据库的系统版本相同的情况下,分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息。
11.一种数据库同步的装置,其特征在于,所述装置包括:
提取模块,用于分别在第一数据库和第二数据库中,根据每种数据库对象的信息模型提取每个数据库对象的信息,得到每个数据库对象的信息集合;其中,每种所述数据库对象的信息模型用于表征对应种类数据库对象的信息结构;
第一执行模块,用于比对所述第一数据库中每个数据库对象的信息集合和所述第二数据库中每个数据库对象的信息集合,根据比对得到的差异生成基于所述第二数据库同步所述第一数据库的增量脚本;
第二执行模块,用于针对所述第一数据库执行所述增量脚本。
12.根据权利要求11所述的数据库同步的装置,其特征在于,所述数据库对象分为多个级别,每个级别对应有不同的同步顺序;
相应的,在所述第一执行模块执行比对所述第一数据库中每个数据库对象的信息集合和所述第二数据库中每个数据库对象的信息集合时,按照所述同步顺序进行比对;
所述第一执行模块包括:
创建单元,用于创建所述增量脚本;
第一生成单元,用于根据按照所述同步顺序比对得到的差异,生成用于修改所述第一数据库中每个数据库对象的增量语句,并输出至所述增量脚本。
13.根据权利要求12所述的数据库同步的装置,其特征在于,所述多个级别包括系统级、表级和数据级,
其中,所述系统级的数据库对象至少包括以下之一:数据库模式、数据库类型、数据库序列、数据库函数、数据库聚集;
所述表级的数据库对象至少包括以下之一:数据库表对象、数据库表字段、数据库表触发器、数据库表约束、数据库表索引;
所述数据级的数据库对象至少包括数据库表数据。
14.根据权利要求11所述的数据库同步的装置,其特征在于,所述第一执行模块包括:
确定单元,用于根据每个数据库对象的信息集合确定对应数据库对象的数据库对象名称;
匹配单元,用于针对所述第一数据库中的数据库对象和所述第二数据库中的数据库对象,按照所述数据库对象名称进行匹配;
第二生成单元,用于根据匹配的结果,针对所述第一数据库相对于所述第二数据库多余的数据库对象、缺少的数据库对象、以及相匹配的数据库对象,分别生成对应的增量语句,并将生成的增量语句输出至所述增量脚本。
15.根据权利要求14所述的数据库同步的装置,其特征在于,所述第二生成单元包括:
第三生成单元,用于针对所述第一数据库中多余的数据库对象,生成用于删除的增量语句,并输出至所述增量脚本;
第四生成单元,用于针对所述第一数据库中缺少的数据库对象,生成用于新增的增量语句,并输出至所述增量脚本;
第五生成单元,用于针对所述第一数据库和所述第二数据库中相匹配的数据库对象,根据对所述相匹配的数据库对象的信息集合进行比对得到的差异,生成对应的增量语句,并输出至所述增量脚本。
16.根据权利要求15所述的数据库同步的装置,其特征在于,所述数据库对象分为多个级别,所述多个级别包括系统级和表级,在所述第一数据库中与所述第二数据库相匹配的数据库对象为所述系统级的数据库对象或所述表级的数据库对象的情况下,所述第五生成单元包括:
第六生成单元,用于针对所述第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的增量语句,并输出至所述增量脚本;
第七生成单元,用于针对所述第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至所述增量脚本;
第八生成单元,用于针对所述第一数据库和所述第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于先删除所述第一数据库中数据库对象的信息集合中的对应信息、再新增所述第二数据库中相匹配数据库对象的信息集合中的不同信息的增量语句,并输出至所述增量脚本。
17.根据权利要求15所述的数据库同步的装置,其特征在于,所述数据库对象分为多个级别,所述多个级别包括数据级,在所述第一数据库中与所述第二数据库相匹配的数据库对象为所述数据级的数据库对象的情况下,所述第五生成单元包括:
第九生成单元,用于针对所述第一数据库中数据库对象的信息集合中多余的信息,生成用于删除对应信息的目标增量语句,并缓存所述目标增量语句;
第十生成单元,用于针对所述第一数据库中数据库对象的信息集合中缺少的信息,生成用于新增对应信息的增量语句,并输出至所述增量脚本;
第十一生成单元,用于针对所述第一数据库和所述第二数据库中相匹配的数据库对象的信息集合中不同的信息,生成用于修改所述第四数据库对象的信息集合中对应信息的增量语句,并输出至所述增量脚本;
输出单元,用于在比对完具有相互引用关系的多个数据库表中的所有所述数据级的数据库对象之后,向所述增量脚本输出缓存的所述目标增量语句。
18.根据权利要求14所述的数据库同步的装置,其特征在于,所述数据库对象分为多个级别,所述多个级别包括数据级,所述数据级的数据库对象的信息集合中包括多个字段的内容;
针对所述数据级的数据库对象,所述确定单元包括:
拼接单元,用于拼接所述多个字段的内容,得到所述数据库对象名称。
19.根据权利要求13所述的数据库同步的装置,其特征在于,在所述数据库表数据包括大对象类型表数据的情况下,针对所述大对象类型表数据,所述提取模块包括:
调用单元,用于调用所述大对象类型表数据的获取接口,以查询所述大对象类型表数据的数据内容;
提取单元,用于在所述大对象类型表数据的数据内容中,根据所述信息模型提取信息,得到所述大对象类型表数据的数据库对象的信息集合。
20.根据权利要求11-19任一项所述的数据库同步的装置,其特征在于,所述装置还包括:
比对模块,用于在所述提取模块分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息之前,比对所述第一数据库的系统版本和所述第二数据库的系统版本;其中,在所述第一数据库的系统版本与所述第二数据库的系统版本相同的情况下,所述提取模块用于分别在第一数据库和第二数据库中,根据需要比对的每种数据库对象的信息模型提取每种数据库对象的信息。
21.一种电子设备,其特征在于,所述电子设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-10任意一项所述的数据库同步的方法。
22.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-10任意一项所述的数据库同步的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110211202.0A CN112925849A (zh) | 2021-02-25 | 2021-02-25 | 数据库同步的方法、装置、电子设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110211202.0A CN112925849A (zh) | 2021-02-25 | 2021-02-25 | 数据库同步的方法、装置、电子设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112925849A true CN112925849A (zh) | 2021-06-08 |
Family
ID=76171794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110211202.0A Pending CN112925849A (zh) | 2021-02-25 | 2021-02-25 | 数据库同步的方法、装置、电子设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112925849A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117348916A (zh) * | 2023-12-06 | 2024-01-05 | 中邮消费金融有限公司 | 脚本生成方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1749996A (zh) * | 2004-09-16 | 2006-03-22 | 国际商业机器公司 | 用于数据库结构比较的方法、装置和计算机程序 |
US20120089625A1 (en) * | 2010-10-12 | 2012-04-12 | Sap Ag | Incremental conversion of database objects during upgrade of an original system |
CN104240017A (zh) * | 2014-09-01 | 2014-12-24 | 广州市地下铁道总公司 | 一种城市轨道交通线网联网管理的方法 |
US20180096043A1 (en) * | 2016-10-05 | 2018-04-05 | Wal-Mart Stores, Inc. | Systems and methods for synchronizing database schema |
CN109885581A (zh) * | 2019-03-14 | 2019-06-14 | 苏州达家迎信息技术有限公司 | 数据库的同步方法、装置、设备及存储介质 |
CN111414352A (zh) * | 2020-03-27 | 2020-07-14 | 北京明略软件系统有限公司 | 一种数据库信息的管理方法和装置 |
-
2021
- 2021-02-25 CN CN202110211202.0A patent/CN112925849A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1749996A (zh) * | 2004-09-16 | 2006-03-22 | 国际商业机器公司 | 用于数据库结构比较的方法、装置和计算机程序 |
US20120089625A1 (en) * | 2010-10-12 | 2012-04-12 | Sap Ag | Incremental conversion of database objects during upgrade of an original system |
CN104240017A (zh) * | 2014-09-01 | 2014-12-24 | 广州市地下铁道总公司 | 一种城市轨道交通线网联网管理的方法 |
US20180096043A1 (en) * | 2016-10-05 | 2018-04-05 | Wal-Mart Stores, Inc. | Systems and methods for synchronizing database schema |
CN109885581A (zh) * | 2019-03-14 | 2019-06-14 | 苏州达家迎信息技术有限公司 | 数据库的同步方法、装置、设备及存储介质 |
CN111414352A (zh) * | 2020-03-27 | 2020-07-14 | 北京明略软件系统有限公司 | 一种数据库信息的管理方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117348916A (zh) * | 2023-12-06 | 2024-01-05 | 中邮消费金融有限公司 | 脚本生成方法、装置、设备及存储介质 |
CN117348916B (zh) * | 2023-12-06 | 2024-03-26 | 中邮消费金融有限公司 | 脚本生成方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10664467B2 (en) | Managing test data in large scale performance environment | |
CN109002472B (zh) | 一种数据库差异的识别方法及装置 | |
CN107193917A (zh) | 基于iid的全站系统配置文件无损数据更新方法 | |
CN113312338A (zh) | 数据一致性的校验方法、装置、设备、介质及程序产品 | |
CN112925849A (zh) | 数据库同步的方法、装置、电子设备及计算机存储介质 | |
CN115952760A (zh) | 一种数模电路仿真方法、装置、设备及计算机存储介质 | |
CN115237444A (zh) | 基于版本号的并发控制方法、装置、设备及存储介质 | |
CN114490594A (zh) | 一种数据库管理方法、装置、电子设备及计算机存储介质 | |
CN112256674A (zh) | 一种数据迁移方法、装置、电子设备和存储介质 | |
CN111290961A (zh) | 接口测试的管理方法、装置及终端设备 | |
CN114356454A (zh) | 对账数据处理方法、设备、存储介质及程序产品 | |
CN114490606A (zh) | 多源数据比对和一致性处理方法、系统、装置及介质 | |
CN110727726B (zh) | 一种文档型数据库中数据抽取到关系数据库的方法和系统 | |
CN112559546A (zh) | 数据库同步方法、装置、计算机设备及可读存储介质 | |
CN109284278B (zh) | 基于数据分析技术的计算逻辑迁移方法及终端设备 | |
CN114579662A (zh) | 内存数据库同步方法、系统、设备及存储介质 | |
CN117453856B (zh) | 一种基于多源数据融合的历审案件串联的提取方法及装置 | |
CN114116800A (zh) | 数据逻辑核查方法及系统 | |
CN118152405A (zh) | 数据表生成的方法、装置、设备、存储介质及产品 | |
CN114201512A (zh) | 数据逻辑核查数据库及其建立方法与应用 | |
CN117421025A (zh) | 组件更新管理方法、装置、设备、介质及产品 | |
CN114090014A (zh) | 程序拆分方法、装置、设备及计算机存储介质 | |
CN117056310A (zh) | 一种数据迁移方法、装置、电子设备及存储介质 | |
CN117707943A (zh) | 数据回归测试方法及装置 | |
CN117251374A (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 |