CN102004745A - 数据转移系统及方法 - Google Patents
数据转移系统及方法 Download PDFInfo
- Publication number
- CN102004745A CN102004745A CN2009101950250A CN200910195025A CN102004745A CN 102004745 A CN102004745 A CN 102004745A CN 2009101950250 A CN2009101950250 A CN 2009101950250A CN 200910195025 A CN200910195025 A CN 200910195025A CN 102004745 A CN102004745 A CN 102004745A
- Authority
- CN
- China
- Prior art keywords
- data
- service module
- database
- target
- main frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
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
技术领域
本发明涉及数据转移系统和方法,更具体地,涉及多平台数据库的数据转移系统和方法。
背景技术
目前,随着数据库系统应用的不断增加和日益普及,多个数据库之间的数据转移变得越来越常见和重要,并且,在同一数据库应用系统中往往包含有多种平台的数据库,因此,同/异构数据库之间的数据平滑转移技术也是市场迫切需要的。商用数据库具备一定的复制能力,但是必须在诸多限制的理想情况下工作,因而具有较大的局限性。独立的数据复制软件具有点对点复制数据库的体系结构,因而不能灵活地解决具有复杂拓扑结构的多个同/异构数据库间的数据转移。此外还有针对特定应用系统而专门开发的数据转移软件,然而此种数据转移软件缺乏通用性。综上所述,已有的数据库间的数据转移技术存在如下缺点:成本较高;对数据库或数据表的影响较大,偶合度高(即适应于A类数据库或数据表的数据转移软件不适应B类数据库或数据表),甚至需要在源数据库上建立触发器或依赖于特定数据库产品的特定功能的支持,因而缺乏通用性和扩展性;功能单一,无法同时支持准实时(即分钟级转移)和实时(即秒级转移)两种模式的转移;较难甚至无法实现异构数据库间的数据转移,即较难甚至无法实现数据的过滤、变形,从而数据库系统的容灾和恢复能力较差。
另外,随着数据库技术的迅速发展,大型数据库系统为了满足越来越多的应用需求,都支持并发操作。同时,为了进一步提高数据库的插入性能,很多数据库产品开始支持批量插入技术。已有的将大量待插入的动态数据迅速插入指定目标库中的方法有如下几种:(1)将待插入的动态数据保存成数据库文件,通过数据库备份或者通过数据库提供的加载工具批量导入;(2)通过多进程并发,将数据通过多个链接插入到数据库中;(3)通过批量插入,即一次提交多条数据。然而,上述方法存在如下缺点:方法(1)需要额外的磁盘空间,并且保存文件时的输入/输入操作比较耗时;在方法(2)中,虽然多进程并发执行,但是每个进程一次仅提交一条记录,因而效率很低;在方法(3)中,如果一次提交大量数据,则需要较大的日志空间,因而一旦提交失败,会造成整体失败。因此,可以最大限度地发挥数据库性能的批量插入技术也是市场迫切需要的。
发明内容
为了解决上述现有技术方案所存在的缺陷,本发明提出了一种可在数据库间(包括同构和异构)进行数据转移的数据转移系统和方法,并且该数据转移系统和方法同时支持准实时(即分钟级转移)和实时(即秒级转移)两种模式的数据转移。
本发明的目的是通过以下技术方案实现的:
一种数据转移系统,所述数据转移系统包括至少一个主机、至少一个源数据库、至少一个目标数据库、参数配置数据库以及控制数据库;其中,所述参数配置数据库与所述至少一个主机相连接,用于存储配置参数并响应所述至少一个主机的请求而将所述配置参数提供给所述至少一个主机。所述控制数据库与所述至少一个主机相连接,用于存储控制信息并响应所述至少一个主机的请求而将所述控制信息提供给所述至少一个主机,所述至少一个源数据库分别与所述至少一个主机相连接,用于提供待转移的源数据,所述至少一个目标数据库分别与所述至少一个主机相连接,用于接收待转移的目标数据;并且,每个所述主机均包括总控模块、源数据获取服务模块、目标表更新服务模块,所述总控模块用于总体调控转移任务并装载所述配置参数;其特征在于,所述源数据获取服务模块接受所述总控模块的调度从而获取源数据、生成目标数据、并调用目标表更新服务模块,所述源数据获取服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,并调用所述转移任务对应的子处理,所述附件部分为动态函数库,所述动态函数库封装源数据获取、数据形变子处理。
在上面公开的方案中,优选地,所述目标表更新服务模块接受所述源数据获取服务模块的调度而将所述目标数据插入或更新到目标表中,并且所述目标表更新服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子处理,附件部分为动态函数库,所述动态函数库封装目标数据的插入和更新子处理。
在上面公开的方案中,优选地,所述总控模块为分钟级转移总控模块或秒级转移总控模块,其中,所述分钟级转移总控模块用于完成准实时数据转移任务,所述秒级转移总控模块用于完成实时数据转移任务。
在上面公开的方案中,优选地,所述目标表更新服务模块进一步包括批量数据库更新子模块,所述批量数据库更新子模块以如下方式进行插入和/或更新过程:
(C1)将待插入的数据分割成块,每块可存放多条所述数据;
(C2)多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将所述数据插入或更新到所述目标数据库中;
(C3)如果步骤(C2)成功,则所述进程可以继续处理其他数据块,如果步骤(C2)失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。
在上面公开的方案中,优选地,所述总控模块部署于每个所述主机上,其中,所述至少一个主机中只有一个主机具有任务调度功能。
在上面公开的方案中,优选地,所述源数据获取服务模块包括形变处理子模块,所述形变处理子模块通过调用动态形变函数而完成对源数据的形变处理,从而生成目标数据。
在上面公开的方案中,优选地,所述至少一个源数据库和所述至少一个目标数据库是异构的。
在上面公开的方案中,优选地,所述参数配置数据库和所述控制数据库共存于一个数据库中。
本发明的目的是通过以下技术方案实现的:
一种数据转移方法,所述数据转移方法包括如下步骤:
(D1)初始化至少一个主机中的总控模块,并读取转移控制信息和参数配置信息;
(D2)初始化至少一个主机中的源数据获取服务模块和目标表更新服务模块,并且所述目标表更新服务模块创建数据存储区;
(D3)所述控制模块根据所读取的转移控制信息和参数配置信息调用所述源数据获取服务模块,并将转移任务参数传递给所述源数据获取服务模块;
(D4)所述源数据获取服务模块连接至少一个源数据库从而获取所述至少一个源数据库的环境变量,并根据所述转移任务参数读取所述源数据库中相应的数据库记录;
(D5)所述源数据获取服务模块对已读取的数据库记录进行形变处理从而得到目标记录,并将所述目标记录写入所述数据存储区中;
(D6)重复步骤(D4)-(D5)直至所述数据存储区已写满:
(D7)所述数据存储区写满后,所述源数据获取服务模块调用所述目标表更新服务模块,并将转移任务参数传递给所述目标表更新服务模块;
(D8)所述目标表更新服务模块连接至少一个目标数据库以及所述数据存储区,从而获取所述至少一个目标数据库的环境变量,并对接收的所述转移任务参数进行解析;
(D9)所述目标表更新服务模块依据解析结果对所述至少一个目标数据库进行批量插入和更新直至转移任务完成;
(D10)转移任务完成后,所述目标表更新服务模块释放所述数据存储区;
其特征在于,所述源数据获取服务模块接受所述总控模块的调度从而获取源数据、生成目标数据、并调用目标表更新服务模块,所述源数据获取服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,并调用所述转移任务对应的子处理,所述附件部分为动态函数库,所述动态函数库封装源数据获取、数据形变子处理
在上面公开的方案中,优选地,所述目标表更新服务模块接受所述源数据获取服务模块的调度而将所述目标数据插入或更新到目标表中,并且所述目标表更新服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子处理,附件部分为动态函数库,所述动态函数库封装目标数据的插入和更新子处理。
在上面公开的方案中,优选地,所述数据转移方法中的步骤(D9)进一步包括如下步骤:(E1)将待插入的数据分割成块,每块可存放多条所述数据;(E2)多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将所述数据插入或更新到所述至少一个目标数据库中;(E3)如果步骤(E2)成功,则所述进程可以继续处理其他数据块,如果步骤(E2)失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。
在上面公开的方案中,优选地,所述总控模块为分钟级转移总控模块或秒级转移总控模块,其中,所述分钟级转移总控模块用于完成准实时数据转移任务,所述秒级转移总控模块用于完成实时数据转移任务。
在上面公开的方案中,优选地,所述总控模块部署于每个所述主机上,其中,所述至少一个主机中只有一个主机具有任务调度功能。
在上面公开的方案中,优选地,所述源数据获取服务模块包括形变处理子模块,所述形变处理子模块通过调用动态形变函数而完成对源数据的形变处理,从而生成目标数据。
在上面公开的方案中,优选地,所述至少一个源数据库和所述至少一个目标数据库是异构的。
本发明所公开的数据转移系统和方法具有如下优点:由于使用动态函数库封装了源数据选取和数据形变过程,因此本发明所公开的数据转移系统和方法不但复杂度低而且可以灵活应对不同状况的转移任务,即可以实现同/异构数据库间的数据转移;另外,本发明所公开的数据转移系统和方法可以同时支持准实时(即分钟级转移)和实时(即秒级转移)两种模式的数据转移。此外,由于在数据的插入和更新过程中,并发处理和批量操作相结合,因此可以最大限度地发挥数据库的性能。综上所述,本发明所公开的数据转移系统和方法是一种通用,灵活、高度封装、高稳定性的系统和方法。
附图说明
结合附图,本发明的技术特征以及优点将会被本领域技术人员更好地理解,其中:
图1为根据本发明的实施例的数据转移系统的结构图;
图2为根据本发明的实施例的源数据获取服务模块的工作流程图;
图3为根据本发明的实施例的目标表更新服务模块的工作流程图;
图4为根据本发明的实施例的数据转移方法的流程图;
具体实施方式
图1为根据本发明的实施例的数据转移系统的结构图。如图1所示,本发明公开的数据转移系统包括至少一个主机H1,优选地包括多个主机H1-H3(即服务器),至少一个源数据库S1,优选地包括多个源数据库S1-SN、至少一个目标数据库P1,优选地包括多个目标数据库P1-PN、参数配置数据库1以及控制数据库2。其中,所述参数配置数据库1与所述主机H1-H3相连接,用于存储配置参数并响应所述主机H1-H3的请求而将该配置参数提供给所述主机H1-H3。所述控制数据库2与所述主机H1-H3相连接,用于存储控制信息(即数据转移程序参数以及转移动态信息)并响应所述主机H1-H3的请求而将该控制信息提供给所述主机H1-H3,即使转移进程出现异常而中断,当重新启动时仍然可以从所述控制数据库2中获取所有控制信息并继续进行转移操作,从而保证数据的完整性和可靠性。所述源数据库S1-SN分别与所述主机H1-H3相连接,用于提供待转移的源数据。所述目标数据库P1-PN分别与所述主机H1-H3相连接,用于接收待转移的目标数据。其中,可选地,所述参数配置数据库1和所述控制数据库2可以共存于一个数据库中。
如图1所示,所述主机H1-H3中的每个主机均包括总控模块3(分钟级转移总控模块或秒级转移总控模块)、源数据获取服务模块4、目标表更新服务模块5。其中,所述总控模块3用于总体任务调控和配置参数的内存装载,即所述分钟级转移总控模块和秒级转移总控模块单独部署,当需要分钟级转移服务时启动分钟级总控服务模块,当需要秒级转移服务时启动秒级总控服务模块。
如图1所示,总控模块3在每台主机上均有一个,但通过参数控制,主机群组中只有一个主机具备任务调度的功能。因此,一旦具备任务调度功能的主机异常,可在备份主机上启动总控模块的任务调度功能。因此,各主机上的源数据获取服务模块4和目标表更新服务模块5均处于工作状态,从而提高了系统的处理性能和容灾能力。
如图1所示,所述分钟级总控服务模块用于初始化转移控制信息,并将转移控制信息平均传递给多台主机的转移服务,随后控制数据转移时间片的推进及状态的更新,同时,所述分钟级总控服务模块还可以通过配置参数而实现数据转移过程中转移任务的分发和转移进程的报告。所述时间片的含义如下:在本发明所公开的数据转移系统中,根据配置将时间段人为划分成逻辑上的若干小段,所述一小段的时间即为一个时间片。所述配置信息包括:转移开始时间、转移时间片、每循环更新当前转移结束时间的次数、转移结束时间与当前系统时间的间隔、数据库连接信息和主机个数。
如图1所示,所述秒级总控服务模块用于将n秒(例如,n<10)前的数据从源数据表转移到目标数据表中,即根据数据库中的数据转移控制表的信息,分配转移任务给转移服务,并推进转移的时间片进度,同时,所述秒级总控服务模块还可以通过配置参数而实现数据转移过程中转移任务的分发和转移进程的报告。所述配置信息包括:转移开始时间、转移时间片、每循环更新当前转移结束时间的次数、转移结束时间与当前系统时间的间隔、数据库连接信息和主机个数。
图2为根据本发明的实施例的源数据获取服务模块4的工作流程图。如图2所示,源数据获取服务模块4的工作过程如下:(A1)初始化并连接源数据库S1-SN;(A2)接收总控模块3(分钟级转移总控模块或秒级转移总控模块)的调用;(A3)根据总控模块3的调用信息获取转移任务参数;(A4)判断所述任务参数所指示的任务;(A5)如果所述任务为“待更新”,则更新控制表中的转移状态为“更新中”,如果所述任务为“转移”,则更新控制表的转移状态为“转移中”;(A6)获取源数据库S1-SN的环境变量;(A7)根据已获取的源数据库S1-SN的环境变量,进一步获取源数据的首记录并判断是否无记录;(A8)如果无记录且所述任务为“待更新”,则更新控制表的转移状态为“全部完成”并结束本次源数据获取服务,如果无记录且所述任务为转移,则更新控制表的转移状态为“转移完成”并结束本次源数据获取服务;(A9)如果有记录,则判断记录是否已全部处理完毕;如果记录已全部处理完毕,则调用目标表更新服务模块5并结束本次源数据获取服务;(A10)如果还存在未处理的数据,则判断该记录是否需要形变处理;(A11)如果该记录不需要形变处理,则调用缺省的目标表更新服务;(A12)如果该记录需要形变处理,则进行形变处理,如果形变结果集头指针为空(即形变失败),则返回步骤(A9);(A13)如果形变结果集头指针不为空(即形变成功),则获取指针所指的目标记录,并调用特定的目标表更新服务5;(A14)将所述目标记录写入目标表对应的数据存储区中;(A15)重复步骤(A9)-(A14),直至所述数据存储区已写满;(A16)调用目标表更新服务模块5,并记录后续服务应处理次数,并调用后续服务。其中,所述形变的含义如下:当源数据记录与目标数据记录不一致时,需要进行数据转换与目标表定位,所述数据转换与目标表定位的过程被称之为形变。
所述源数据获取服务模块4包括如下子模块:
初始化子模块,用于获取参数信息,初始化全局控制变量和临时数据存储区信号量,设置主机组群状态信息等;
源数据选择子模块,用于从源数据表中选取待转移的数据;形变处理子模块,该模块可通过调用外部形变函数而完成形变处理;
目标表更新服务确定子模块,用于根据目标数据库,目标数据表确定目标更新服务名,目标所在的数据存储区的关键字和互斥信号量,空闲控制消息队列的关键字等;
写数据存储区子模块,该子模块可将变形后的数据在信号量互斥保护下写入任务所对应的数据存储区的对应段,以便供目标表更新服务子模块读取,其中,当所有内存段均不可用时,该子模块可以阻塞方式读取任务所对应的空闲控制消息队列,当读到消息后,继续在信号量保护下寻找空闲的数据存储区;
调用目标表更新服务子模块,用于创建更新数据存储区,并根据目标表更新服务确定子模块的确定结果统计后续服务应调用次数,同时,将目标记录写入临时数据存储区。
所述源数据获取服务模块4还包括异常处理子模块。当初始化失败时,该子模块调用公共报错服务并记录日志。当连接数据库失败时,该子模块将重连数据库并记录日志。当数据选取失败时,该子模块将重新获取源数据,如果达到一定次数仍未成功,则跳过该处理并记录日志,同时调用公共报错服务。当形变处理失败时,重新进行形变处理,如果达到一定次数仍未成功,则跳过该处理并记录日志,同时调用公共报错服务。当写数据存储区失败时,尝试重写,如果达到一定次数仍未成功,则跳过该处理并记录日志,同时调用公共报错服务。
所述源数据获取服务模块4接受总控模块3(分钟级转移总控模块或秒级转移总控模块)的调度,根据调用参数完成转移任务的原始数据获取到目标数据生成,并调用目标表更新服务模块。所述源数据获取服务模块可分为主体和附件两部分。主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子函数,从而用户在使用时无须修改主体部分。附件部分为动态函数库,所述动态函数库封装任务识别、原始数据获取、数据形变、转移任务状态信息维护等各种子处理,其中,获取各数据库环境变量并进行选择数据的操作以及数据形变的操作可根据用户的需求进行定制,从而可以满足不同用户,不同数据表以及数据复制、抽取盒同步的需要。其中,所述数据形变的操作是可选的,即如果用户对数据没有过滤和形变的需求,则用户只需定制从源数据库中选择出原始数据的操作即可。
图3为根据本发明的实施例的目标表更新服务模块5的工作流程图。如图3所示,目标表更新服务模块5的工作过程如下:(B1)初始化并读取基本配置信息,并连接数据库与数据存储区(当数据存储区不存在时创建该数据存储区);(B2)接受源数据获取服务模块4的调用,并对获取的参数信息进行解析;(B3)判断转移任务是分钟级转移还是秒级转移,如果是分钟级转移进一步判断转移次数是否超过额定次数;(B4)如果所述转移任务是分钟级转移且超过额定次数,则通过日志进行记录并进行异常处理;(B5)如果所述转移任务是分钟级转移且未超过额定次数,或所述转移任务是秒级转移,则对目标数据库P1-PN进行批量插入和更新;(B6)如果所述插入和更新操作成功,则更新临时监控内存的任务完成情况;(B7)判断所述任务完成情况,如果所述任务完成情况为未全部完成,则释放数据存储区段并返回步骤(B2);(B8)如果所述任务完成情况为全部完成,则更新控制表中数据转移状态为“完成”,并清理临时监控内存:(B9)释放数据存储区段并返回步骤(B2)。
所述目标表更新服务模块5包括如下子模块:
进程初始化子模块,具有初始化数据存储区、信号量,以及连接目标数据库和控制数据库等功能;
主控流程子模块,该子模块可从调用者(即源数据获取服务模块4)处获取参数信息并进行解析,从数据存储区中选取数据并调用批量数据库更新子模块和任务状态处理子模块,从而完成源数据获取服务模块4下发的任务;
批量数据库更新子模块,该子模块可从数据存储区中选取数据并将其批量更新到目标表中;
任务状态处理子模块,该子模块可在信号量互斥保护下更新临时数据存储区中的处理状态并写空闲控制消息队列,当所有任务完成处理时,更新转移状态控制表的相应时间片的转移状态为完成,并整理当前任务对应的数据存储区段。
所述目标表更新服务模块5还包括异常处理子模块,该子模块对非法的传递参数采取丢弃处理并记录出错信息,当数据库连接异常时,该子模块将主动进行数据库重连,直到连接成功才进行下一步处理。同时,当数据库插入/更新异常时,对于秒级转移,对此异常忽略不计,直接执行下面的操作,对于分钟级转移,则统计出错次数并记录日志,当超过额定次数时,就不再重复进行插入/更新操作。
所述目标表更新服务模块5接受源数据获取服务模块4的调度而将目标数据更新到目标表中,并更新转移任务的信息,以便完成当前转移任务。所述目标表更新服务模块可分为主体和附件两部分。所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子函数,从而用户在使用时无须修改主体部分。附件部分为动态函数库,所述动态函数库封装任务识别、目标数据的插入和更新、转移任务状态信息维护等各种子处理,其中,获取各数据库环境变量并进行目标数据的插入和更新的操作可根据用户的需求进行定制,从而可以满足不同用户,不同数据表的需要。
在所述目标表更新服务模块5中,所述批量数据库更新子模块的插入/更新过程如下:(C1)将待插入的数据分割成块,每块可存放多条数据;(C2)多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将数据插入或更新到目标数据库中;(C3)如果步骤(C2)成功,则所述进程可以继续处理其他数据块,如果步骤(C2)失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。与已有技术相比,本发明所公开的插入/更新过程结合了多进程并发处理和批量插入/更新技术,因此不需要大量的日志空间,也能够允许个别进程的提交失败,从而减少了与服务器端的通信代价,并从根本上提高了插入速度。
图4为根据本发明的实施例的数据转移方法的流程图。如图4所示,本发明所公开的数据转移方法包括如下步骤:(D1)初始化主机中的总控模块3,并读取转移控制信息和参数配置信息;(D2)初始化主机中的源数据获取服务模块4和目标表更新服务模块5,并且所述目标表更新服务模块5创建数据存储区;(D3)所述总控模块3根据所读取的转移控制信息和参数配置信息调用源数据获取服务模块4,并将转移任务参数传递给所述源数据获取服务模块4;(D4)所述源数据获取服务模块4连接源数据库S1-SN从而获取所述源数据库S1-SN的环境变量,并根据所述转移任务参数读取源数据库S1-SN中相应的数据库记录;(D5)所述源数据获取服务模块4对已读取的数据库记录进行形变处理从而得到目标记录,并将所述目标记录写入目标表对应的数据存储区中;(D6)重复步骤(D4)-(D5)直至所述数据存储区已写满:(D7)所述数据存储区写满后,所述源数据获取服务模块4调用目标表更新服务模块5,并将转移任务参数传递给所述目标表更新服务模块5;(D8)所述目标表更新服务模块5连接目标数据库P1-PN以及所述数据存储区,从而获取所述目标数据库P1-PN的环境变量,并对接收的所述转移任务参数进行解析;(D9)所述目标表更新服务模块5依据解析结果对所述目标数据库P1-PN进行批量插入和更新直至转移任务完成;(D10)转移任务完成后,所述目标表更新服务模块5释放所述数据存储区。
在本发明所公开的上述数据转移方法中,所述总控模块3为分钟级转移总控模块或秒级转移总控模块。其中,所述源数据获取服务模块4可分为主体和附件两部分。主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子函数,从而用户在使用时无须修改主体部分。附件部分为动态函数库,所述动态函数库封装任务识别、原始数据获取、数据形变、转移任务状态信息维护等各种子处理,其中,获取各数据库环境变量并进行选择数据的操作以及数据形变的操作可根据用户的需求进行定制,从而可以满足不同用户,不同数据表以及数据复制、抽取盒同步的需要。其中,所述数据形变的操作是可选的,即如果用户对数据没有过滤和形变的需求,则用户只需定制从源数据库中选择出原始数据的操作即可。
同时,在本发明所公开的数据转移方法中,所述目标表更新服务模块5同样可分为主体和附件两部分。所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子函数,从而用户在使用时无须修改主体部分。附件部分为动态函数库,所述动态函数库封装任务识别、目标数据的插入和更新、转移任务状态信息维护等各种子处理,其中,获取各数据库环境变量并进行目标数据的插入和更新的操作可根据用户的需求进行定制,从而可以满足不同用户,不同数据表的需要。
本发明所公开的数据转移方法中的步骤(D9)进一步包括如下步骤:(E1)将待插入的数据分割成块,每块可存放多条数据;(E2)多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将数据插入或更新到所述目标数据库P1-PN中;(E3)如果步骤(E2)成功,则所述进程可以继续处理其他数据块,如果步骤(E2)失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。
尽管本发明是通过上述的优选实施方式进行描述的,但是其实现形式并不局限于上述的实施方式。应该认识到:在不脱离本发明主旨和范围的情况下,本领域技术人员可以对本发明做出不同的变化和修改。
Claims (15)
1.一种数据转移系统,所述数据转移系统包括至少一个主机、至少一个源数据库、至少一个目标数据库、参数配置数据库以及控制数据库;其中,所述参数配置数据库与所述至少一个主机相连接,用于存储配置参数并响应所述至少一个主机的请求而将所述配置参数提供给所述至少一个主机;所述控制数据库与所述至少一个主机相连接,用于存储控制信息并响应所述至少一个主机的请求而将所述控制信息提供给所述至少一个主机,所述至少一个源数据库分别与所述至少一个主机相连接,用于提供待转移的源数据,所述至少一个目标数据库分别与所述至少一个主机相连接,用于接收待转移的目标数据;并且,每个所述主机均包括总控模块、源数据获取服务模块、目标表更新服务模块,所述总控模块用于总体调控转移任务并装载所述配置参数;
其特征在于,所述源数据获取服务模块接受所述总控模块的调度从而获取源数据、生成目标数据、并调用目标表更新服务模块,所述源数据获取服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,并调用所述转移任务对应的子处理,所述附件部分为动态函数库,所述动态函数库封装源数据获取、数据形变子处理。
2.根据权利要求1所述的数据转移系统,其特征在于,所述目标表更新服务模块接受所述源数据获取服务模块的调度而将所述目标数据插入或更新到目标表中,并且所述目标表更新服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子处理,附件部分为动态函数库,所述动态函数库封装目标数据的插入和更新子处理。
3.根据权利要求1-2中任一个权利要求所述的数据转移系统,其特征在于,所述总控模块为分钟级转移总控模块或秒级转移总控模块,其中,所述分钟级转移总控模块用于完成准实时数据转移任务,所述秒级转移总控模块用于完成实时数据转移任务。
4.根据权利要求1-3中任一个权利要求所述的数据转移系统,其特征在于,所述目标表更新服务模块进一步包括批量数据库更新子模块,所述批量数据库更新子模块以如下方式进行插入和/或更新过程:
(C1)将待插入的数据分割成块,每块可存放多条所述数据;
(C2)多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将所述数据插入或更新到所述目标数据库中;
(C3)如果步骤(C2)成功,则所述进程可以继续处理其他数据块,如果步骤(C2)失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。
5.根据权利要求1-4中任一个权利要求所述的数据转移系统,其特征在于,所述总控模块部署于每个所述主机上,其中,所述至少一个主机中只有一个主机具有任务调度功能。
6.根据权利要求1-5中任一个权利要求所述的数据转移系统,其特征在于,所述源数据获取服务模块包括形变处理子模块,所述形变处理子模块通过调用动态形变函数而完成对源数据的形变处理,从而生成目标数据。
7.根据权利要求1-6中任一个权利要求所述的数据转移系统,其特征在于,所述至少一个源数据库和所述至少一个目标数据库是异构的。
8.根据权利要求1-7中任一个权利要求所述的数据转移系统,其特征在于,所述参数配置数据库和所述控制数据库共存于一个数据库中。
9.一种数据转移方法,所述数据转移方法包括如下步骤:
(D1)初始化至少一个主机中的总控模块,并读取转移控制信息和参数配置信息;
(D2)初始化至少一个主机中的源数据获取服务模块和目标表更新服务模块,并且所述目标表更新服务模块创建数据存储区;
(D3)所述控制模块根据所读取的转移控制信息和参数配置信息调用所述源数据获取服务模块,并将转移任务参数传递给所述源数据获取服务模块;
(D4)所述源数据获取服务模块连接至少一个源数据库从而获取所述至少一个源数据库的环境变量,并根据所述转移任务参数读取所述源数据库中相应的数据库记录;
(D5)所述源数据获取服务模块对已读取的数据库记录进行形变处理从而得到目标记录,并将所述目标记录写入所述数据存储区中;
(D6)重复步骤(D4)-(D5)直至所述数据存储区已写满:
(D7)所述数据存储区写满后,所述源数据获取服务模块调用所述目标表更新服务模块,并将转移任务参数传递给所述目标表更新服务模块;
(D8)所述目标表更新服务模块连接至少一个目标数据库以及所述数据存储区,从而获取所述至少一个目标数据库的环境变量,并对接收的所述转移任务参数进行解析;
(D9)所述目标表更新服务模块依据解析结果对所述至少一个目标数据库进行批量插入和更新直至转移任务完成;
(D10)转移任务完成后,所述目标表更新服务模块释放所述数据存储区;
其特征在于,所述源数据获取服务模块接受所述总控模块的调度从而获取源数据、生成目标数据、并调用目标表更新服务模块,所述源数据获取服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,并调用所述转移任务对应的子处理,所述附件部分为动态函数库,所述动态函数库封装源数据获取、数据形变子处理。
10.根据权利要求9所述的数据转移方法,其特征在于,所述目标表更新服务模块接受所述源数据获取服务模块的调度而将所述目标数据插入或更新到目标表中,并且所述目标表更新服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子处理,附件部分为动态函数库,所述动态函数库封装目标数据的插入和更新子处理。
11.根据权利要求9-10中任一个权利要求所述的数据转移方法,其特征在于,所述数据转移方法中的步骤(D9)进一步包括如下步骤:(E1)将待插入的数据分割成块,每块可存放多条所述数据;(E2)多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将所述数据插入或更新到所述至少一个目标数据库中;(E3)如果步骤(E2)成功,则所述进程可以继续处理其他数据块,如果步骤(E2)失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。
12.根据权利要求9-11中任一个权利要求所述的数据转移方法,其特征在于,所述总控模块为分钟级转移总控模块或秒级转移总控模块,其中,所述分钟级转移总控模块用于完成准实时数据转移任务,所述秒级转移总控模块用于完成实时数据转移任务。
13.根据权利要求9-12中任一个权利要求所述的数据转移方法,其特征在于,所述总控模块部署于每个所述主机上,其中,所述至少一个主机中只有一个主机具有任务调度功能。
14.根据权利要求9-13中任一个权利要求所述的数据转移方法,其特征在于,所述源数据获取服务模块包括形变处理子模块,所述形变处理子模块通过调用动态形变函数而完成对源数据的形变处理,从而生成目标数据。
15.根据权利要求9-14中任一个权利要求所述的数据转移方法,其特征在于,所述至少一个源数据库和所述至少一个目标数据库是异构的。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910195025.0A CN102004745B (zh) | 2009-09-02 | 2009-09-02 | 数据转移系统及方法 |
PCT/CN2010/001280 WO2011026311A1 (zh) | 2009-09-02 | 2010-08-24 | 数据转移系统及方法 |
EP10813233.3A EP2474918A4 (en) | 2009-09-02 | 2010-08-24 | SYSTEM AND METHOD FOR DATA TRANSFER |
US13/393,205 US8924342B2 (en) | 2009-09-02 | 2010-08-24 | System and method for data transfer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910195025.0A CN102004745B (zh) | 2009-09-02 | 2009-09-02 | 数据转移系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102004745A true CN102004745A (zh) | 2011-04-06 |
CN102004745B CN102004745B (zh) | 2013-06-12 |
Family
ID=43648847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910195025.0A Active CN102004745B (zh) | 2009-09-02 | 2009-09-02 | 数据转移系统及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8924342B2 (zh) |
EP (1) | EP2474918A4 (zh) |
CN (1) | CN102004745B (zh) |
WO (1) | WO2011026311A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999537A (zh) * | 2011-09-19 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据迁移系统和方法 |
WO2015014254A1 (zh) * | 2013-07-30 | 2015-02-05 | 中国银联股份有限公司 | 与资源的转移相关联的安全性信息交互方法 |
CN106682017A (zh) * | 2015-11-09 | 2017-05-17 | 高德软件有限公司 | 一种数据库更新方法及装置 |
WO2018039943A1 (zh) * | 2016-08-30 | 2018-03-08 | 华为技术有限公司 | 一种数据转移的进度计算方法、装置及系统 |
CN109189761A (zh) * | 2018-08-31 | 2019-01-11 | 中国农业银行股份有限公司 | 一种数据迁移方法和装置 |
CN110175115A (zh) * | 2019-04-30 | 2019-08-27 | 中国航空无线电电子研究所 | 基于变量的动态数据运作及管理系统 |
CN111190622A (zh) * | 2019-12-25 | 2020-05-22 | 哈尔滨安天科技集团股份有限公司 | 一种低带宽的在线升级方法、装置、电子设备及存储介质 |
CN111767332A (zh) * | 2020-06-12 | 2020-10-13 | 上海森亿医疗科技有限公司 | 异构数据源的数据集成方法、系统以及终端 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782101B1 (en) * | 2012-01-20 | 2014-07-15 | Google Inc. | Transferring data across different database platforms |
US20130297627A1 (en) * | 2012-05-07 | 2013-11-07 | Sandeep J. Shah | Business intelligence engine |
US9305067B2 (en) * | 2013-07-19 | 2016-04-05 | International Business Machines Corporation | Creation of change-based data integration jobs |
CN105574051B (zh) * | 2014-11-06 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 更新用户所满足的规则的方法及处理系统 |
CN107038192B (zh) * | 2016-11-17 | 2020-08-21 | 阿里巴巴集团控股有限公司 | 数据库容灾方法和装置 |
US10915542B1 (en) * | 2017-12-19 | 2021-02-09 | Palantir Technologies Inc. | Contextual modification of data sharing constraints in a distributed database system that uses a multi-master replication scheme |
US11100087B2 (en) * | 2019-04-26 | 2021-08-24 | Microsoft Technology Licensing, Llc | Data tokenization system maintaining data integrity |
US20210248162A1 (en) * | 2020-02-12 | 2021-08-12 | Roblox Corporation | Parallel data transfer from one database to another database |
CN111611244B (zh) * | 2020-05-20 | 2023-07-28 | 浩云科技股份有限公司 | 一种将数据库的数据进行级联的方法及装置 |
WO2022006652A1 (en) * | 2020-07-07 | 2022-01-13 | Chand Rachelle | Data transfer between databases in real time, via qrcode or barcode |
CN113835685B (zh) * | 2021-11-26 | 2022-02-18 | 之江实验室 | 一种基于拟态数据库的网络操作系统设计方法 |
CN114780654B (zh) * | 2022-05-27 | 2022-11-15 | 河北省科学技术情报研究院(河北省科技创新战略研究院) | 一种多源主附实体结构模块化构建的处理方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE59501924D1 (de) * | 1994-05-10 | 1998-05-20 | Siemens Ag | Datenverwaltungssystem eines realzeitsystems |
US5706434A (en) * | 1995-07-06 | 1998-01-06 | Electric Classifieds, Inc. | Integrated request-response system and method generating responses to request objects formatted according to various communication protocols |
US6016501A (en) * | 1998-03-18 | 2000-01-18 | Bmc Software | Enterprise data movement system and method which performs data load and changed data propagation operations |
US6499036B1 (en) | 1998-08-12 | 2002-12-24 | Bank Of America Corporation | Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation |
US7774299B2 (en) * | 2005-05-09 | 2010-08-10 | Microsoft Corporation | Flow computing |
US7676478B2 (en) * | 2006-01-10 | 2010-03-09 | Sas Institute Inc. | Data warehousing systems and methods having reusable user transforms |
CN100371900C (zh) * | 2006-01-19 | 2008-02-27 | 华为技术有限公司 | 数据同步的方法和系统 |
US9176975B2 (en) * | 2006-05-31 | 2015-11-03 | International Business Machines Corporation | Method and system for transformation of logical data objects for storage |
CN101364186B (zh) * | 2008-09-27 | 2012-01-25 | 腾讯科技(深圳)有限公司 | 数据迁移方法、数据迁移服务器及数据接口服务器 |
CN101504664B (zh) | 2009-03-18 | 2010-12-01 | 中国工商银行股份有限公司 | 对全量源数据进行抽取转换加载的装置及方法 |
-
2009
- 2009-09-02 CN CN200910195025.0A patent/CN102004745B/zh active Active
-
2010
- 2010-08-24 WO PCT/CN2010/001280 patent/WO2011026311A1/zh active Application Filing
- 2010-08-24 EP EP10813233.3A patent/EP2474918A4/en not_active Ceased
- 2010-08-24 US US13/393,205 patent/US8924342B2/en active Active
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999537A (zh) * | 2011-09-19 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据迁移系统和方法 |
CN102999537B (zh) * | 2011-09-19 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 一种数据迁移系统和方法 |
WO2015014254A1 (zh) * | 2013-07-30 | 2015-02-05 | 中国银联股份有限公司 | 与资源的转移相关联的安全性信息交互方法 |
CN106682017A (zh) * | 2015-11-09 | 2017-05-17 | 高德软件有限公司 | 一种数据库更新方法及装置 |
CN106682017B (zh) * | 2015-11-09 | 2020-07-31 | 阿里巴巴(中国)有限公司 | 一种数据库更新方法及装置 |
WO2018039943A1 (zh) * | 2016-08-30 | 2018-03-08 | 华为技术有限公司 | 一种数据转移的进度计算方法、装置及系统 |
CN109189761A (zh) * | 2018-08-31 | 2019-01-11 | 中国农业银行股份有限公司 | 一种数据迁移方法和装置 |
CN110175115A (zh) * | 2019-04-30 | 2019-08-27 | 中国航空无线电电子研究所 | 基于变量的动态数据运作及管理系统 |
CN110175115B (zh) * | 2019-04-30 | 2022-12-27 | 中国航空无线电电子研究所 | 基于变量的动态数据运作及管理系统 |
CN111190622A (zh) * | 2019-12-25 | 2020-05-22 | 哈尔滨安天科技集团股份有限公司 | 一种低带宽的在线升级方法、装置、电子设备及存储介质 |
CN111767332A (zh) * | 2020-06-12 | 2020-10-13 | 上海森亿医疗科技有限公司 | 异构数据源的数据集成方法、系统以及终端 |
Also Published As
Publication number | Publication date |
---|---|
US8924342B2 (en) | 2014-12-30 |
EP2474918A1 (en) | 2012-07-11 |
US20120221536A1 (en) | 2012-08-30 |
CN102004745B (zh) | 2013-06-12 |
WO2011026311A1 (zh) | 2011-03-10 |
EP2474918A4 (en) | 2014-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102004745B (zh) | 数据转移系统及方法 | |
CN101625655B (zh) | 一种内存数据库的并行恢复方法 | |
CN1231734A (zh) | 在类数据交换环境中提供动态数据引用的系统和方法 | |
CN100549950C (zh) | 分布式软件系统的部署方法 | |
CN101201753A (zh) | 一种多状态机管理引擎的配置管理方法 | |
CN1190018C (zh) | 主控板数据热备份的方法 | |
CN101980207B (zh) | 一种数据库访问的实现方法和系统 | |
CN101145989A (zh) | 一种仿真单板及其仿真方法 | |
CN102243655B (zh) | 一种数据库的连接管理方法及装置 | |
CN102243653B (zh) | 一种数据库连接的管理方法及装置 | |
US5864660A (en) | Testing the integration of a plurality of elements in a computer system using a plurality of tests codes, each corresponding to an alternate product configuration for an associated element | |
CN101226527B (zh) | 双核库数据同步方法 | |
CN110764472B (zh) | 一种基于复合智能体的车间实时调度方法及装置 | |
CN101436136A (zh) | 自动执行预先安装软件元件系统及其执行方法 | |
US7409351B2 (en) | Method and system for splitting an order in a flexible order transaction system | |
CN115951970A (zh) | 一种异构多仿真软件集成开发环境 | |
CN108363671A (zh) | 一种接口切换的方法、终端设备及存储介质 | |
US20050080501A1 (en) | Tool reserve for single fabrication and homogenous mes | |
CN114896031A (zh) | 一种兼容调度多rpa的方法及系统 | |
CN102467504B (zh) | 一种基于关系数据库的工作流引擎系统的设计方法 | |
CN112631615A (zh) | 一种基于Kubernetes的持续集成持续交付的方法 | |
CN115480915A (zh) | 工作流程处理方法、设备、系统及可读存储介质 | |
CN111552541B (zh) | 通过命令桥工厂实现调度的方法、系统及计算机存储介质 | |
US5838780A (en) | Double-registration avoidance method for use in registering subscriber directory numbers | |
Nahavandi | A control system for flexible manufacturing |
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 |