CN107958023A - 数据同步方法、数据同步装置和计算机可读存储介质 - Google Patents
数据同步方法、数据同步装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN107958023A CN107958023A CN201711079398.2A CN201711079398A CN107958023A CN 107958023 A CN107958023 A CN 107958023A CN 201711079398 A CN201711079398 A CN 201711079398A CN 107958023 A CN107958023 A CN 107958023A
- Authority
- CN
- China
- Prior art keywords
- affairs
- queue
- key
- mapping table
- predetermined key
- 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.)
- Withdrawn
Links
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/24—Querying
- G06F16/242—Query formulation
- G06F16/2423—Interactive query statement specification based on a database schema
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据同步方法,其包括:读取源数据库的事务日志;根据所读取的事务日志,将事务解码为数据库操作语句,并标记所述事务所涉及的记录的预定键;根据所标记的预定键,建立队列映射表,所述队列映射表标示所述记录的预定键与该记录所对应的事务应放入哪个队列之间的对应关系;根据所述队列映射表,构建至少一个队列;为每个队列分配一个线程,在目标数据库中并行执行所述至少一个队列中的事务的数据库操作语句。本发明还涉及数据同步装置和计算机可读存储介质。根据本发明,能够在保证数据正确的基础上,将源数据库中的数据变化更快地同步到目标数据库中。
Description
技术领域
本发明总体上涉及数据库技术领域,特别涉及用于在源数据库与目标数据库之间同步数据的数据同步方法、数据同步装置和计算机可读存储介质。
背景技术
目前,在源数据库与目标数据库之间进行变化数据的复制或者数据同步更新时,通常如图1所示,首先是读取源数据库的事务日志,然后将源数据库的记录的变化解析为对应的一条条增、删、改的SQL语句,并以完整的事务为单位,在目标数据库串行执行解析出的SQL语句,从而保证源数据库的数据变化得以完整复制到目标数据库,或者说使得数据在源数据库与目标数据库之间同步得到更新。
然而,目前存在的主要问题是,当源数据库中的记录更新并发量大,数据更新频繁时,受制于源数据库到目标数据库的更新是串行执行的,目标数据库中的数据更新缓慢,数据将会被积压,并导致源数据库、目标数据库的数据差异越来越大。如果简单地将串行执行改为并行执行,则将导致事务顺序错乱,目标数据库中的数据更新发生错误而不可用。
发明内容
鉴于上述情况,提出了本发明,其目的是当源数据库中的记录更新并发量大时,在保证数据正确的基础上,更快地将源数据库中的数据变化同步到目标数据库中。
根据本发明的一个实施例,提供了一种数据同步方法,其用于在源数据库与目标数据库之间同步数据,包括:读取源数据库的事务日志;根据所读取的事务日志,将事务解码为数据库操作语句,并标记所述事务所涉及的记录的预定键;根据所标记的预定键,建立队列映射表,所述队列映射表标示所述记录的预定键与该记录所对应的事务应放入哪个队列之间的对应关系;根据所述队列映射表,构建至少一个队列;为每个队列分配一个线程,在目标数据库中并行执行所述至少一个队列中的事务的数据库操作语句。
根据一个可选实施例,本发明的数据同步方法还包括:根据所述记录的预定键,建立事务映射表,所述事务映射表标示所述记录的预定键与该记录所对应的事务之间的对应关系。
根据一个优选实施例,所述建立队列映射表进一步包括:将一个事务所涉及的记录的预定键与所述队列映射表中的预定键进行比较,如果未找到相同的预定键,则将该事务放入长度最短的队列中;如果只找到一个相同的预定键,则将该事务放入所述一个相同的预定键所对应的队列中;如果找到两个或两个以上相同的预定键,则将该事务放入待处理列表中。
根据一个优选实施例,所述建立事务映射表进一步包括:当事务放入队列后,根据该事务所涉及的预定键,在所述事务映射表中查找是否具有相同的预定键,如果未找到相同的预定键,则将该事务放入事务映射表的新事务行中;如果只找到一个相同的预定键,则将该事务放入该相同的预定键所对应的事务行中;如果找到两个或两个以上的相同的预定键,则暂时不将该事务放入事务映射表中。
根据一个优选实施例,当所述事务执行成功后,根据该事务所涉及的预定键,在所述事务映射表中查找相同的预定键,并将该事务从该相同的预定键对应的事务行中删除。
根据一个优选实施例,如果所述事务映射表中的某事务行为空,则将该事务行原本所对应的预定键及相应的事务从所述队列映射表中删除。
根据一个优选实施例,当从队列映射表中删除队列后,基于待处理列表中的事务所涉及的记录的预定键,重复上述各个优选实施例中进一步限定的步骤。
根据一个优选实施例,所述队列映射表的数据结构使用key-value结构,其中Key为:表名+键值;value为:队列号。
根据一个优选实施例,所述事务映射表的数据结构使用key-value结构,其中Key为:表名+键值;value为:该键值对应的多个事务的列表。
根据一个优选实施例,所述源数据库和所述目标数据库为同构数据库或者异构数据库。
根据一个优选实施例,所述数据库操作语句包括增、删、改的SQL语句。
根据一个优选实施例,所述预定键包括超键。
根据一个优选实施例,所述预定键为候选键。
根据一个优选实施例,所述预定键为主键和/或外键。
根据本发明的另一个实施例,提供了一种数据同步装置,其用于在源数据库与目标数据库之间同步数据,包括存储器和处理器,存储器中存储有计算机可执行指令,当所述计算机可执行指令被处理器执行时,可操作来执行以上实施例中任一项所述的数据同步方法。
根据本发明的再一个实施例,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,当所述计算机可执行指令被计算装置执行时,可操作来执行以上实施例中任一项所述的数据同步方法。
利用本发明的数据同步方法、数据同步装置和计算机可读存储介质,能够相对于现有技术取得有益的技术效果。例如,能够根据源数据库中的记录的预定键(例如主键+外键)为事务建立队列映射表,将相互关联的事务放入同一队列中,而相互无关的事务放入不同队列中,基于队列的先进先出原则,在保证数据更新逻辑正确的前提下,提高执行效率,更快地将源数据库中的数据变化同步到目标数据库中。
此外,利用本发明的数据同步方法、数据同步装置和计算机可读存储介质,还能够根据记录的预定键(例如主键+外键)建立事务映射表,基于事务映射表,在事务执行完毕后,及时地清理相应的队列映射表,保证无用信息的及时清理,从而保证程序高效地正确地运行。
附图说明
从下面结合附图对本发明实施例的详细描述中,本发明的上述和/或其它方面和优点将变得更加清楚并更容易理解,附图中:
图1是根据现有技术在源数据库与目标数据库之间同步数据的方法的流程示意图。
图2是根据本发明的一个实施例在源数据库与目标数据库之间同步数据的方法的流程示意图。
具体实施方式
为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步详细说明。
图2是根据本发明的一个实施例在源数据库与目标数据库之间同步数据的方法的流程示意图。需要说明的是,以下所描述的方法仅为实现本发明的一个优选实施例,其并不一定包括了实施本发明的所有步骤,并且其中也并非每个步骤均为实现本发明所必需的步骤,也就是说,本发明还可以包括除以下步骤以外的其它步骤,并且/或者本发明也可以省略以下步骤中的一个或多个步骤。此外,以下步骤也不一定按照所描述的顺序执行,也可以按照按照其它顺序执行,而不背离本发明的精神和范围。
如图2所示,根据本发明一个实施例,首先读取源数据库的事务日志。事务日志例如是一个与源数据库文件分开的独立文件。事务日志例如可以采用二进制格式。该事务日中记录有数据库更新的情况,并且可以记录针对数据库的任何操作。对于每一次数据库更新的过程,事务日志文件都有非常全面的记录。
进一步,可以将所读取的事务日志解码为数据库操作语句,并且可以标记事务所涉及的记录的预定键。这里需要说明的是,所述数据库操作语句可以包括例如增、删、改等SQL语句。所述预定键可以包括超键。例如,预定键可以为候选键、主键和/或外键。如本领域技术人员所了解的,在关系中能唯一标识元组的属性集称为超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。候选键是某个关系中能唯一标识元组的一组属性所组成的集合,并且它不包含多余属性,即候选键是不包含多余属性的超键。主键是表中的一个或多个字段,用于唯一地标识该表中的某一条记录。主键可以是选中的一个候选键。外键用于标示一个表中的记录与另一个表中的记录之间的相关联系。
进一步,根据所标记的预定键,建立队列映射表,所述队列映射表标示所述记录的预定键与该记录所对应的事务应放入哪个队列之间的对应关系。例如,一个事务A涉及表M中的三条记录,分别将这三条记录的主键标记为:M1、M2、M3,外键标记为:N11、N12、N13,其中所述外键分别对应于另一个表N中的主键11、12、13。在初始条件下,由于队列映射表为空,因此将事务A放入队列1,并将事务A的各主键M1、M2、M3和外键N11、N12、N13放入队列映射表中,从而得到如下队列映射表:
主外键值 | 对应的队列 |
M1 | 队列1(事务A) |
M2 | 队列1(事务A) |
M3 | 队列1(事务A) |
N11 | 队列1(事务A) |
N12 | 队列1(事务A) |
N13 | 队列1(事务A) |
优选地,上述建立队列映射表的步骤可以进一步包括以下步骤:将一个事务Tp所涉及的记录的预定键与所述队列映射表中的预定键进行比较,如果未找到相同的预定键,则将该事务Tp放入长度最短的队列中;如果只找到一个相同的预定键,则将该事务Tp放入所述一个相同的预定键所对应的队列中;如果找到两个或两个以上的相同的预定键,则将该事务Tp放入待处理列表中。
例如,一个事务B涉及M表中的两条记录,这两条记录的主键分别是M4、M5,外键分别是N14、N15。检索上述队列映射表,在其中未找到相同的预定键,即事务B的主键M4、M5和外键N14、N15在队列映射表中不存在,因此将主键M4、M5和外键N14、N15放入队列映射表,并将其对应的事务B放入长度最短的队列(例如,这里是长度为零的队列,即新队列2)中,从而得到如下队列映射表:
主外键值 | 对应的队列 |
M1 | 队列1(事务A) |
M2 | 队列1(事务A) |
M3 | 队列1(事务A) |
N11 | 队列1(事务A) |
N12 | 队列1(事务A) |
N13 | 队列1(事务A) |
M4 | 队列2(事务B) |
M5 | 队列2(事务B) |
N14 | 队列2(事务B) |
N15 | 队列2(事务B) |
又如,另一事务C涉及M表中的两条记录,这两条记录的主键分别是M4、M6,外键分别是N14、N16。检索以上队列映射表,在其中只找到一个相同的主键M4和外键N14,而该主键M4和外键N14对应的队列为队列2,即事务C只对应于一个队列即队列2,因此将事务C放入队列2,从而得到如下队列映射表:
主外键值 | 对应的队列 |
M1 | 队列1(事务A) |
M2 | 队列1(事务A) |
M3 | 队列1(事务A) |
N11 | 队列1(事务A) |
N12 | 队列1(事务A) |
N13 | 队列1(事务A) |
M4 | 队列2(事务B-事务C) |
M5 | 队列2(事务B) |
N14 | 队列2(事务B-事务C) |
N15 | 队列2(事务B) |
M6 | 队列2(事务C) |
N16 | 队列2(事务C) |
又如,另一事务D涉及M表中的两条记录,这两条记录的主键分别是M1、M6,外键分别是N11、N16。检索以上队列映射表,在其中找到了两个相同的主键M1、M6和外键N11、N16,即事务D存在于两个队列即队列1和队列2中,于是暂时不将事务D放入队列映射表中,即事务D先等待,放入待处理列表中。这里所谓的“待处理列表”例如是指由暂时未放入队列映射表中的事务所形成的序列,其中的事务暂时不会被执行,而是等到满足一定条件时,再被放入相应的队列中,进而得以执行。例如,当待处理列表中的事务D所涉及的主键M1、M6和外键N11、N16在队列映射表中没有相同的主键和外键时,将事务D放入长度最短的队列中,类似于上述事务B;或者当只存在一个相同的主键和外键时,将事务D放入该主键和外键所对应的队列中,类似于上述事务C。
又如,另一事务E涉及M表中的一条记录,这条记录的主键是M1,外键是N11。检索以上队列映射表,在其中只找到一个相同的主键M1和外键N11,而该主键M1和外键N11对应的队列为队列1,即事务E只对应于一个队列即队列1,因此将事务E放入队列1,从而得到如下队列映射表:
再如,另一事务F涉及M表中的一条记录,这条记录的主键是M100,外键是N11。检索以上队列映射表,在其中只找到一个相同的外键N11,而该外键N11对应的队列为队列1,即事务F只对应于一个队列即队列1,因此将事务F放入队列1,从而得到如下队列映射表:
主外键值 | 对应的队列 |
M1 | 队列1(事务A-事务E) |
M2 | 队列1(事务A) |
M3 | 队列1(事务A) |
N11 | 队列1(事务A-事务E-事务F) |
N12 | 队列1(事务A) |
N13 | 队列1(事务A) |
M4 | 队列2(事务B-事务C) |
M5 | 队列2(事务B) |
N14 | 队列2(事务B-事务C) |
N15 | 队列2(事务B) |
M6 | 队列2(事务C) |
N16 | 队列2(事务C) |
M100 | 队列1(事务F) |
根据以上队列映射表,构建至少一个队列。将相互关联的事务放入同一队列中。例如,将具有相同主键M1和/或外键N11的事务A、事务E、事务F放入同一队列1中,具有相同主键M4和外键N14的事务B、事务C放入同一队列2中。
然后,为每个队列分配一个线程,在目标数据库中并行执行所述至少一个队列中的事务的数据库操作语句。由此,源数据库中发生的数据变化得以快速地同步更新到目标数据库。
利用本发明的上述数据同步方法,能够根据记录的预定键(例如,主键和外键)建立队列映射表,将相互关联的事务放入同一队列中(例如,具有相同主键M1和/或外键N11的事务A、事务E、事务F放入同一队列1中,并且具有相同主键M4和外键N14的事务B、事务C放入同一队列2中),而相互无关的事务放入不同队列中,基于队列的先进先出原则,在保证数据逻辑正确的前提下,提高执行效率,更快地将源数据库中的数据变化同步更新到目标数据库中。
此外,根据本发明的一个优选实施例,上述方法还可以进一步包括以下步骤:根据记录的预定键,建立事务映射表,所述事务映射表标示所述记录的预定键与该记录所对应的事务之间的对应关系。例如,根据事务A所涉及的记录的主键M1、M2、M3和外键N11、N12、N13,建立如下所示的事务映射表:
主外键值 | 对应的事务 |
M1 | 事务A |
M2 | 事务A |
M3 | 事务A |
N11 | 事务A |
N12 | 事务A |
N13 | 事务A |
优选地,上述建立事务映射表的步骤可以进一步包括以下步骤:当事务Tp放入队列后,根据该事务Tp所涉及的预定键,在所述事务映射表中查找是否具有相同的预定键,如果未找到相同的预定键,则将该事务Tp放入事务映射表中的新事务行中;如果只找到一个相同的预定键,则将该事务Tp放入该相同的预定键所对应的事务行中;如果找到两个或两个以上的相同的预定键,则暂时不将该事务Tp放入事务映射表中。
例如,一个事务B涉及M表中的两条记录,这两条记录的主键分别是M4、M5,外键分别是N14、N15。根据事务B所涉及的记录的主键M4、M5和外键N14、N15,检索事务映射表,在其中未找到相同的主键或者外键,因此将事务B及其对应的各主键M4、M5和外键N14、N15放入新的事务行中,从而得到如下所示的事务映射表:
又如,另一事务C涉及M表中的两条记录,这两条记录的主键分别是M4、M6,外键分别是N14、N16。根据事务C所涉及的记录的主键M4、M6和外键N14、N16,检索以上事务映射表,在其中只找到了一个相同的主键M4和外键N14,于是将事务C放入主键M4和外键N14对应的事务行中,并将事务映射表中不存在的主键M6、外键N16及其对应的事务C放入新的事务行中,从而得到如下所示的事务映射表:
主外键值 | 对应的事务 |
M1 | 事务A |
M2 | 事务A |
M3 | 事务A |
N11 | 事务A |
N12 | 事务A |
N13 | 事务A |
M4 | 事务B-事务C |
M5 | 事务B |
N14 | 事务B-事务C |
N15 | 事务B |
M6 | 事务C |
N16 | 事务C |
又如,另一事务D涉及M表中的两条记录,这两条记录的主键分别是M1、M6,外键分别是N11、N16。检索以上事务映射表,在其中找到了两个相同的主键M1、M6和外键N11、N16,于是暂时不将该事务D放入事务映射表中。
又如,另一事务E涉及M表中的一条记录,这条记录的主键是M1,外键是N11。检索以上事务映射表,在其中只找到一个相同的主键M1和外键N11,因此将事务E放入主键M1和外键N11对应的事务行中,从而得到如下事务映射表:
再如,另一事务F涉及M表中的一条记录,这条记录的主键是M100,外键是N11。检索以上事务映射表,在其中只找到一个相同的外键N11,因此将事务F放入外键N11对应的事务行中,并将事务映射表中不存在的主键M100及其对应的事务F放入新的事务行中,从而得到如下事务映射表:
主外键值 | 对应的事务 |
M1 | 事务A-事务E |
M2 | 事务A |
M3 | 事务A |
N11 | 事务A-事务E-事务F |
N12 | 事务A |
N13 | 事务A |
M4 | 事务B-事务C |
M5 | 事务B |
N14 | 事务B-事务C |
N15 | 事务B |
M6 | 事务C |
N16 | 事务C |
M100 | 事务F |
此外,根据本发明的另一个优选实施例,上述方法还可以进一步包括以下步骤:当所述事务Tp执行成功后,根据该事务Tp所涉及的预定键,在所述事务映射表中查找相同的预定键,并将该事务Tp从该相同的预定键对应的事务行中删除。
例如,当队列1中的事务A执行完毕后,根据该事务A所涉及的主键M1、M2、M3和外键N11、N12、N13,从事务映射表中删除事务A的信息。删除后,主键M2、M3和外键N12、N13所对应的事务为空,则将主键M2、M3和外键N12、N13从事务映射表中删除,从而得到如下事务映射表:
优选地,在删除某事务后,如果所述事务映射表中的某事务行为空,则将该事务行原本涉及的预定键及其对应的事务从所述队列映射表中删除。例如,在以上事务映射表中,当删除事务A后,主键M2、M3和外键N12、N13原本所在的事务行为空,于是在相应的队列映射表中删除主键M2、M3和外键N12、N13及其对应的队列1,从而得到如下队列映射表:
因此,利用本发明的上述数据同步方法,能够根据记录的预定键(例如,主键和外键)建立事务映射表,基于事务映射表,在事务执行完毕后,及时地清理相应的队列映射表,保证无用信息的及时清理,从而保证程序高效地正确地运行。
优选地,当从以上队列映射表中删除队列后,基于待处理列表中的事务所涉及的记录的预定键,重复以上建立队列映射表、建立事务映射表、删除事务映射表中的事务、删除队列映射表中的队列的具体步骤。例如,当从以上队列映射表中删除队列1后,基于待处理列表中的事务D所涉及的记录的预定键(例如,主键M1、M6和外键N11、N16),重复以上步骤,使得待处理列表中的事务D在满足一定条件后得以执行。例如,当待处理列表中的事务D所涉及的主键M1、M6和外键N11、N16在队列映射表中没有相同的主键和外键时,将事务D放入长度最短的队列中;当事务映射表中没有相同的主键和外键时,将事务D放入事务映射表中的新事务行中,类似于上述事务B。当队列映射表中只存在一个与待处理列表中的事务D所涉及的主键M1、M6和外键N11、N16相同的主键和外键时,将事务D放入该主键和外键所对应的队列中;当事务映射表中只存在一个与待处理列表中的事务D所涉及的主键M1、M6和外键N11、N16相同的主键和外键时,将事务D放入事务映射表中该主键和外键所对应的事务行中,类似于上述事务C。当队列映射表中仍然存在两个或两个以上的与待处理列表中的事务D所涉及的主键M1、M6和外键N11、N16相同的主键和外键时,事务D继续放入待处理列表中;当事务映射表中仍然存在两个或两个以上的与待处理列表中的事务D所涉及的主键M1、M6和外键N11、N16相同的主键和外键时,事务D暂时不放入事务映射表中。当所述事务D得以执行成功后,根据该事务D所涉及的主键M1、M6和外键N11、N16,在事务映射表中查找相同的主键和外键,并将该事务D从该相同的主键和外键对应的事务行中删除。当删除事务D后,如果事务映射表中的某事务行为空,则将该事务行原本涉及的预定键及其对应的事务从所述队列映射表中删除。
优选地,上述队列映射表的数据结构使用key-value结构,其中Key为:表名+键值;value为:队列号。其中,一个队列可以对应多个预定键。
优选地,上述事务映射表的数据结构使用key-value结构,其中Key为:表名+键值;value为:该键值对应的多个事务的列表。其中,一个预定键可以对应多个事务。
优选地,本发明的源数据库和目标数据库可以为同构数据库或者异构数据库。
这里需要说明的是,虽然在以上示例中同时使用了主键和外键来进行说明,但是本领域的技术人员应该明白的是,本发明的方法所使用的预定键并不仅仅局限于主键+外键。本发明的预定键也可以标记为超键,也可以标记为候选键,也可以仅标记为主键或外键,只要所使用的预定键能唯一地标识表中的记录或者标识一个表中的记录与另一个表中的记录的相互关系即可。
根据本发明的另一个实施例,还提供了一种数据同步装置,其用于在源数据库与目标数据库之间同步数据,包括存储器和处理器,存储器中存储有计算机可执行指令,当所述计算机可执行指令被处理器执行时,可操作来执行以上所述的任一种数据同步方法。所述数据同步装置的示例有服务器、台式机、笔记本电脑、平板电脑、智能手机等等。
根据本发明的再一个实施例,还提供了一种计算机可读存储介质,其上存储有计算机可执行指令,当所述计算机可执行指令被计算装置执行时,可操作来执行以上所述的任一种数据同步方法。所述计算装置的示例有服务器、台式机、笔记本电脑、平板电脑、智能手机等等。
所属技术领域的技术人员知道,本发明可以实现为方法、装置、系统或计算机程序产品。因此,本发明可以具体实现为以下形式:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,例如可以称为“电路”、“模块”、“装置”或“系统”等。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种数据同步方法,用于在源数据库与目标数据库之间同步数据,包括:
读取源数据库的事务日志;
根据所读取的事务日志,将事务解码为数据库操作语句,并标记所述事务所涉及的记录的预定键;
根据所标记的预定键,建立队列映射表,所述队列映射表标示所述记录的预定键与该记录所对应的事务应放入哪个队列之间的对应关系;
根据所述队列映射表,构建至少一个队列;
为每个队列分配一个线程,在目标数据库中并行执行所述至少一个队列中的事务的数据库操作语句。
2.如权利要求1所述的数据同步方法,还包括:根据所述记录的预定键,建立事务映射表,所述事务映射表标示所述记录的预定键与该记录所对应的事务之间的对应关系。
3.如权利要求2所述的数据同步方法,其中,所述建立队列映射表进一步包括:将一个事务Tp所涉及的记录的预定键与所述队列映射表中的预定键进行比较,如果未找到相同的预定键,则将该事务Tp放入长度最短的队列中;如果只找到一个相同的预定键,则将该事务Tp放入所述一个相同的预定键所对应的队列中;如果找到两个或两个以上相同的预定键,则将该事务Tp放入待处理列表中。
4.如权利要求3所述的数据同步方法,其中,所述建立事务映射表进一步包括:当事务Tp放入队列后,根据该事务Tp所涉及的预定键,在所述事务映射表中查找是否具有相同的预定键,如果未找到相同的预定键,则将该事务Tp放入事务映射表的新事务行中;如果只找到一个相同的预定键,则将该事务Tp放入该相同的预定键所对应的事务行中;如果找到两个或两个以上的相同的预定键,则暂时不将该事务Tp放入事务映射表中。
5.如权利要求4所述的数据同步方法,其中,当所述事务Tp执行成功后,根据该事务Tp所涉及的预定键,在所述事务映射表中查找相同的预定键,并将该事务Tp从该相同的预定键对应的事务行中删除。
6.如权利要求5所述的数据同步方法,其中,如果所述事务映射表中的某事务行为空,则将该事务行原本所对应的预定键及相应的事务从所述队列映射表中删除。
7.如权利要求6所述的数据同步方法,其中,当从队列映射表中删除队列后,基于待处理列表中的事务所涉及的记录的预定键,重复上述权利要求3-6中进一步限定的各个步骤。
8.如权利要求6所述的数据同步方法,其中,所述队列映射表的数据结构使用key-value结构,其中Key为:表名+键值;value为:队列号。
9.一种数据同步装置,用于在源数据库与目标数据库之间同步数据,包括存储器和处理器,存储器中存储有计算机可执行指令,当所述计算机可执行指令被处理器执行时,可操作来执行权利要求1-14中任一项所述的数据同步方法。
10.一种计算机可读存储介质,其上存储有计算机可执行指令,当所述计算机可执行指令被计算装置执行时,可操作来执行权利要求1-14中任一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711079398.2A CN107958023A (zh) | 2017-11-06 | 2017-11-06 | 数据同步方法、数据同步装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711079398.2A CN107958023A (zh) | 2017-11-06 | 2017-11-06 | 数据同步方法、数据同步装置和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107958023A true CN107958023A (zh) | 2018-04-24 |
Family
ID=61963404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711079398.2A Withdrawn CN107958023A (zh) | 2017-11-06 | 2017-11-06 | 数据同步方法、数据同步装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107958023A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684414A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 区块数据的同步方法、装置、设备及存储介质 |
CN111538789A (zh) * | 2020-04-27 | 2020-08-14 | 咪咕文化科技有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN111901358A (zh) * | 2020-08-07 | 2020-11-06 | 杭州安恒信息技术股份有限公司 | 一种入侵检测规则更新方法、装置、设备及可读存储介质 |
CN111897490A (zh) * | 2020-07-08 | 2020-11-06 | 阿里巴巴集团控股有限公司 | 删除数据的方法以及装置 |
CN115509694A (zh) * | 2022-10-08 | 2022-12-23 | 北京火山引擎科技有限公司 | 一种事务处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778136A (zh) * | 2012-10-19 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种跨机房数据库同步方法及系统 |
CN103885986A (zh) * | 2012-12-21 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 主备数据库同步的方法和装置 |
CN104268234A (zh) * | 2014-09-26 | 2015-01-07 | 东软集团股份有限公司 | 一种基于sql语句的数据同步方法和装置 |
US20170308602A1 (en) * | 2015-01-09 | 2017-10-26 | Landmark Graphics Corporation | Apparatus And Methods Of Data Synchronization |
-
2017
- 2017-11-06 CN CN201711079398.2A patent/CN107958023A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778136A (zh) * | 2012-10-19 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种跨机房数据库同步方法及系统 |
CN103885986A (zh) * | 2012-12-21 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 主备数据库同步的方法和装置 |
CN104268234A (zh) * | 2014-09-26 | 2015-01-07 | 东软集团股份有限公司 | 一种基于sql语句的数据同步方法和装置 |
US20170308602A1 (en) * | 2015-01-09 | 2017-10-26 | Landmark Graphics Corporation | Apparatus And Methods Of Data Synchronization |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684414A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 区块数据的同步方法、装置、设备及存储介质 |
CN109684414B (zh) * | 2018-12-26 | 2022-04-08 | 百度在线网络技术(北京)有限公司 | 区块数据的同步方法、装置、设备及存储介质 |
CN111538789A (zh) * | 2020-04-27 | 2020-08-14 | 咪咕文化科技有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN111538789B (zh) * | 2020-04-27 | 2023-08-15 | 咪咕文化科技有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN111897490A (zh) * | 2020-07-08 | 2020-11-06 | 阿里巴巴集团控股有限公司 | 删除数据的方法以及装置 |
CN111897490B (zh) * | 2020-07-08 | 2024-06-11 | 阿里巴巴集团控股有限公司 | 删除数据的方法以及装置 |
CN111901358A (zh) * | 2020-08-07 | 2020-11-06 | 杭州安恒信息技术股份有限公司 | 一种入侵检测规则更新方法、装置、设备及可读存储介质 |
CN115509694A (zh) * | 2022-10-08 | 2022-12-23 | 北京火山引擎科技有限公司 | 一种事务处理方法、装置、电子设备及存储介质 |
CN115509694B (zh) * | 2022-10-08 | 2024-04-30 | 北京火山引擎科技有限公司 | 一种事务处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107958023A (zh) | 数据同步方法、数据同步装置和计算机可读存储介质 | |
CN110168523B (zh) | 改变监测跨图查询 | |
US9646030B2 (en) | Computer-readable medium storing program and version control method | |
CN104137103B (zh) | 用于智能数据归档的方法、系统及其存储介质 | |
US9639542B2 (en) | Dynamic mapping of extensible datasets to relational database schemas | |
CN106126543B (zh) | 一种关系型数据库到MongoDB的模型转换和数据迁移方法 | |
CN107003935A (zh) | 优化数据库去重 | |
US9020916B2 (en) | Database server apparatus, method for updating database, and recording medium for database update program | |
CN106164865A (zh) | 用于数据复制的依赖性感知的事务批处理 | |
CN105630864A (zh) | 存储行标识符值的字典的强制排序 | |
CN109902130A (zh) | 一种数据存储方法、数据查询方法和装置、存储介质 | |
CN103853802B (zh) | 用于索引电子内容的装置和方法 | |
JP5825122B2 (ja) | 生成プログラム、生成方法、および生成システム | |
US20220019739A1 (en) | Item Recall Method and System, Electronic Device and Readable Storage Medium | |
US11500876B2 (en) | Method for duplicate determination in a graph | |
WO2010101772A1 (en) | Merging records from different databases | |
JP5844824B2 (ja) | Sparqlクエリ最適化方法 | |
CN113495945B (zh) | 一种文本搜索方法、装置及存储介质 | |
US20220360458A1 (en) | Control method, information processing apparatus, and non-transitory computer-readable storage medium for storing control program | |
WO2011099082A1 (ja) | データベース管理システム | |
JP7105718B2 (ja) | 情報処理装置、情報処理方法、およびプログラム | |
JP5954742B2 (ja) | 文書を検索する装置及び方法 | |
JP6017055B2 (ja) | データ連携支援装置及びデータ連携支援方法 | |
JP2018060379A (ja) | 検索手段選択プログラム、検索手段選択方法及び検索手段選択装置 | |
JP6852002B2 (ja) | データ検索方法、データ検索装置及びプログラム |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180424 |
|
WW01 | Invention patent application withdrawn after publication |