数据转移系统及方法.pdf

上传人:Y0****01 文档编号:1027341 上传时间:2018-03-26 格式:PDF 页数:16 大小:645.96KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910195025.0

申请日:

2009.09.02

公开号:

CN102004745A

公开日:

2011.04.06

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20090902|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

中国银联股份有限公司

发明人:

陈林; 茅毓铭; 庄晓; 鲁志军; 杨燕明; 白玫

地址:

200135 上海市浦东新区含笑路36号银联大厦

优先权:

专利代理机构:

中国专利代理(香港)有限公司 72001

代理人:

谭佐晞;李家麟

PDF下载: PDF下载
内容摘要

本发明提出了一种数据转移系统和方法。其中,所述数据转移系统和方法包括源数据获取服务模块和目标表更新服务模块,所述源数据获取服务模块和目标表更新服务模块均分为主体和附件两部分,其中,所述附件部分为动态函数库,所述动态函数库可封装源数据获取、数据形变以及数据插入/更新等子处理。同时,所述数据转移系统和方法可同时支持准实时数据转移任务和实时数据转移任务。所述数据转移系统和方法支持多机容灾、扩展,并且动态函数库的定制易于应对数据转移需求的变更。

权利要求书

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中任一个权利要求所述的数据转移方法,其特征在于,所述至少一个源数据库和所述至少一个目标数据库是异构的。

说明书

数据转移系统及方法

技术领域

本发明涉及数据转移系统和方法,更具体地,涉及多平台数据库的数据转移系统和方法。

背景技术

目前,随着数据库系统应用的不断增加和日益普及,多个数据库之间的数据转移变得越来越常见和重要,并且,在同一数据库应用系统中往往包含有多种平台的数据库,因此,同/异构数据库之间的数据平滑转移技术也是市场迫切需要的。商用数据库具备一定的复制能力,但是必须在诸多限制的理想情况下工作,因而具有较大的局限性。独立的数据复制软件具有点对点复制数据库的体系结构,因而不能灵活地解决具有复杂拓扑结构的多个同/异构数据库间的数据转移。此外还有针对特定应用系统而专门开发的数据转移软件,然而此种数据转移软件缺乏通用性。综上所述,已有的数据库间的数据转移技术存在如下缺点:成本较高;对数据库或数据表的影响较大,偶合度高(即适应于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)失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。

尽管本发明是通过上述的优选实施方式进行描述的,但是其实现形式并不局限于上述的实施方式。应该认识到:在不脱离本发明主旨和范围的情况下,本领域技术人员可以对本发明做出不同的变化和修改。

数据转移系统及方法.pdf_第1页
第1页 / 共16页
数据转移系统及方法.pdf_第2页
第2页 / 共16页
数据转移系统及方法.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《数据转移系统及方法.pdf》由会员分享,可在线阅读,更多相关《数据转移系统及方法.pdf(16页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102004745A43申请公布日20110406CN102004745ACN102004745A21申请号200910195025022申请日20090902G06F17/3020060171申请人中国银联股份有限公司地址200135上海市浦东新区含笑路36号银联大厦72发明人陈林茅毓铭庄晓鲁志军杨燕明白玫74专利代理机构中国专利代理香港有限公司72001代理人谭佐晞李家麟54发明名称数据转移系统及方法57摘要本发明提出了一种数据转移系统和方法。其中,所述数据转移系统和方法包括源数据获取服务模块和目标表更新服务模块,所述源数据获取服务模块和目标表更新服务模块均分为主体和附件。

2、两部分,其中,所述附件部分为动态函数库,所述动态函数库可封装源数据获取、数据形变以及数据插入/更新等子处理。同时,所述数据转移系统和方法可同时支持准实时数据转移任务和实时数据转移任务。所述数据转移系统和方法支持多机容灾、扩展,并且动态函数库的定制易于应对数据转移需求的变更。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书8页附图4页CN102004758A1/3页21一种数据转移系统,所述数据转移系统包括至少一个主机、至少一个源数据库、至少一个目标数据库、参数配置数据库以及控制数据库;其中,所述参数配置数据库与所述至少一个主机相连接,用于存储配置参数并响应所述。

3、至少一个主机的请求而将所述配置参数提供给所述至少一个主机;所述控制数据库与所述至少一个主机相连接,用于存储控制信息并响应所述至少一个主机的请求而将所述控制信息提供给所述至少一个主机,所述至少一个源数据库分别与所述至少一个主机相连接,用于提供待转移的源数据,所述至少一个目标数据库分别与所述至少一个主机相连接,用于接收待转移的目标数据;并且,每个所述主机均包括总控模块、源数据获取服务模块、目标表更新服务模块,所述总控模块用于总体调控转移任务并装载所述配置参数;其特征在于,所述源数据获取服务模块接受所述总控模块的调度从而获取源数据、生成目标数据、并调用目标表更新服务模块,所述源数据获取服务模块分为主。

4、体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,并调用所述转移任务对应的子处理,所述附件部分为动态函数库,所述动态函数库封装源数据获取、数据形变子处理。2根据权利要求1所述的数据转移系统,其特征在于,所述目标表更新服务模块接受所述源数据获取服务模块的调度而将所述目标数据插入或更新到目标表中,并且所述目标表更新服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子处理,附件部分为动态函数库,所述动态函数库封装目标数据的插入和更新子处理。3根据权利要求12中任一个权利要求所述的数据转移系统,其特征在于,所述总控模块为分钟级转移总控模块或秒。

5、级转移总控模块,其中,所述分钟级转移总控模块用于完成准实时数据转移任务,所述秒级转移总控模块用于完成实时数据转移任务。4根据权利要求13中任一个权利要求所述的数据转移系统,其特征在于,所述目标表更新服务模块进一步包括批量数据库更新子模块,所述批量数据库更新子模块以如下方式进行插入和/或更新过程C1将待插入的数据分割成块,每块可存放多条所述数据;C2多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将所述数据插入或更新到所述目标数据库中;C3如果步骤C2成功,则所述进程可以继续处理其他数据块,如果步骤C2失败,则采用单个插入或更新的方式将所述数据插入或更。

6、新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。5根据权利要求14中任一个权利要求所述的数据转移系统,其特征在于,所述总控模块部署于每个所述主机上,其中,所述至少一个主机中只有一个主机具有任务调度功能。6根据权利要求15中任一个权利要求所述的数据转移系统,其特征在于,所述源数据获取服务模块包括形变处理子模块,所述形变处理子模块通过调用动态形变函数而完成对源数据的形变处理,从而生成目标数据。7根据权利要求16中任一个权利要求所述的数据转移系统,其特征在于,所述至少一个源数据库和所述至少一个目标数据库是异构的。8根据权利要求17中任一个权利要求所述的数据转移系统,其特征在。

7、于,所述参数配置数据库和所述控制数据库共存于一个数据库中。权利要求书CN102004745ACN102004758A2/3页39一种数据转移方法,所述数据转移方法包括如下步骤D1初始化至少一个主机中的总控模块,并读取转移控制信息和参数配置信息;D2初始化至少一个主机中的源数据获取服务模块和目标表更新服务模块,并且所述目标表更新服务模块创建数据存储区;D3所述控制模块根据所读取的转移控制信息和参数配置信息调用所述源数据获取服务模块,并将转移任务参数传递给所述源数据获取服务模块;D4所述源数据获取服务模块连接至少一个源数据库从而获取所述至少一个源数据库的环境变量,并根据所述转移任务参数读取所述源数。

8、据库中相应的数据库记录;D5所述源数据获取服务模块对已读取的数据库记录进行形变处理从而得到目标记录,并将所述目标记录写入所述数据存储区中;D6重复步骤D4D5直至所述数据存储区已写满D7所述数据存储区写满后,所述源数据获取服务模块调用所述目标表更新服务模块,并将转移任务参数传递给所述目标表更新服务模块;D8所述目标表更新服务模块连接至少一个目标数据库以及所述数据存储区,从而获取所述至少一个目标数据库的环境变量,并对接收的所述转移任务参数进行解析;D9所述目标表更新服务模块依据解析结果对所述至少一个目标数据库进行批量插入和更新直至转移任务完成;D10转移任务完成后,所述目标表更新服务模块释放所述。

9、数据存储区;其特征在于,所述源数据获取服务模块接受所述总控模块的调度从而获取源数据、生成目标数据、并调用目标表更新服务模块,所述源数据获取服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,并调用所述转移任务对应的子处理,所述附件部分为动态函数库,所述动态函数库封装源数据获取、数据形变子处理。10根据权利要求9所述的数据转移方法,其特征在于,所述目标表更新服务模块接受所述源数据获取服务模块的调度而将所述目标数据插入或更新到目标表中,并且所述目标表更新服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子处理,附件部分为动态函。

10、数库,所述动态函数库封装目标数据的插入和更新子处理。11根据权利要求910中任一个权利要求所述的数据转移方法,其特征在于,所述数据转移方法中的步骤D9进一步包括如下步骤E1将待插入的数据分割成块,每块可存放多条所述数据;E2多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将所述数据插入或更新到所述至少一个目标数据库中;E3如果步骤E2成功,则所述进程可以继续处理其他数据块,如果步骤E2失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。12根据权利要求911中任一个权利要求所述的。

11、数据转移方法,其特征在于,所述总控模块为分钟级转移总控模块或秒级转移总控模块,其中,所述分钟级转移总控模块用于完成准实时数据转移任务,所述秒级转移总控模块用于完成实时数据转移任务。13根据权利要求912中任一个权利要求所述的数据转移方法,其特征在于,所述总控模块部署于每个所述主机上,其中,所述至少一个主机中只有一个主机具有任务调度功权利要求书CN102004745ACN102004758A3/3页4能。14根据权利要求913中任一个权利要求所述的数据转移方法,其特征在于,所述源数据获取服务模块包括形变处理子模块,所述形变处理子模块通过调用动态形变函数而完成对源数据的形变处理,从而生成目标数据。。

12、15根据权利要求914中任一个权利要求所述的数据转移方法,其特征在于,所述至少一个源数据库和所述至少一个目标数据库是异构的。权利要求书CN102004745ACN102004758A1/8页5数据转移系统及方法技术领域0001本发明涉及数据转移系统和方法,更具体地,涉及多平台数据库的数据转移系统和方法。背景技术0002目前,随着数据库系统应用的不断增加和日益普及,多个数据库之间的数据转移变得越来越常见和重要,并且,在同一数据库应用系统中往往包含有多种平台的数据库,因此,同/异构数据库之间的数据平滑转移技术也是市场迫切需要的。商用数据库具备一定的复制能力,但是必须在诸多限制的理想情况下工作,因而。

13、具有较大的局限性。独立的数据复制软件具有点对点复制数据库的体系结构,因而不能灵活地解决具有复杂拓扑结构的多个同/异构数据库间的数据转移。此外还有针对特定应用系统而专门开发的数据转移软件,然而此种数据转移软件缺乏通用性。综上所述,已有的数据库间的数据转移技术存在如下缺点成本较高;对数据库或数据表的影响较大,偶合度高即适应于A类数据库或数据表的数据转移软件不适应B类数据库或数据表,甚至需要在源数据库上建立触发器或依赖于特定数据库产品的特定功能的支持,因而缺乏通用性和扩展性;功能单一,无法同时支持准实时即分钟级转移和实时即秒级转移两种模式的转移;较难甚至无法实现异构数据库间的数据转移,即较难甚至无法。

14、实现数据的过滤、变形,从而数据库系统的容灾和恢复能力较差。0003另外,随着数据库技术的迅速发展,大型数据库系统为了满足越来越多的应用需求,都支持并发操作。同时,为了进一步提高数据库的插入性能,很多数据库产品开始支持批量插入技术。已有的将大量待插入的动态数据迅速插入指定目标库中的方法有如下几种1将待插入的动态数据保存成数据库文件,通过数据库备份或者通过数据库提供的加载工具批量导入;2通过多进程并发,将数据通过多个链接插入到数据库中;3通过批量插入,即一次提交多条数据。然而,上述方法存在如下缺点方法1需要额外的磁盘空间,并且保存文件时的输入/输入操作比较耗时;在方法2中,虽然多进程并发执行,但是。

15、每个进程一次仅提交一条记录,因而效率很低;在方法3中,如果一次提交大量数据,则需要较大的日志空间,因而一旦提交失败,会造成整体失败。因此,可以最大限度地发挥数据库性能的批量插入技术也是市场迫切需要的。发明内容0004为了解决上述现有技术方案所存在的缺陷,本发明提出了一种可在数据库间包括同构和异构进行数据转移的数据转移系统和方法,并且该数据转移系统和方法同时支持准实时即分钟级转移和实时即秒级转移两种模式的数据转移。0005本发明的目的是通过以下技术方案实现的0006一种数据转移系统,所述数据转移系统包括至少一个主机、至少一个源数据库、至少一个目标数据库、参数配置数据库以及控制数据库;其中,所述参。

16、数配置数据库与所述至说明书CN102004745ACN102004758A2/8页6少一个主机相连接,用于存储配置参数并响应所述至少一个主机的请求而将所述配置参数提供给所述至少一个主机。所述控制数据库与所述至少一个主机相连接,用于存储控制信息并响应所述至少一个主机的请求而将所述控制信息提供给所述至少一个主机,所述至少一个源数据库分别与所述至少一个主机相连接,用于提供待转移的源数据,所述至少一个目标数据库分别与所述至少一个主机相连接,用于接收待转移的目标数据;并且,每个所述主机均包括总控模块、源数据获取服务模块、目标表更新服务模块,所述总控模块用于总体调控转移任务并装载所述配置参数;其特征在于,。

17、所述源数据获取服务模块接受所述总控模块的调度从而获取源数据、生成目标数据、并调用目标表更新服务模块,所述源数据获取服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,并调用所述转移任务对应的子处理,所述附件部分为动态函数库,所述动态函数库封装源数据获取、数据形变子处理。0007在上面公开的方案中,优选地,所述目标表更新服务模块接受所述源数据获取服务模块的调度而将所述目标数据插入或更新到目标表中,并且所述目标表更新服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子处理,附件部分为动态函数库,所述动态函数库封装目标数据的插入。

18、和更新子处理。0008在上面公开的方案中,优选地,所述总控模块为分钟级转移总控模块或秒级转移总控模块,其中,所述分钟级转移总控模块用于完成准实时数据转移任务,所述秒级转移总控模块用于完成实时数据转移任务。0009在上面公开的方案中,优选地,所述目标表更新服务模块进一步包括批量数据库更新子模块,所述批量数据库更新子模块以如下方式进行插入和/或更新过程0010C1将待插入的数据分割成块,每块可存放多条所述数据;0011C2多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将所述数据插入或更新到所述目标数据库中;0012C3如果步骤C2成功,则所述进程可以继。

19、续处理其他数据块,如果步骤C2失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。0013在上面公开的方案中,优选地,所述总控模块部署于每个所述主机上,其中,所述至少一个主机中只有一个主机具有任务调度功能。0014在上面公开的方案中,优选地,所述源数据获取服务模块包括形变处理子模块,所述形变处理子模块通过调用动态形变函数而完成对源数据的形变处理,从而生成目标数据。0015在上面公开的方案中,优选地,所述至少一个源数据库和所述至少一个目标数据库是异构的。0016在上面公开的方案中,优选地,所述参数配置数据库和所述控制数据库共。

20、存于一个数据库中。0017本发明的目的是通过以下技术方案实现的0018一种数据转移方法,所述数据转移方法包括如下步骤0019D1初始化至少一个主机中的总控模块,并读取转移控制信息和参数配置信息;说明书CN102004745ACN102004758A3/8页70020D2初始化至少一个主机中的源数据获取服务模块和目标表更新服务模块,并且所述目标表更新服务模块创建数据存储区;0021D3所述控制模块根据所读取的转移控制信息和参数配置信息调用所述源数据获取服务模块,并将转移任务参数传递给所述源数据获取服务模块;0022D4所述源数据获取服务模块连接至少一个源数据库从而获取所述至少一个源数据库的环境变。

21、量,并根据所述转移任务参数读取所述源数据库中相应的数据库记录;0023D5所述源数据获取服务模块对已读取的数据库记录进行形变处理从而得到目标记录,并将所述目标记录写入所述数据存储区中;0024D6重复步骤D4D5直至所述数据存储区已写满0025D7所述数据存储区写满后,所述源数据获取服务模块调用所述目标表更新服务模块,并将转移任务参数传递给所述目标表更新服务模块;0026D8所述目标表更新服务模块连接至少一个目标数据库以及所述数据存储区,从而获取所述至少一个目标数据库的环境变量,并对接收的所述转移任务参数进行解析;0027D9所述目标表更新服务模块依据解析结果对所述至少一个目标数据库进行批量插。

22、入和更新直至转移任务完成;0028D10转移任务完成后,所述目标表更新服务模块释放所述数据存储区;0029其特征在于,所述源数据获取服务模块接受所述总控模块的调度从而获取源数据、生成目标数据、并调用目标表更新服务模块,所述源数据获取服务模块分为主体和附件两部分,所述主体部分用于读取转移任务的参数,加载附件,并调用所述转移任务对应的子处理,所述附件部分为动态函数库,所述动态函数库封装源数据获取、数据形变子处理0030在上面公开的方案中,优选地,所述目标表更新服务模块接受所述源数据获取服务模块的调度而将所述目标数据插入或更新到目标表中,并且所述目标表更新服务模块分为主体和附件两部分,所述主体部分用。

23、于读取转移任务的参数,加载附件,调用所述转移任务对应的子处理,附件部分为动态函数库,所述动态函数库封装目标数据的插入和更新子处理。0031在上面公开的方案中,优选地,所述数据转移方法中的步骤D9进一步包括如下步骤E1将待插入的数据分割成块,每块可存放多条所述数据;E2多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将所述数据插入或更新到所述至少一个目标数据库中;E3如果步骤E2成功,则所述进程可以继续处理其他数据块,如果步骤E2失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。。

24、0032在上面公开的方案中,优选地,所述总控模块为分钟级转移总控模块或秒级转移总控模块,其中,所述分钟级转移总控模块用于完成准实时数据转移任务,所述秒级转移总控模块用于完成实时数据转移任务。0033在上面公开的方案中,优选地,所述总控模块部署于每个所述主机上,其中,所述至少一个主机中只有一个主机具有任务调度功能。0034在上面公开的方案中,优选地,所述源数据获取服务模块包括形变处理子模块,所述形变处理子模块通过调用动态形变函数而完成对源数据的形变处理,从而生成目标数说明书CN102004745ACN102004758A4/8页8据。0035在上面公开的方案中,优选地,所述至少一个源数据库和所述。

25、至少一个目标数据库是异构的。0036本发明所公开的数据转移系统和方法具有如下优点由于使用动态函数库封装了源数据选取和数据形变过程,因此本发明所公开的数据转移系统和方法不但复杂度低而且可以灵活应对不同状况的转移任务,即可以实现同/异构数据库间的数据转移;另外,本发明所公开的数据转移系统和方法可以同时支持准实时即分钟级转移和实时即秒级转移两种模式的数据转移。此外,由于在数据的插入和更新过程中,并发处理和批量操作相结合,因此可以最大限度地发挥数据库的性能。综上所述,本发明所公开的数据转移系统和方法是一种通用,灵活、高度封装、高稳定性的系统和方法。附图说明0037结合附图,本发明的技术特征以及优点将会。

26、被本领域技术人员更好地理解,其中0038图1为根据本发明的实施例的数据转移系统的结构图;0039图2为根据本发明的实施例的源数据获取服务模块的工作流程图;0040图3为根据本发明的实施例的目标表更新服务模块的工作流程图;0041图4为根据本发明的实施例的数据转移方法的流程图;具体实施方式0042图1为根据本发明的实施例的数据转移系统的结构图。如图1所示,本发明公开的数据转移系统包括至少一个主机H1,优选地包括多个主机H1H3即服务器,至少一个源数据库S1,优选地包括多个源数据库S1SN、至少一个目标数据库P1,优选地包括多个目标数据库P1PN、参数配置数据库1以及控制数据库2。其中,所述参数配。

27、置数据库1与所述主机H1H3相连接,用于存储配置参数并响应所述主机H1H3的请求而将该配置参数提供给所述主机H1H3。所述控制数据库2与所述主机H1H3相连接,用于存储控制信息即数据转移程序参数以及转移动态信息并响应所述主机H1H3的请求而将该控制信息提供给所述主机H1H3,即使转移进程出现异常而中断,当重新启动时仍然可以从所述控制数据库2中获取所有控制信息并继续进行转移操作,从而保证数据的完整性和可靠性。所述源数据库S1SN分别与所述主机H1H3相连接,用于提供待转移的源数据。所述目标数据库P1PN分别与所述主机H1H3相连接,用于接收待转移的目标数据。其中,可选地,所述参数配置数据库1和所。

28、述控制数据库2可以共存于一个数据库中。0043如图1所示,所述主机H1H3中的每个主机均包括总控模块3分钟级转移总控模块或秒级转移总控模块、源数据获取服务模块4、目标表更新服务模块5。其中,所述总控模块3用于总体任务调控和配置参数的内存装载,即所述分钟级转移总控模块和秒级转移总控模块单独部署,当需要分钟级转移服务时启动分钟级总控服务模块,当需要秒级转移服务时启动秒级总控服务模块。0044如图1所示,总控模块3在每台主机上均有一个,但通过参数控制,主机群组中只有一个主机具备任务调度的功能。因此,一旦具备任务调度功能的主机异常,可在备份主机说明书CN102004745ACN102004758A5/。

29、8页9上启动总控模块的任务调度功能。因此,各主机上的源数据获取服务模块4和目标表更新服务模块5均处于工作状态,从而提高了系统的处理性能和容灾能力。0045如图1所示,所述分钟级总控服务模块用于初始化转移控制信息,并将转移控制信息平均传递给多台主机的转移服务,随后控制数据转移时间片的推进及状态的更新,同时,所述分钟级总控服务模块还可以通过配置参数而实现数据转移过程中转移任务的分发和转移进程的报告。所述时间片的含义如下在本发明所公开的数据转移系统中,根据配置将时间段人为划分成逻辑上的若干小段,所述一小段的时间即为一个时间片。所述配置信息包括转移开始时间、转移时间片、每循环更新当前转移结束时间的次数。

30、、转移结束时间与当前系统时间的间隔、数据库连接信息和主机个数。0046如图1所示,所述秒级总控服务模块用于将N秒例如,N10前的数据从源数据表转移到目标数据表中,即根据数据库中的数据转移控制表的信息,分配转移任务给转移服务,并推进转移的时间片进度,同时,所述秒级总控服务模块还可以通过配置参数而实现数据转移过程中转移任务的分发和转移进程的报告。所述配置信息包括转移开始时间、转移时间片、每循环更新当前转移结束时间的次数、转移结束时间与当前系统时间的间隔、数据库连接信息和主机个数。0047图2为根据本发明的实施例的源数据获取服务模块4的工作流程图。如图2所示,源数据获取服务模块4的工作过程如下A1初。

31、始化并连接源数据库S1SN;A2接收总控模块3分钟级转移总控模块或秒级转移总控模块的调用;A3根据总控模块3的调用信息获取转移任务参数;A4判断所述任务参数所指示的任务;A5如果所述任务为“待更新”,则更新控制表中的转移状态为“更新中”,如果所述任务为“转移”,则更新控制表的转移状态为“转移中”;A6获取源数据库S1SN的环境变量;A7根据已获取的源数据库S1SN的环境变量,进一步获取源数据的首记录并判断是否无记录;A8如果无记录且所述任务为“待更新”,则更新控制表的转移状态为“全部完成”并结束本次源数据获取服务,如果无记录且所述任务为转移,则更新控制表的转移状态为“转移完成”并结束本次源数据。

32、获取服务;A9如果有记录,则判断记录是否已全部处理完毕;如果记录已全部处理完毕,则调用目标表更新服务模块5并结束本次源数据获取服务;A10如果还存在未处理的数据,则判断该记录是否需要形变处理;A11如果该记录不需要形变处理,则调用缺省的目标表更新服务;A12如果该记录需要形变处理,则进行形变处理,如果形变结果集头指针为空即形变失败,则返回步骤A9;A13如果形变结果集头指针不为空即形变成功,则获取指针所指的目标记录,并调用特定的目标表更新服务5;A14将所述目标记录写入目标表对应的数据存储区中;A15重复步骤A9A14,直至所述数据存储区已写满;A16调用目标表更新服务模块5,并记录后续服务应。

33、处理次数,并调用后续服务。其中,所述形变的含义如下当源数据记录与目标数据记录不一致时,需要进行数据转换与目标表定位,所述数据转换与目标表定位的过程被称之为形变。0048所述源数据获取服务模块4包括如下子模块0049初始化子模块,用于获取参数信息,初始化全局控制变量和临时数据存储区信号量,设置主机组群状态信息等;0050源数据选择子模块,用于从源数据表中选取待转移的数据;形变处理子模块,该模块可通过调用外部形变函数而完成形变处理;说明书CN102004745ACN102004758A6/8页100051目标表更新服务确定子模块,用于根据目标数据库,目标数据表确定目标更新服务名,目标所在的数据存储。

34、区的关键字和互斥信号量,空闲控制消息队列的关键字等;0052写数据存储区子模块,该子模块可将变形后的数据在信号量互斥保护下写入任务所对应的数据存储区的对应段,以便供目标表更新服务子模块读取,其中,当所有内存段均不可用时,该子模块可以阻塞方式读取任务所对应的空闲控制消息队列,当读到消息后,继续在信号量保护下寻找空闲的数据存储区;0053调用目标表更新服务子模块,用于创建更新数据存储区,并根据目标表更新服务确定子模块的确定结果统计后续服务应调用次数,同时,将目标记录写入临时数据存储区。0054所述源数据获取服务模块4还包括异常处理子模块。当初始化失败时,该子模块调用公共报错服务并记录日志。当连接数。

35、据库失败时,该子模块将重连数据库并记录日志。当数据选取失败时,该子模块将重新获取源数据,如果达到一定次数仍未成功,则跳过该处理并记录日志,同时调用公共报错服务。当形变处理失败时,重新进行形变处理,如果达到一定次数仍未成功,则跳过该处理并记录日志,同时调用公共报错服务。当写数据存储区失败时,尝试重写,如果达到一定次数仍未成功,则跳过该处理并记录日志,同时调用公共报错服务。0055所述源数据获取服务模块4接受总控模块3分钟级转移总控模块或秒级转移总控模块的调度,根据调用参数完成转移任务的原始数据获取到目标数据生成,并调用目标表更新服务模块。所述源数据获取服务模块可分为主体和附件两部分。主体部分用于。

36、读取转移任务的参数,加载附件,调用所述转移任务对应的子函数,从而用户在使用时无须修改主体部分。附件部分为动态函数库,所述动态函数库封装任务识别、原始数据获取、数据形变、转移任务状态信息维护等各种子处理,其中,获取各数据库环境变量并进行选择数据的操作以及数据形变的操作可根据用户的需求进行定制,从而可以满足不同用户,不同数据表以及数据复制、抽取盒同步的需要。其中,所述数据形变的操作是可选的,即如果用户对数据没有过滤和形变的需求,则用户只需定制从源数据库中选择出原始数据的操作即可。0056图3为根据本发明的实施例的目标表更新服务模块5的工作流程图。如图3所示,目标表更新服务模块5的工作过程如下B1初。

37、始化并读取基本配置信息,并连接数据库与数据存储区当数据存储区不存在时创建该数据存储区;B2接受源数据获取服务模块4的调用,并对获取的参数信息进行解析;B3判断转移任务是分钟级转移还是秒级转移,如果是分钟级转移进一步判断转移次数是否超过额定次数;B4如果所述转移任务是分钟级转移且超过额定次数,则通过日志进行记录并进行异常处理;B5如果所述转移任务是分钟级转移且未超过额定次数,或所述转移任务是秒级转移,则对目标数据库P1PN进行批量插入和更新;B6如果所述插入和更新操作成功,则更新临时监控内存的任务完成情况;B7判断所述任务完成情况,如果所述任务完成情况为未全部完成,则释放数据存储区段并返回步骤B。

38、2;B8如果所述任务完成情况为全部完成,则更新控制表中数据转移状态为“完成”,并清理临时监控内存B9释放数据存储区段并返回步骤B2。0057所述目标表更新服务模块5包括如下子模块0058进程初始化子模块,具有初始化数据存储区、信号量,以及连接目标数据库和控制数据库等功能;说明书CN102004745ACN102004758A7/8页110059主控流程子模块,该子模块可从调用者即源数据获取服务模块4处获取参数信息并进行解析,从数据存储区中选取数据并调用批量数据库更新子模块和任务状态处理子模块,从而完成源数据获取服务模块4下发的任务;0060批量数据库更新子模块,该子模块可从数据存储区中选取数据。

39、并将其批量更新到目标表中;0061任务状态处理子模块,该子模块可在信号量互斥保护下更新临时数据存储区中的处理状态并写空闲控制消息队列,当所有任务完成处理时,更新转移状态控制表的相应时间片的转移状态为完成,并整理当前任务对应的数据存储区段。0062所述目标表更新服务模块5还包括异常处理子模块,该子模块对非法的传递参数采取丢弃处理并记录出错信息,当数据库连接异常时,该子模块将主动进行数据库重连,直到连接成功才进行下一步处理。同时,当数据库插入/更新异常时,对于秒级转移,对此异常忽略不计,直接执行下面的操作,对于分钟级转移,则统计出错次数并记录日志,当超过额定次数时,就不再重复进行插入/更新操作。0。

40、063所述目标表更新服务模块5接受源数据获取服务模块4的调度而将目标数据更新到目标表中,并更新转移任务的信息,以便完成当前转移任务。所述目标表更新服务模块可分为主体和附件两部分。所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子函数,从而用户在使用时无须修改主体部分。附件部分为动态函数库,所述动态函数库封装任务识别、目标数据的插入和更新、转移任务状态信息维护等各种子处理,其中,获取各数据库环境变量并进行目标数据的插入和更新的操作可根据用户的需求进行定制,从而可以满足不同用户,不同数据表的需要。0064在所述目标表更新服务模块5中,所述批量数据库更新子模块的插入/更新过程如下。

41、C1将待插入的数据分割成块,每块可存放多条数据;C2多个数据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将数据插入或更新到目标数据库中;C3如果步骤C2成功,则所述进程可以继续处理其他数据块,如果步骤C2失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。与已有技术相比,本发明所公开的插入/更新过程结合了多进程并发处理和批量插入/更新技术,因此不需要大量的日志空间,也能够允许个别进程的提交失败,从而减少了与服务器端的通信代价,并从根本上提高了插入速度。0065图4为根据本发明的实施例。

42、的数据转移方法的流程图。如图4所示,本发明所公开的数据转移方法包括如下步骤D1初始化主机中的总控模块3,并读取转移控制信息和参数配置信息;D2初始化主机中的源数据获取服务模块4和目标表更新服务模块5,并且所述目标表更新服务模块5创建数据存储区;D3所述总控模块3根据所读取的转移控制信息和参数配置信息调用源数据获取服务模块4,并将转移任务参数传递给所述源数据获取服务模块4;D4所述源数据获取服务模块4连接源数据库S1SN从而获取所述源数据库S1SN的环境变量,并根据所述转移任务参数读取源数据库S1SN中相应的数据库记录;D5所述源数据获取服务模块4对已读取的数据库记录进行形变处理从而得到目标记录。

43、,并将所述目标记录写入目标表对应的数据存储区中;D6重复步骤D4D5直至所述数据存储区已写满D7所述数据存储区写满后,所述源数据获取服务模块4调用目标表更说明书CN102004745ACN102004758A8/8页12新服务模块5,并将转移任务参数传递给所述目标表更新服务模块5;D8所述目标表更新服务模块5连接目标数据库P1PN以及所述数据存储区,从而获取所述目标数据库P1PN的环境变量,并对接收的所述转移任务参数进行解析;D9所述目标表更新服务模块5依据解析结果对所述目标数据库P1PN进行批量插入和更新直至转移任务完成;D10转移任务完成后,所述目标表更新服务模块5释放所述数据存储区。00。

44、66在本发明所公开的上述数据转移方法中,所述总控模块3为分钟级转移总控模块或秒级转移总控模块。其中,所述源数据获取服务模块4可分为主体和附件两部分。主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子函数,从而用户在使用时无须修改主体部分。附件部分为动态函数库,所述动态函数库封装任务识别、原始数据获取、数据形变、转移任务状态信息维护等各种子处理,其中,获取各数据库环境变量并进行选择数据的操作以及数据形变的操作可根据用户的需求进行定制,从而可以满足不同用户,不同数据表以及数据复制、抽取盒同步的需要。其中,所述数据形变的操作是可选的,即如果用户对数据没有过滤和形变的需求,则用户只需定。

45、制从源数据库中选择出原始数据的操作即可。0067同时,在本发明所公开的数据转移方法中,所述目标表更新服务模块5同样可分为主体和附件两部分。所述主体部分用于读取转移任务的参数,加载附件,调用所述转移任务对应的子函数,从而用户在使用时无须修改主体部分。附件部分为动态函数库,所述动态函数库封装任务识别、目标数据的插入和更新、转移任务状态信息维护等各种子处理,其中,获取各数据库环境变量并进行目标数据的插入和更新的操作可根据用户的需求进行定制,从而可以满足不同用户,不同数据表的需要。0068本发明所公开的数据转移方法中的步骤D9进一步包括如下步骤E1将待插入的数据分割成块,每块可存放多条数据;E2多个数。

46、据库操作进程中的每个进程每次以排他的方式读取一块数据,然后采用批量插入或批量更新的方式将数据插入或更新到所述目标数据库P1PN中;E3如果步骤E2成功,则所述进程可以继续处理其他数据块,如果步骤E2失败,则采用单个插入或更新的方式将所述数据插入或更新到所述目标数据库中,记录操作失败记录对应的错误日志并继续处理其他数据块。0069尽管本发明是通过上述的优选实施方式进行描述的,但是其实现形式并不局限于上述的实施方式。应该认识到在不脱离本发明主旨和范围的情况下,本领域技术人员可以对本发明做出不同的变化和修改。说明书CN102004745ACN102004758A1/4页13图1说明书附图CN102004745ACN102004758A2/4页14图2说明书附图CN102004745ACN102004758A3/4页15图3说明书附图CN102004745ACN102004758A4/4页16图4说明书附图CN102004745A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1