CN102004743B - 一种用于异构数据库之间数据复制的系统及方法 - Google Patents
一种用于异构数据库之间数据复制的系统及方法 Download PDFInfo
- Publication number
- CN102004743B CN102004743B CN2009101950227A CN200910195022A CN102004743B CN 102004743 B CN102004743 B CN 102004743B CN 2009101950227 A CN2009101950227 A CN 2009101950227A CN 200910195022 A CN200910195022 A CN 200910195022A CN 102004743 B CN102004743 B CN 102004743B
- Authority
- CN
- China
- Prior art keywords
- data
- common memory
- memory section
- target
- database
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000015654 memory Effects 0.000 claims abstract description 168
- 238000012545 processing Methods 0.000 claims abstract description 29
- 238000004140 cleaning Methods 0.000 claims abstract description 10
- 230000015572 biosynthetic process Effects 0.000 claims description 44
- 238000000151 deposition Methods 0.000 claims description 24
- 230000010076 replication Effects 0.000 claims description 17
- 238000003860 storage Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 10
- 210000004027 cell Anatomy 0.000 claims description 9
- 230000000295 complement effect Effects 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 210000000352 storage cell Anatomy 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 3
- 238000007599 discharging Methods 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 abstract 4
- 241001269238 Data Species 0.000 description 12
- 230000008859 change Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012544 monitoring process Methods 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
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于异构数据库之间数据复制的系统及方法,该系统包括:用于在计算机中创建并初始化数据共享内存、消息队列和信号量的初始化模块;包括数据读取器、数据适配器和数据装载器的源数据处理模块;用于根据消息队列中消息将数据共享内存中目标数据复制到至少一个目标数据库中的目标数据复制模块;用于释放复制完毕数据共享内存的清理模块。该方法包括:在计算机中创建并初始化数据共享内存、消息队列和信号量;从至少一个源数据库中读取数据,然后将该数据转成至少一个目标数据库的目标数据,再将转换后数据装载入数据共享内存;根据消息队列中消息将数据共享内存中目标数据复制到至少一个目标数据库中;释放复制完毕的数据共享内存。
Description
【技术领域】
本发明涉及一种用于数据库数据复制的系统及方法,尤其涉及一种用于异构数据库之间数据复制的系统及方法,属于数据库技术领域。
【背景技术】
近年来,数据库技术实现了迅速发展,大型企业在选择商业数据库(例如Oracle、DB2、Sybase等)时,一般都会根据实际情况配置异构的数据库产品,以提高不同系统间的兼容性以及系统的容灾能力。在此所涉及的“异构的数据库”概念,是广泛包括计算机体系异构、操作系统异构以及数据库产品异构的情况,而数据库产品的异构又包括不同的数据库管理系统与不同版本的数据库管理系统的情形。
一旦采用了异构的数据库产品,就会面临需要在不同的数据库之间进行高效及时、安全稳定的数据复制这个棘手的问题。这里的数据库“复制”是包含两个层面的内容:一是数据的转移,例如应用对数据库A产生了一批新数据,则作为备份的数据库B(可能同构也可能异构)也需要及时地“增加”对应的数据;二是数据的同步,例如部分数据记录的修改(或删除),也应快速地在其他数据库(可能是做备份,可能是做参数分发等)上反映出来。
当前,学术界和业界解决异构数据库之间数据复制的几种主要方法是:(1)拷贝法。即通过数据库管理系统导出成特定格式的文件,再将数据导入到目标数据库中;(2)变化捕捉法。该方法是通过捕捉源数据库内数据的变化,再作用到目标数据库中。实现的具体方法比较多,如触发器法、日志法、广播法等等;(3)特定的产品。基本上大型数据库管理系统都提供一套复制组件,提供有限度的复制功能。
然而,现有技术中的上述复制技术均存在一定的缺陷。具体而言,拷贝法需要占用大量的存储开销,实时性也较差,对于异构数据库的支持更是要取决于数据库厂商;对于变化捕捉法,其实时性较好,但是会对源数据库产生较大的额外负担,无法满足大批量实时数据的转移或同步;而特定厂商的复制产品,则大部分只针对厂商自身的产品量身定做,因此对于异构数据库支持不够,也无法满足大批量实时数据的转移或同步需求。
【发明内容】
有鉴于此,本发明的目的在于提供一种用于异构数据库之间数据复制的系统及方法,以解决在现有技术的异构数据库之间数据复制中存在的效率低、通用性差和处理大批量数据的实时性不佳等问题。
为实现上述发明目的,本发明采用的技术方案如下:
一种用于异构数据库之间数据复制的系统,其包括:
初始化模块,其用于在计算机中创建并初始化数据共享内存、消息队列和信号量以用于存储数据;
源数据处理模块,其包括:数据读取器、数据适配器和数据装载器,所述数据读取器用于从至少一个源数据库中读取源数据,所述数据适配器用于将所述数据读取器读取的源数据转换成至少一个目标数据库的目标数据,所述数据装载器用于将转换后的所述目标数据装载入所述数据共享内存;
目标数据复制模块,其用于根据所述消息队列中的消息将所述数据共享内存中的所述目标数据复制到所述至少一个目标数据库中;以及
清理模块,其用于释放所存数据已被复制完毕的所述数据共享内存。
优选地,每一个所述数据共享内存对应于一个目标数据库中的一个目标表,所述数据共享内存的结构包括:共享内存体,其包括多个用于存储数据的共享内存段,每个所述共享内存段中的基本存储单位是数据元,所述数据元对应于所述目标数据库中的一个目标表的一条记录或该记录中部分字段的组合;以及,共享内存头,其用于存放所述共享内存体的管理信息,所述管理信息包括该共享内存体中所述共享内存段的数量、该共享内存段中所述数据元的数量、所述目标数据记录的长度以及每个所述共享内存段的运行状态;所述消息队列包括:任务消息队列与空闲内存通知消息队列,所述任务消息队列用于存放任务消息,所述空闲内存通知消息队列用于存放通知出现空闲共享内存段的消息。
优选地,所述数据适配器还包括用于筛选和/或重构数据记录的处理单元。
优选地,所述数据装载器包括:装载单元,其用于将数据装载入所述共享内存段;锁定单元,其用于通过所述信号量锁定所述共享内存头;修改单元,其用于修改存于所述共享内存头中的所述共享内存段的运行状态;以及,控制单元,其用于检索并获取与所需存放的数据相适配的空闲共享内存段,并通过调用所述装载单元、所述锁定单元与所述修改单元以将所需存放的数据完全存放于所述空闲共享内存段中。
优选地,所述初始化模块、源数据处理模块、目标数据复制模块和清理模块均配置为至少一个,并且所述源数据处理模块与所述目标数据复制模块的配置数目应使得所述源数据处理模块的数据装载速度与所述目标数据复制模块的数据复制速度相匹配。
优选地,每个所述共享内存体中所述共享内存段的数量均与所述空闲内存通知消息队列的容量相等。
一种用于异构数据库之间数据复制的方法,其包括如下步骤:
a、在计算机中创建并初始化数据共享内存、消息队列和信号量以用于存储数据;
b、从至少一个源数据库中读取数据,然后将所读取的数据转换成至少一个目标数据库的目标数据,再将转换后的所述目标数据装载入所述数据共享内存;
c、根据所述消息队列中的消息将所述数据共享内存中的所述目标数据复制到所述至少一个目标数据库中;以及
d、释放所存数据已被复制完毕的所述数据共享内存。
优选地,每一个所述数据共享内存对应于一个目标数据库中的一个目标表,所述数据共享内存的结构包括:共享内存体,其包括多个用于存储数据的共享内存段,每个所述共享内存段中的基本存储单位是数据元,所述数据元对应于所述目标数据库中的一个目标表的一条记录或该记录中部分字段的组合;以及,共享内存头,其用于存放所述共享内存体的管理信息,所述管理信息包括该共享内存体中所述共享内存段的数量、该共享内存段中所述数据元的数量、所述目标数据记录的长度以及每个所述共享内存段的运行状态;所述消息队列包括:任务消息队列与空闲内存通知消息队列,所述任务消息队列用于存放任务消息,所述空闲内存通知消息队列用于存放通知出现空闲共享内存段的消息。
优选地,所述步骤b中还包括对所读取的源数据记录进行筛选和/或重构的处理步骤。
优选地,所述步骤b中将转换后的所述目标数据装载入所述数据共享内存的具体步骤包括:
b1、检索当前是否存在空闲的共享内存段;
b2、判断所得的检索结果,并进行如下的处理:
如果存在空闲共享内存段,则根据所述空闲共享内存段对应的共享内存头中的所述管理信息,进一步判断所述空闲共享内存段的空间是否大于存放所述目标数据所需要的空间:
如果大于所需要的空间,则直接将所述目标数据装载于该空闲共享内存段,然后向所述任务消息队列发送任务消息通知以将已装载的所述目标数据复制到所述至少一个目标数据库中;
如果等于所需要的空间,则先装载所述目标数据,然后锁定所述共享内存头,再将已装载所述目标数据的共享内存段的运行状态表示为装载完成,并向所述任务消息队列发送任务消息通知以将已装载的所述目标数据复制到所述至少一个目标数据库中;
否则,则先将所述目标数据的部分装载满所述共享内存段,然后锁定所述共享内存头,再将已装载所述目标数据的共享内存段的运行状态表示为装载完成,并向所述任务消息队列发送任务消息通知以将已装载的所述目标数据复制到所述至少一个目标数据库中,然后重新执行步骤b1,直至获取所需的共享内存段并将数据剩余部分全部装载完毕;
或者,如果不存在空闲共享内存段,则阻塞于所述空闲内存通知消息队列上等待出现可读消息后,即重新执行步骤b1。
优选地,所述步骤a、步骤b、步骤c和步骤d的执行进程均配置为至少一个,并且应使得所述源数据的数据装载速度与所述目标数据的数据复制速度相匹配。
优选地,每个所述共享内存体中所述共享内存段的数量均与所述空闲内存通知消息队列的容量相等。
本发明的有益效果在于:本发明的用于异构数据库之间数据复制的系统及方法充分利用了共享内存、消息队列和信号量等技术,可以有效保证在源数据库、共享内存与目标数据库之间多进程并发执行数据的读取、转换、存储与复制等诸多操作,从而能够实现异构数据库的大量数据实时、并发批量复制,本发明的系统及方法具有快速高效、易移植、通用性佳、扩展性高等优点。
【附图说明】
以下将结合附图和实施例,对本发明的技术方案作进一步的详细描述。其中:
图1是本发明的用于异构数据库之间数据复制的系统的较佳实施例的整体架构示意图;
图2是图1中数据装载器的组成结构示意图;
图3是图1中数据共享内存的结构示意图;
图4是本发明的用于异构数据库之间数据复制的方法的较佳实施例的流程图;
图5是图4中将转换后的目标数据装载入数据共享内存处理过程的具体流程图。
【具体实施方式】
请参阅图1,它是本发明的用于异构数据库之间数据复制的系统的一个较佳实施例的整体架构示意图。如图1所示,在该系统中包括源数据处理模块1、初始化模块2、目标数据复制模块3、数据共享内存4和清理模块5,以下将对这些组成模块分别进行详细的说明。
初始化模块2是本系统中用于在计算机上创建并初始化数据共享内存4、消息队列和信号量的部分,其中的每一个数据共享内存4对应于一个目标数据库中的一个目标表,即在本发明系统中是将不同的目标表对应于不同的数据共享内存的。如图3所示,数据共享内存4的具体结构包括:共享内存头41和共享内存体42。其中,共享内存体42又包括一系列的用于存储数据的共享内存段,每个共享内存段中的基本存储单位是数据元,每个数据元完全对应于目标数据库中的一个目标表的一条记录或该记录中部分字段的组合,这样设计的好处在于可以根据需要灵活地配置共享内存段和数据元的数量,从而调节内存的使用,并且同时降低数据库的表与表之间的干扰,减少多进程访问内存时出错的可能性。共享内存头41则是用于存放共享内存体42的管理信息,此类管理信息包括该共享内存体42中共享内存段的数量、该共享内存段中数据元的数量、目标数据记录的长度以及每个共享内存段的运行状态。根据实际使用需要,一般可以将共享内存段的运行状态区分表示为:“空闲”、“装载中”、“装载完成”、“正在使用”四个状态以供其他模块使用,当然本发明也并不局限于上述的此四个状态,在某些情形下也能够灵活地进行增减设置。另外,在本系统所使用的消息队列包括任务消息队列与空闲内存通知消息队列,任务消息队列是用于存放各种任务消息(例如,将数据装载入数据共享内存的任务消息、将数据复制到目标数据库的任务消息等),而空闲内存通知消息队列是专门用于存放通知出现空闲共享内存段的消息。
源数据处理模块1是本系统中重要的中间数据处理部分,它包括数据读取器11、数据适配器12和数据装载器13。其中,数据读取器11是用于从一个或多个源数据库中读取源数据,它可以根据配置参数来连接所需的源数据库并获取所要的数据。数据适配器12则是用于将数据读取器11所读取出的源数据转换成所需的一个或多个目标数据库的目标数据,一个简单的转换实现方法就是将所涉及的全部数据格式都统一处理成符合SQL92规范的格式;此外,根据实际需求,还可以在数据适配器12中设置若干个用于筛选和/或重构数据记录的处理单元(未示出),从而进一步提高它的数据综合处理能力,同时也能够合理地减轻后续各模块的运行负担,提高系统的整体性能。数据装载器13是本系统的关键部件之一,其用于将转换后的目标数据装载入数据共享内存4中,它的具体组成结构和工作原理随后将专门进行详细说明。
目标数据复制模块3是本系统中的数据复制处理部分,它是根据消息队列中的消息(例如,任务消息队列中的将数据复制到目标数据库的任务消息)将已经存放于数据共享内存4中的目标数据按照要求逐一复制到所需的一个或多个目标数据库中。
在完成上述的数据复制工作之后,由清理模块5将所存数据已被复制完毕的数据共享内存4进行清理释放,以供继续被用于存放后续的数据。
以下结合图2,通过揭示数据装载器13的一个较佳实施例的组成结构来说明将数据装载入数据共享内存4的过程和原理。如图2所示,数据装载器13包括:装载单元131、锁定单元132、修改单元133和控制单元134。其中,装载单元131是用于将数据装载入共享内存段,锁定单元132是用于通过信号量锁定共享内存头41,修改单元133是用于修改存于共享内存头41中的共享内存段的运行状态,控制单元134则是用于检索并获取与所需存放的数据相适配的空闲共享内存段,并通过调用装载单元131、锁定单元132与修改单元133以将需要存放的数据完全存放于空闲共享内存段中。控制单元134的具体处理方式是:
A.检索当前是否存在空闲共享内存段,然后根据该检索结果进行如下处理:
如果存在空闲共享内存段,则根据其所对应的共享内存头41中的管理信息,进一步地判断该空闲共享内存段的空间是否大于需要存放的数据所要求的空间,并根据该判断结果进行如下处理:
a1)如果确实大于存放数据所需的空间,则调用装载单元131直接将数据装载于这些空闲共享内存段;
a2)如果等于存放数据所需的空间,则先调用装载单元131装载数据,然后调用锁定单元132锁定共享内存头41,再调用修改单元133将已装载数据的共享内存段的运行状态表示为装载完成,并向任务消息队列发送任务消息通知以将已装载的数据复制到所需的一个或多个目标数据库中;
a3)否则,如果该空闲共享内存段的空间不足以存放下这些数据,则先调用装载单元131将数据的部分装载满共享内存段,然后调用锁定单元132锁定共享内存头41,再调用修改单元133将已装载数据的共享内存段的运行状态表示为装载完成,并向任务消息队列发送任务消息通知以将已装载的数据复制到所需的一个或多个目标数据库中,然后重新执行上述的检索当前是否存在空闲共享内存段的过程,直至获取所需的共享内存段并将数据剩余部分全部装载完毕;
或者,如果不存在空闲共享内存段,则阻塞于空闲内存通知消息队列上等待出现可读消息后,即重新按照上述的过程A执行。
值得注意的是,本系统中的初始化模块2、源数据处理模块1、目标数据复制模块3和清理模块5均能配置成多个并发执行。而且,根据实际经验,目标数据复制模块3涉及到的操作比较耗时,一次可以适当增加其配置数目,以尽可能使得源数据处理模块1的数据装载速度与目标数据复制模块3的数据复制速度相匹配,从而在一定的初始化条件下能使得整个的共享内存段得以高效地轮转利用。
另外,在采用多进程并发的模式后,可能有时会出现源数据处理模块1在某个时刻不能获得可用的空闲共享内存段的情况。为了减少监听空闲内存通知消息队列的时间,将该消息队列的容量N设置为与每个共享内存体42中的共享内存段的数量相等,这样就可以保证源数据处理模块1最多在N+1次访问空闲内存通知消息队列中的消息后,就可以成功找到空闲的共享内存段,以有利于整体协调本系统的执行效率。
在图4中示出了本发明的用于异构数据库之间数据复制的方法的一个较佳实施例的流程图,其步骤具体如下:
首先,执行步骤S11,在计算机中创建并初始化数据共享内存、消息队列和信号量以用于存储数据;
其次,在步骤S12中,从至少一个源数据库中读取所需的数据;
然后,执行步骤S13,将所读取的数据转换成至少一个目标数据库的目标数据;
接着,在步骤S14中,再将转换后的目标数据装载入数据共享内存;
随后,执行步骤S15,根据消息队列中的消息将数据共享内存中的目标数据复制到至少一个目标数据库中;
最后,在步骤S16中,释放所存数据已被复制完毕的数据共享内存。
在以上描述中涉及的数据共享内存、消息队列、信号量,以及数据共享内存、共享内存头、共享内存体等的具体情况,请对照本发明系统中的相关说明,在此不再赘述。
再请参阅图5,它是图4中步骤S14所执行的将转换后的目标数据装载入数据共享内存处理过程的具体流程图,该处理过程包括如下的步骤:
首先,在步骤S100中,开始检索当前是否存在空闲的共享内存段;
然后,在步骤S101中,判断所得的检索结果;
如果存在空闲共享内存段,则执行步骤S102,根据空闲共享内存段对应的共享内存头中管理信息,以进一步判断该空闲共享内存段的空间是否大于存放上述目标数据所需要的空间;
如果该空闲共享内存段的空间大于存放这些目标数据所需要的空间,则执行步骤S103,直接将这些目标数据装载于空闲共享内存段,然后执行步骤S104向任务消息队列发送任务消息通知以将已装载的这些目标数据复制到所需的一个或多个目标数据库中;
否则,在步骤S105中,进一步判断空闲共享内存段的空间是否正好等于存放这些目标数据所需要的空间;
如果该空闲共享内存段的空间确实等于存放这些目标数据所需要的空间,则在步骤S106中先装载这些目标数据,然后在步骤S107中锁定该共享内存头,再在步骤S108中将已装载这些目标数据的共享内存段的运行状态表示为装载完成,并在步骤S109中,向任务消息队列发送任务消息通知以将已装载的这些目标数据复制到所需的一个或多个目标数据库中;
否则,即在出现该空闲共享内存段的空间小于存放这些目标数据所需要空间的情形时,在步骤S110中先将这些目标数据的部分装载满该共享内存段,然后在步骤S111中锁定该共享内存头,再在步骤S112中将已装载目标数据的共享内存段的运行状态表示为装载完成,并在步骤S113中向任务消息队列发送任务消息通知以将已装载的目标数据复制到所需的一个或多个目标数据库中;然后,重新执行步骤S100,直至获取所需的共享内存段并将这些目标数据的剩余部分全部装载完毕;
如果不存在空闲共享内存段,则执行步骤S114,阻塞于空闲内存通知消息队列上等待出现可读消息;
随后,在步骤S115中,判断是否在空闲内存通知消息队列上出现可读消息;
如果出现可读消息,即重新执行步骤S100;否则,重新执行步骤S114。
通过以上描述,已经揭示出了本发明的用于异构数据库之间数据复制方法的详细过程。然后,在上述较佳实施例的基础上还可以进行进一步地改进。例如,在本发明方法的另一个实施例中,在步骤S13中又加入了在向目标数据库的目标数据格式进行转换之前或之后,对数据记录进行筛选和/或重构的处理步骤。而在本发明方法的又一个实施例中,将所涉及到的读取、转换、装载、复制和/或清理等各数据处理进程均配置为一个或多个,并尽量使得源数据的数据装载速度与目标数据的数据复制速度相匹配。在本发明方法的再一个实施例中,将空闲内存通知消息队列的容量设置为与每个共享内存体中的共享内存段的数量相等。
在这些本发明方法的实施例中新增的技术特征的优点已在此前的本发明系统中进行了详细说明,故不再赘述。但是,这些技术特征还可以被任意地叠加或组合而能够获得更佳的技术效果。
需要说明的是,由于在银行、金融、证券、电子商务等诸多行业领域存在大量的异构数据库之间数据转换、复制处理业务,因此本发明所提供的系统及方法特别适用于这些行业领域。
以上列举了若干具体实施例来详细阐明本发明的一种用于异构数据库之间数据复制的系统及方法,这些个例仅供说明本发明的原理及其实施方式之用,而非对本发明的限制,在不脱离本发明的精神和范围的情况下,本领域的普通技术人员还可以作出各种变形和改进,因此所有等同的技术方案均应属于本发明的范畴并为本发明的各项权利要求所限定。
Claims (10)
1.一种用于异构数据库之间数据复制的系统,其特征在于,该系统包括:
初始化模块,其用于在计算机中创建并初始化数据共享内存、消息队列和信号量以用于存储数据;
源数据处理模块,其包括:数据读取器、数据适配器和数据装载器,所述数据读取器用于从至少一个源数据库中读取源数据,所述数据适配器用于将所述数据读取器读取的源数据转换成至少一个目标数据库的目标数据,所述数据装载器用于将转换后的所述目标数据装载入所述数据共享内存;
目标数据复制模块,其用于根据所述消息队列中的消息将所述数据共享内存中的所述目标数据复制到所述至少一个目标数据库中;以及
清理模块,其用于释放所存数据已被复制完毕的所述数据共享内存;
其中,每一个所述数据共享内存对应于一个目标数据库中的一个目标表,所述数据共享内存的结构包括:
共享内存体,其包括多个用于存储数据的共享内存段,每个所述共享内存段中的基本存储单位是数据元,所述数据元对应于所述目标数据库中的一个目标表的一条记录或该记录中部分字段的组合;以及
共享内存头,其用于存放所述共享内存体的管理信息,所述管理信息包括该共享内存体中所述共享内存段的数量、该共享内存段中所述数据元的数量、所述目标数据记录的长度以及每个所述共享内存段的运行状态;
所述消息队列包括:任务消息队列与空闲内存通知消息队列,所述任务消息队列用于存放任务消息,所述空闲内存通知消息队列用于存放通知出现空闲共享内存段的消息。
2.根据权利要求1所述的用于异构数据库之间数据复制的系统,其特征在于,所述数据适配器还包括用于筛选和/或重构数据记录的处理单元。
3.根据权利要求1所述的用于异构数据库之间数据复制的系统,其特征在于,所述数据装载器包括:
装载单元,其用于将数据装载入所述共享内存段;
锁定单元,其用于通过所述信号量锁定所述共享内存头;
修改单元,其用于修改存于所述共享内存头中的所述共享内存段的运行状态;以及
控制单元,其用于检索并获取与所需存放的数据相适配的空闲共享内存段,并通过调用所述装载单元、所述锁定单元与所述修改单元以将所需存放的数据完全存放于所述空闲共享内存段中。
4.根据权利要求1-3中任一项所述的用于异构数据库之间数据复制的系统,其特征在于,所述初始化模块、源数据处理模块、目标数据复制模块和清理模块均配置为至少一个,并且所述源数据处理模块与所述目标数据复制模块的配置数目应使得所述源数据处理模块的数据装载速度与所述目标数据复制模块的数据复制速度相匹配。
5.根据权利要求1-3中任一项所述的用于异构数据库之间数据复制的系统,其特征在于,每个所述共享内存体中所述共享内存段的数量均与所述空闲内存通知消息队列的容量相等。
6.一种用于异构数据库之间数据复制的方法,其特征在于,该方法包括如下步骤:
a、在计算机中创建并初始化数据共享内存、消息队列和信号量以用于存储数据;
b、从至少一个源数据库中读取数据,然后将所读取的数据转换成至少一个目标数据库的目标数据,再将转换后的所述目标数据装载入所述数据共享内存;
c、根据所述消息队列中的消息将所述数据共享内存中的所述目标数据复制到所述至少一个目标数据库中;以及
d、释放所存数据已被复制完毕的所述数据共享内存;
其中,每一个所述数据共享内存对应于一个目标数据库中的一个目标表,所述数据共享内存的结构包括:
共享内存体,其包括多个用于存储数据的共享内存段,每个所述共享内存段中的基本存储单位是数据元,所述数据元对应于所述目标数据库中的一个目标表的一条记录或该记录中部分字段的组合;以及
共享内存头,其用于存放所述共享内存体的管理信息,所述管理信息包括该共享内存体中所述共享内存段的数量、该共享内存段中所述数据元的数量、所述目标数据记录的长度以及每个所述共享内存段的运行状态;
所述消息队列包括:任务消息队列与空闲内存通知消息队列,所述任务消息队列用于存放任务消息,所述空闲内存通知消息队列用于存放通知出现空闲共享内存段的消息。
7.根据权利要求6所述的用于异构数据库之间数据复制的方法,其特征在于,所述步骤b中还包括对所读取的源数据记录进行筛选和/或重构的处理步骤。
8.根据权利要求6所述的用于异构数据库之间数据复制的方法,其特征在于,所述步骤b中将转换后的所述目标数据装载入所述数据共享内存的具体步骤包括:
b1、检索当前是否存在空闲的共享内存段;
b2、判断所得的检索结果,并进行如下的处理:
如果存在空闲共享内存段,则根据所述空闲共享内存段对应的共享内存头中的所述管理信息,进一步判断所述空闲共享内存段的空间是否大于存放所述目标数据所需要的空间:
如果大于所需要的空间,则直接将所述目标数据装载于该空闲共享内存段,然后向所述任务消息队列发送任务消息通知以将已装载的所述目标数据复制到所述至少一个目标数据库中;
如果等于所需要的空间,则先装载所述目标数据,然后锁定所述共享内存头,再将已装载所述目标数据的共享内存段的运行状态表示为装载完成,并向所述任务消息队列发送任务消息通知以将已装载的所述目标数据复制到所述至少一个目标数据库中;
否则,则先将所述目标数据的部分装载满所述共享内存段,然后锁定所述共享内存头,再将已装载所述目标数据的共享内存段的运行状态表示为装载完成,并向所述任务消息队列发送任务消息通知以将已装载的所述目标数据复制到所述至少一个目标数据库中,然后重新执行步骤b1,直至获取所需的共享内存段并将数据剩余部分全部装载完毕;
或者,如果不存在空闲共享内存段,则阻塞于所述空闲内存通知消息队列上等待出现可读消息后,即重新执行步骤b1。
9.根据权利要求6-8中任一项所述的用于异构数据库之间数据复制的方法,其特征在于,所述步骤a、步骤b、步骤c和步骤d的执行进程均配置为至少一个,并且应使得所述源数据的数据装载速度与所述目标数据的数据复制速度相匹配。
10.根据权利要求6-8中任一项所述的用于异构数据库之间数据复制的方法,其特征在于,每个所述共享内存体中所述共享内存段的数量均与所述空闲内存通知消息队列的容量相等。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101950227A CN102004743B (zh) | 2009-09-02 | 2009-09-02 | 一种用于异构数据库之间数据复制的系统及方法 |
EP10813235.8A EP2474919B1 (en) | 2009-09-02 | 2010-08-31 | System and method for data replication between heterogeneous databases |
US13/393,206 US8527459B2 (en) | 2009-09-02 | 2010-08-31 | System and method for data replication between heterogeneous databases |
PCT/CN2010/001322 WO2011026313A1 (zh) | 2009-09-02 | 2010-08-31 | 一种用于异构数据库之间数据复制的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101950227A CN102004743B (zh) | 2009-09-02 | 2009-09-02 | 一种用于异构数据库之间数据复制的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102004743A CN102004743A (zh) | 2011-04-06 |
CN102004743B true CN102004743B (zh) | 2013-08-14 |
Family
ID=43648849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101950227A Active CN102004743B (zh) | 2009-09-02 | 2009-09-02 | 一种用于异构数据库之间数据复制的系统及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8527459B2 (zh) |
EP (1) | EP2474919B1 (zh) |
CN (1) | CN102004743B (zh) |
WO (1) | WO2011026313A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776145A (zh) * | 2016-12-29 | 2017-05-31 | 上海爱数信息技术股份有限公司 | 数据库备份性能的控制方法、系统及服务器 |
CN108536544A (zh) * | 2018-03-21 | 2018-09-14 | 微梦创科网络科技(中国)有限公司 | 基于数据库消息队列的消费方法、装置、服务器和介质 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8458635B2 (en) * | 2009-12-04 | 2013-06-04 | Synopsys, Inc. | Convolution computation for many-core processor architectures |
JP5850224B2 (ja) * | 2011-02-28 | 2016-02-03 | 株式会社リコー | 管理システム、及びプログラム |
CN102999537B (zh) * | 2011-09-19 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 一种数据迁移系统和方法 |
CN103593721B (zh) * | 2012-08-13 | 2016-10-05 | 中国商用飞机有限责任公司 | 基于复杂事件处理的业务流程监控方法 |
CN103049533A (zh) * | 2012-12-23 | 2013-04-17 | 北京人大金仓信息技术股份有限公司 | 一种快速向数据库加载数据的方法 |
CN103092700B (zh) | 2013-02-01 | 2016-09-28 | 华为终端有限公司 | 内存清理方法、装置和终端设备 |
CN103678603B (zh) * | 2013-12-13 | 2017-01-25 | 江苏物联网研究发展中心 | 多源异构数据高效汇聚存取架构系统 |
CN105095294B (zh) * | 2014-05-15 | 2019-08-09 | 中兴通讯股份有限公司 | 一种分布式存储系统中管理异构副本的方法及装置 |
CN105989049A (zh) * | 2015-02-05 | 2016-10-05 | 天脉聚源(北京)科技有限公司 | 一种数据中间层实现方法及系统 |
WO2016200412A1 (en) * | 2015-06-09 | 2016-12-15 | Hewlett Packard Enterprise Development Lp | Data replication management |
CN105205117B (zh) * | 2015-09-09 | 2019-03-05 | 郑州悉知信息科技股份有限公司 | 一种数据表迁移方法和装置 |
CN105512240A (zh) * | 2015-11-30 | 2016-04-20 | 中国建设银行股份有限公司 | 一种基于不同数据库的数据复制方法和系统 |
CN105824916B (zh) * | 2016-03-16 | 2019-05-31 | 上海携程商务有限公司 | 数据同步系统及方法 |
CN107229657A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 数据迁移方法及装置 |
CN105978997A (zh) * | 2016-06-24 | 2016-09-28 | 北京百度网讯科技有限公司 | 数据传输方法和系统 |
CN106168916B (zh) * | 2016-06-24 | 2018-06-26 | 北京百度网讯科技有限公司 | 数据传输方法和系统 |
CN106354586B (zh) * | 2016-09-05 | 2020-08-14 | 上海爱数信息技术股份有限公司 | 数据库备份性能的控制方法、系统及具有该系统的服务器 |
CN106789978A (zh) * | 2016-12-07 | 2017-05-31 | 高新兴科技集团股份有限公司 | 一种数据汇聚系统和方法 |
CN108416678A (zh) * | 2017-05-05 | 2018-08-17 | 平安科技(深圳)有限公司 | 多维度数据对账方法及系统 |
CN108762822B (zh) * | 2018-03-23 | 2021-11-16 | 中国银联股份有限公司 | 一种数据加载方法及装置 |
CN110555065A (zh) * | 2018-03-28 | 2019-12-10 | 中国移动通信集团广东有限公司 | 一种数据处理方法及装置 |
CN108572635A (zh) * | 2018-07-30 | 2018-09-25 | 天津中德应用技术大学 | 基于共享内存池和改进型时间片轮转法的工业网络节点 |
CN109558417B (zh) * | 2018-11-28 | 2023-08-08 | 亚信科技(南京)有限公司 | 一种数据处理方法和系统 |
CN110795508B (zh) * | 2019-11-04 | 2023-04-07 | 中国建设银行股份有限公司 | 数据的复制方法、装置、设备和存储介质 |
CN111666338B (zh) * | 2020-05-26 | 2023-08-15 | 中国工商银行股份有限公司 | 数据复制方法、控制节点及电子设备 |
CN113176951A (zh) * | 2021-04-20 | 2021-07-27 | 京东数字科技控股股份有限公司 | 消息复制方法、装置、设备及计算机可读介质 |
US12032594B2 (en) * | 2022-08-19 | 2024-07-09 | Mastercard International Incorporated | Systems and methods for use in replicating data |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758125A (en) * | 1995-12-28 | 1998-05-26 | Newframe Corporation Ltd. | Method of sharing data in a heterogeneous computer system |
CN1738242A (zh) * | 2004-08-20 | 2006-02-22 | 中兴通讯股份有限公司 | 一种异构系统之间数据安全共享的装置及方法 |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4638424A (en) * | 1984-01-12 | 1987-01-20 | International Business Machines Corporation | Managing data storage devices connected to a digital computer |
JP4390618B2 (ja) * | 2004-04-28 | 2009-12-24 | 富士通株式会社 | データベース再編成プログラム、データベース再編成方法、及びデータベース再編成装置 |
CN100489846C (zh) | 2004-09-13 | 2009-05-20 | 东洋工程株式会社 | 信息管理装置和方法 |
CN100382082C (zh) | 2005-09-07 | 2008-04-16 | 上海大地软件有限公司 | 地理信息的检索和显示方法及使用该方法的检索和显示系统 |
US7668878B2 (en) * | 2006-07-31 | 2010-02-23 | Oracle International Corporation | Replicating data between heterogeneous data systems |
US7783601B2 (en) * | 2007-11-08 | 2010-08-24 | Oracle International Corporation | Replicating and sharing data between heterogeneous data systems |
-
2009
- 2009-09-02 CN CN2009101950227A patent/CN102004743B/zh active Active
-
2010
- 2010-08-31 WO PCT/CN2010/001322 patent/WO2011026313A1/zh active Application Filing
- 2010-08-31 US US13/393,206 patent/US8527459B2/en active Active
- 2010-08-31 EP EP10813235.8A patent/EP2474919B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758125A (en) * | 1995-12-28 | 1998-05-26 | Newframe Corporation Ltd. | Method of sharing data in a heterogeneous computer system |
CN1738242A (zh) * | 2004-08-20 | 2006-02-22 | 中兴通讯股份有限公司 | 一种异构系统之间数据安全共享的装置及方法 |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
Non-Patent Citations (2)
Title |
---|
数据库通用维护系统研究与实现;赵鹏;《中国优秀硕士论文电子期刊网》;20021215;第12页 * |
赵鹏.数据库通用维护系统研究与实现.《中国优秀硕士论文电子期刊网》.2002,正文第12页. |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776145A (zh) * | 2016-12-29 | 2017-05-31 | 上海爱数信息技术股份有限公司 | 数据库备份性能的控制方法、系统及服务器 |
CN106776145B (zh) * | 2016-12-29 | 2020-04-03 | 上海爱数信息技术股份有限公司 | 数据库备份性能的控制方法、系统及服务器 |
CN108536544A (zh) * | 2018-03-21 | 2018-09-14 | 微梦创科网络科技(中国)有限公司 | 基于数据库消息队列的消费方法、装置、服务器和介质 |
CN108536544B (zh) * | 2018-03-21 | 2021-06-25 | 微梦创科网络科技(中国)有限公司 | 基于数据库消息队列的消费方法、装置、服务器和介质 |
Also Published As
Publication number | Publication date |
---|---|
US20120246116A1 (en) | 2012-09-27 |
EP2474919A4 (en) | 2014-04-30 |
EP2474919A1 (en) | 2012-07-11 |
US8527459B2 (en) | 2013-09-03 |
WO2011026313A1 (zh) | 2011-03-10 |
EP2474919B1 (en) | 2019-10-30 |
CN102004743A (zh) | 2011-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102004743B (zh) | 一种用于异构数据库之间数据复制的系统及方法 | |
CN108804112B (zh) | 一种区块链落账处理方法及系统 | |
US7979399B2 (en) | Database journaling in a multi-node environment | |
Lampson et al. | A new presumed commit optimization for two phase commit | |
AU770289B2 (en) | Method and apparatus for concurrent DBMS table operations | |
CN101753608B (zh) | 分布式系统的调度方法及系统 | |
CN101625655B (zh) | 一种内存数据库的并行恢复方法 | |
US20070233756A1 (en) | Retro-fitting synthetic full copies of data | |
CN102831120A (zh) | 一种数据处理方法及系统 | |
EP2052337A2 (en) | Retro-fitting synthetic full copies of data | |
CN102495906A (zh) | 一种实现断点续传的增量式数据迁移方法 | |
CN109144783B (zh) | 一种分布式海量非结构化数据备份方法及系统 | |
CN103455526A (zh) | 一种etl数据处理方法、装置及系统 | |
CN101093454A (zh) | 一种在分布式系统中执行sql脚本文件的方法和装置 | |
CN109669975B (zh) | 一种工业大数据处理系统及方法 | |
CN107817945A (zh) | 一种混合内存结构的数据读取方法和系统 | |
WO2015183316A1 (en) | Partially sorted log archive | |
Santos et al. | Optimizing data warehouse loading procedures for enabling useful-time data warehousing | |
CN105353988A (zh) | 一种元数据读写方法及装置 | |
WO2001059628A1 (en) | High availability database system using live/load database copies | |
US20080243949A1 (en) | Divided backup of data warehouse | |
CN101339527B (zh) | 影子内存的备份方法及装置 | |
US7979400B2 (en) | Database journaling in a multi-node environment | |
Zhao et al. | Toward efficient and flexible metadata indexing of big data systems | |
CN115934718A (zh) | 基于多版本时间戳排序机制的数据闪回查询或闪回恢复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |