书签 分享 收藏 举报 版权申诉 / 17

选择性的数据库复制.pdf

  • 上传人:大师****2
  • 文档编号:4575015
  • 上传时间:2018-10-21
  • 格式:PDF
  • 页数:17
  • 大小:652.25KB
  • 摘要
    申请专利号:

    CN200980151932.3

    申请日:

    2009.12.22

    公开号:

    CN102257494A

    公开日:

    2011.11.23

    当前法律状态:

    终止

    有效性:

    无权

    法律详情:

    未缴年费专利权终止IPC(主分类):G06F 17/30申请日:20091222授权公告日:20141008终止日期:20151222|||授权|||专利申请权的转移IPC(主分类):G06F 17/30变更事项:申请人变更前权利人:北方电讯网络有限公司变更后权利人:岩星比德科有限公司变更事项:地址变更前权利人:加拿大魁北克省变更后权利人:美国纽约登记生效日:20121107|||实质审查的生效IPC(主分类):G06F 17/30申请日:20091222|||公开

    IPC分类号:

    G06F17/30; G06F9/52; H04L12/16

    主分类号:

    G06F17/30

    申请人:

    北方电讯网络有限公司

    发明人:

    S·惠诺特

    地址:

    加拿大魁北克省

    优先权:

    2008.12.22 US 12/341845

    专利代理机构:

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

    代理人:

    刘春元;卢江

    PDF完整版下载: PDF下载
    内容摘要

    一种用于选择性地从与主服务器相关联的主数据库向与副服务器相关联的副数据库复制数据的方法和系统。副服务器确定使用第一更新命令的复制任务已经修改了主数据库。副服务器确定主数据库中的主表已经被更新。副服务器生成耦合到主表的副联合表。副服务器基于第一更新命令从主数据库获得第二更新命令,并使用副联合表将第二更新命令应用于副数据库中的副表。

    权利要求书

    1.一种用于从第一数据库向第二数据库复制数据的方法,包括:
    确定第一更新命令已经修改了与主服务器相关联的主数据库中的主表中的
    数据;
    响应于确定第一更新命令已经修改了主数据库中的主表中的数据,基于第
    一更新命令确定第二更新命令;以及
    使用耦合到主表的副联合表来应用第二更新命令以将数据复制在与副服务
    器相关联的副数据库中的副表中。
    2.如权利要求1的方法,其中基于第一更新命令确定第二更新命令包括,
    从主数据库获得应用于副数据库的一个或多个修改语句。
    3.如权利要求1的方法,其中基于第一更新命令确定第二更新命令包括,
    获得与由第一更新命令更新的主表相关联的表模式,并基于该表模式生成第二
    更新命令。
    4.如权利要求2的方法,其中所述一个或多个修改语句中的每一个都包含
    对副联合表的引用。
    5.如权利要求1的方法,其中所述数据包括与关联于副数据库的副服务器
    相关联的关于配置的信息。
    6.如权利要求1的方法,其中主数据库被存储在与主服务器相关联的第一
    存储装置上,并且副数据库被存储在与副服务器相关联的第二存储装置上。
    7.如权利要求6的方法,其中主服务器和副服务器包括媒体应用服务器。
    8.如权利要求1的方法,其中主表、副表和副联合表均具有相同的表定义。
    9.如权利要求1的方法,其中确定第一更新命令已经修改了主表包括,从
    主服务器接收第一更新命令已经修改了主数据库的通知。
    10.如权利要求1的方法,进一步包括将第一更新命令应用于主服务器中
    的主表,基于第一更新命令生成第二更新命令,并将第二更新命令存储在主数
    据库中的更新表中。
    11.如权利要求10的方法,其中第二更新命令包括一个或多个修改语句,
    其引用副表和副联合表。
    12.如权利要求1的方法,其中应用第二更新命令以修改副表进一步包括,
    生成副联合表,使用副联合表来应用第二更新命令以修改副表,以及在应用第
    二更新命令之后移除副联合表。
    13.如权利要求1的方法,其中第二更新命令包括对副联合表的引用,并
    且在应用第二更新命令之后,通过对副联合表的引用自动将数据从主数据库中
    的主表传送到副联合表。
    14.如权利要求1的方法,其中副联合表包括主数据库中的主表的虚拟化
    视图,其中副联合表不包含主表中包含的所有数据。
    15.如权利要求1的方法,进一步包括,确定要更新的副表,并且其中第
    二更新命令包括应用于副表的结构化查询语言(SQL)语句。
    16.如权利要求1的方法,进一步包括,多个副服务器,多个副服务器中
    的每一个都具有相应的相关联的副数据库,并且其中响应于确定第一更新命令
    已经修改了主数据库中的主表中的数据,多个副服务器中的每一个都基于第一
    更新命令来确定第二更新命令,并使用耦合到主表的相应的副联合表来应用第
    二更新命令以基本同时地将数据复制在副数据库中的相应副表中。
    17.如权利要求16的方法,其中主服务器和多个副服务器均构成服务器集
    群中的节点。
    18.如权利要求1的方法,其中副表是副数据库中的多个副表中的一个。
    19.如权利要求1的方法,其中使用耦合到主表的副联合表来应用第二更
    新命令以将数据复制在副数据库中的副表中,更新副表中的第一多个行,而不
    更新副表中的第二多个行。
    20.一种用于更新表的装置,包括:
    适于与网络通信的接口;以及
    耦合到该接口的控制系统,并且其适于:
    确定第一更新命令已经修改了与主服务器相关联的主数据库中的主表中的
    数据;
    响应于确定第一更新命令已经修改了主数据库中的主表中的数据,基于第
    一更新命令确定第二更新命令;以及
    使用耦合到主表的副联合表来应用第二更新命令以将数据复制在与副服务
    器相关联的副数据库中的副表中。
    21.如权利要求20的装置,其中为了确定第二更新命令,控制系统进一步
    适于从主数据库获得应用于副表的一个或多个修改语句。
    22.如权利要求21的装置,其中所述一个或多个修改语句引用副联合表。
    23.如权利要求20的装置,其中为了确定第二更新命令,控制系统进一步
    适于获得与由第一更新命令更新的主表相关联的表模式,并基于所述表模式生
    成第二更新命令。
    24.如权利要求20的装置,其中副联合表包括主数据库中的主表的虚拟化
    视图,其中副联合表不包含主表中包含的所有数据。
    25.如权利要求20的装置,其中控制系统进一步适于确定要更新的副表,
    并且其中第二更新命令包括应用于副数据库的结构化查询语言(SQL)语句。

    说明书

    选择性的数据库复制

    技术领域

    本发明大体上涉及复制数据库,特别涉及在集群(cluster)中操作的数据库
    的选择性复制。

    背景技术

    计算机应用使用数据库来存储信息。数据库典型的包括软件功能的复杂集
    合,其通常被称为数据库管理系统(DBMS),这使得用户能够定义并创建数据
    库,更新并查询该数据库,以及以其他方式维护该数据库。数据库提供安全性,
    并确保更新是极小的、持续的且一致的,但通常都是以复杂度为代价的。对于
    商业上的应用而言,雇用专任的数据库专家来维护商业数据库是很平常的事。
    应用提供者可能希望使用数据库来存储关键数据,例如配置数据,但是不希望
    需要客户来承受与维护复杂数据库软件相关联的额外支持费用,或者,在一些
    情况中,甚至知道应用正在使用特定的DBMS。因此,应用提供者可能需要
    DBMS的好处,但是希望使他们的用户远离与DBMS相关联的复杂性。

    特定的应用被设计用来在网络上以分布式的方式协作运行。例如,电信系
    统可能包括集群中联网在一起的多个数据服务器。集群中的每个服务器与集群
    中的其它服务器通信。每个服务器可能具有相关联的数据库,其中维护着信息,
    例如配置信息。在数据库中维护的信息可以涉及单独服务器,例如主机名或网
    际协议(IP)地址,或者可以为网络上的每个服务器所共用,例如不论所述服
    务器是否实现简单网络管理协议(SNMP)。在分布式系统中,将一个服务器标
    识为主机(master)或主(primary)服务器,而将其余服务器指定为从服务器或
    副(secondary)服务器是很正常的。对主服务器的特定配置的改变可能需要对
    每个副服务器中都进行。理想地,每次对主服务器进行此类配置改变时,无需
    人类参与就能对副服务器进行适当的配置改变。今天虽然大多数现代DBMS具
    有一定的在分布式数据库中传播数据的能力,例如通过数据库复制来完成,但
    是实现和维护已复制的数据库依然需要大量的专业知识。此外,复制增加了重
    新存储已破坏的数据库或者将新的副数据库添加到集群的复杂度,复制不允许
    副数据库的选择性更新,并且需要每个数据库都来自于相同的DBMS厂商。因
    此,需要一种机制,无需用户掌握大量的数据库专业知识,就能在分布式数据
    库中复制数据库信息,该机制是可靠的,并工作在多厂商的环境中,并基本上
    同时地实现在分布式网络上的选择性复制。

    发明内容

    本领域的技术人员将会了解本发明的范围,并在参照附图阅读下列优选实
    施例的详细描述后认识到到本发明的其它方面。

    本发明涉及从主数据库向一个或多个副数据库选择性地复制数据,例如配
    置数据。复制任务包括对与主服务器相关联的主数据库的更新,这需要在与副
    服务器相关联的一个或多个副数据库上进行复制。副服务器确定主数据库中的
    主表已经被第一更新命令所修改。该第一更新命令能够包括一个或多个数据库
    修改语句。副服务器确定基于第一更新命令的第二更新命令。副服务器生成该
    副服务器中的副联合表(federated table),其与主服务器中的主表耦合。副联合
    表允许使用副服务器上的传统数据库命令,例如结构化查询语言(SQL)语句,
    来访问来自主表的数据。使用副联合表,副服务器将第二更新命令应用于副表,
    从而将来自主数据库的更新复制到副数据库。

    根据本发明的一个实施例,主服务器基于第一更新命令生成第二更新命令,
    并将该第二更新命令存储在主数据库中的更新命令表中。当第一更新命令已经
    应用于主表时,主服务器通过触发器或警报通知副服务器。在主服务器接收到
    通知时,副服务器访问主数据库中的更新命令表并获取第二更新命令。副服务
    器生成与主表耦合的副联合表,并通过该副联合表来更新副表。主表、副表、
    副联合表都具有相同的表定义。

    根据本发明的另一个实施例,每个复制任务具有相关联的唯一任务标识符
    和唯一签名。当在主数据库上执行复制任务时,与每个复制任务相关联的任务
    标识符和签名被存储于主数据库中,并且在已经在副数据库上执行了复制任务
    之后与复制任务相关联的相同的唯一任务标识符和唯一签名被存储于副数据库
    中。当通知副服务器主数据库中的主表已经发生更新时,副服务器从主数据库
    获得与复制任务相关联的任务标识符和签名,并将所述签名与之前存储在副数
    据库中的签名相比较。如果来自主数据库的签名与来自副数据库的签名不匹配,
    则副服务器在副数据库上执行复制任务,并然后将来自主数据库的签名存储于
    副数据库中以便不会再次执行该复制任务。

    根据本发明的另一个实施例,第二更新命令以基于副数据库中的数据的标
    准作为更新副表的条件。例如,安装于主服务器上的应用启动复制任务,该任
    务在主数据库中建立新配置表,在该主数据库中与该应用相关联的配置数据被
    维护。通知副服务器已经在主数据库上执行复制任务。副服务器从主数据库获
    得与该复制任务相关联的标识符和签名,并确定尚未在副数据库上执行该复制
    任务。副服务器基于用于创建新配置表的第一更新命令获得第二更新命令。但
    是,第二更新命令以在副数据库中存在副配置表作为修改副数据库中的副配置
    表的条件。由于该应用还没有被安装在副服务器上,所以该副配置表还不存在
    于副数据库上,并且没有数据被从主数据库中的新配置表复制到副数据库。在
    未来的时间点,当该应用被安装在副服务器上并在副数据库中创建了副配置表
    时,则能够指示副服务器启动复制过程。副服务器将再次从主数据库获得与复
    制任务相关联的任务标识符和签名,确定来自主数据库的签名与来自副数据库
    的签名不匹配,并在副数据库上执行复制任务。

    还是根据本发明的又另一个实施例,第二更新命令以基于副数据库中数据
    的标准作为更新副表中的特定行的条件。例如,主服务器上的应用启动复制任
    务,该任务基于特定标准修改主表中的特定行。通知副服务器已经在主数据库
    上执行了复制任务。副服务器从主数据库获得与复制任务相关联的任务标识符
    和签名,并确定还没有在副数据库上执行该复制任务。副服务器基于用于创建
    新配置表的第一更新命令获得第二更新命令。副服务器执行复制任务,并且基
    于特定标准仅更新副表中的特定行。

    还是根据本发明的又另一个实施例,将新的副服务器添加到已有副服务器
    的集群。新的副服务器启动并访问主数据库以获得与主服务器上的复制任务相
    关联的唯一任务标识符和签名。随后在与新的副服务器相关联的副数据库上执
    行每个复制任务。同样地,从主数据库选择性地复制新的副数据库,而不需耗
    时的手动配置,并且也不会对主数据库和任意其它副数据库造成干扰。

    附图说明

    包括到说明书中并构成说明书一部分的附图阐明了本发明的几个方面,并
    与说明书一起用于解释本发明的原理。

    图1是根据本发明的一个实施例的用于选择性地复制数据库的系统的框
    图。

    图2是更详细地示出了图1所示系统的各方面的框图。

    图3是图示根据本发明的一个实施例的用于更新主数据库中的主表的过程
    的流程图。

    图4是图示根据图3所示实施例的用于更新副数据库中的副表的过程的流
    程图。

    图5是图示根据本发明的另一个实施例用于选择性复制的过程中的示例性
    数据的框图。

    图6是根据本发明的一个实施例的服务器的框图。

    具体实施方式

    以下阐述的实施例表示使得那些本领域的技术人员能够实现本发明,并说
    明了实现本发明的最佳方式的必要信息。根据附图阅读说明书之后,本领域的
    技术人员将理解本发明的概念,并将意识到这些概念的应用并不特定于此处所
    述。应该理解,这些概念和应用落入本公开和所附权利要求书的范围内。

    本发明使得与主服务器相关联的主数据库能够被选择性地复制到与在集群
    中运行的多个副服务器相关联的多个副数据库。本发明使用传统的数据库修改
    语句来执行复制,并消除了与传统的数据库复制相关联的复杂性,同时提供了
    比传统数据库显著更多的灵活性。本发明在很小的处理开销或网络带宽使用的
    情况下使得多个集群的数据库能够选择性地基本上彼此同时地复制。本发明还
    实现数据库的自动恢复而无需人类干预或不需要复杂的数据库命令的知识。由
    于使用传统的数据库语句来执行复制任务,本发明在多厂商的环境中提供了选
    择性的数据库复制。

    图1是根据本发明的一个实施例的用于选择性地复制数据库的系统的框
    图。主服务器10通过网络14与多个副服务器12耦合。主服务器10和副服务
    器12优选地在集群中运行,并通过网络14向其它设备(未示出)提供一种或
    多种服务。主服务器10与主数据库16通信地耦合并与之相关联,并且每个副
    服务器12与副数据库18通信地耦合并与之相关联。有时此处的主服务器10和
    副服务器12可以被称为集群中的节点。将集群中的特定节点指定为主节点或副
    节点可以由安装决定。但是,被指定为主服务器的节点(例如主服务器10)是
    所有其它节点(例如副服务器12)优先与之通信以接收特定信息(例如为集群
    中的每个节点所共用的配置信息)的节点。除了主服务器和副服务器的角色之
    外,在主服务器10和副服务器12之间物理上的差异很小。此处主服务器10和
    副服务器12可以被共同地称为服务器10、12,这里涉及主服务器10和副服务
    器12的讨论是等同的。

    服务器10、12可以包括适合执行此处所述功能的任意数据处理设备。服务
    器10、12可以是运行传统的或有专用的操作系统的通用计算机服务器,所述操
    作系统通过在服务器10、12上运行的一个或多个应用来实现传统的或专用的功
    能。可替换地,服务器10、12可以是提供有限功能的专用设备。根据本发明的
    一个实施例,服务器10、12包括媒体应用服务器,其能够向多个终端用户设备
    (未示出),例如电话、计算机等等提供多种通信服务,例如提供语音、视频、
    音频和其它服务。

    网络14可以包括任意适合的通信技术,有线的或无线的,能够在服务器
    10、12之间实现通信的,并可以使用任何传统的消息传送协议,例如传输控制
    协议/网际协议(TCP/IP)、实时传输协议(RTP)、媒体资源控制协议(MRCP)
    等等,或者可以使用专用消息传送协议。主数据库16和副数据库18可以包括
    任意适合的数据库管理系统(DBMS)、例如传统的关系DBMS或层次DBMS。
    特别地,主数据库16和副数据库18可以由同一厂商或不同厂商来提供,只要
    数据库以相同方式响应相同的传统数据库语句就可以,例如结构化查询语言
    (SQL)语句。此处主数据库16和副数据库18可以共同地称为数据库16、18,
    这里涉及主数据库16和副数据库18的讨论是等同的。

    虽然数据库16、18被描述为与存储设备相关联,所述存储设备分别与服务
    器10、12分离,但是本领域的技术人员会意识到DBMS不仅包括数据结构(例
    如表,用于包含数据的数据集合和索引,其可以存储于存储设备上),而且还包
    括相对复杂的数据库访问算法的集合,其在相关联的服务器10、12上运行,或
    者在专用的数据库处理器上运行,并且使得应用程序能够创建、更新、访问、
    和查询数据库16、18。对主数据库16的在主服务器10“上”或与主服务器10“相
    关联”的引用指的是主数据库16和主服务器10之间的关联,主数据库16物理
    地位于主服务器10上,与主服务器10集成,还是仅仅通过网络14或另一个网
    络或通信路径可被主服务器10所访问。类似地,对副数据库18的在相应的副
    服务器12“上”或与相应的副服务器12“相关联”的引用指的是副数据库18和相应
    的副服务器12之间的关联,副数据库12物理地位于副服务器18上,与副服务
    器12集成,还是仅仅通过网络14或另一个网络或通信路径可被副服务器12所
    访问。此处对从服务器10、12获得数据库信息的引用指的是根据具体情况从与
    相应的服务器10、12相关联的相应的数据库16、18获得信息,无论相应的服
    务器10、12实际上是否参与提供来自相应数据库16、18的数据。

    提供服务器10、12的期望功能的应用可以使用数据库16、18来存储用于
    多种目的的数据,包括涉及相应应用的操作的信息。例如,数据库16、18可以
    包括节点的数据,其仅涉及与数据库16、18相关联的特定服务器10、12,例如,
    相关联的服务器10、12的主机名或网际协议(IP)地址。数据库16、18还可
    以包括涉及集群中的所有节点的集群数据,例如是否使用简单网络管理协议
    (SNMP)来管理服务器10、12。根据本发明的一个实施例,可以被选择性复制
    的数据类型可以包括但不限于,会话发起协议(SIP)配置信息,其包括SIP域、
    SIP代理属性、SIP可信节点;运行测量配置信息,例如运行测量信息是否被存
    档;媒体编解码器信息,其标识哪些编解码器被启用,与编解码器关联的优先
    级排序;工程参数,例如最大中央处理单元限制、时间同步服务器的地址、许
    可密钥等等。根据本发明,在基本上同时的时间帧中,例如,在两秒或三秒内,
    在主数据库16上修改的集群数据可以被自动复制到副数据库18上,而在主数
    据库16上修改的节点数据将不会被复制到副数据库18。

    图2是图1中所示的主服务器10及其关联的主数据库16和副服务器12
    及其关联的副数据库18的更详细的框图,其包括了根据本发明的一个实施例的
    用于执行选择性复制的表定义。主服务器10包括提供主服务器10的特定功能
    的应用20。副服务器12包括表同步器22,此处其用于描述在一个或多个副服
    务器12上执行以便选择性地将数据从主数据库16复制到副数据库18的本发明
    的方面。图2将结合图3来讨论,图3是图示根据本发明的一个实施例的用于
    更新主数据库16中的主表24的过程的流程图。图2还将结合图4来讨论,图4
    是图示根据本发明的一个实施例的用于将数据从主表24复制到副数据库18中
    的副表26的过程的流程图。图2-4还将结合图5来讨论,图5是表示根据本发
    明的一个实施例的用于执行选择性数据库复制的特定表的表定义的框图。

    现在参考图2和图3,假设应用20通过向主表24中插入包含一个或多个
    配置参数的新的数据行28来修改主表24(步骤100),并且该修改是应该被复
    制到副数据库18的复制任务。虽然出于说明的目的使用SQL DBMS和关系数
    据库术语(例如表、插入、连接(join)等等)来描述本发明,但是本领域的技
    术人员会意识到此处描述的概念适用于许多不同类型的DBMS,包括层次
    DBMS,并且本发明不限于使用关系DBMS。将新行28插入到主表24中之后,
    应用20将与对主表24的更新相关联的新数据行插入到TASK_CFG表30中。
    新的数据行可以包括SYNCTASKID字段32,其包含识别复制任务的唯一任务
    标识符。本领域的技术人员会意识到,可以用多种不同的方式获得唯一标识符,
    包括调用厂商提供的操作系统函数或提供唯一标识符上请求的DBMS函数。
    TASK_CFG表30中的新行还可以包括SYNCMODE字段34,其包含关于数据
    库语句的信息,这些语句将用于在副数据库18上执行复制。SYNCMODE字段
    34能够指示使用单个数据库语句或多个数据库语句执行复制任务,这些语句可
    以从SYNCSQLSTMTS字段38获得,或者副服务器12应当基于主表24的模
    式(schema)定义生成多个数据库语句以执行复制任务。新行还可以包括
    SYNCFIG字段36,其包含指示复制任务是否应该被复制到副表26的指示符。
    新行还可以包括SYNCSQLSTMTS字段38,其可以包含实际的数据库语句,所
    述数据库语句由副服务器12使用以基于SYNCMODE字段34在副表26上执行
    复制任务(步骤102)。特别地,如此处更详细的描述的那样,SYNCSQLSTMTS
    字段38中所包含的数据库语句可能与应用20所使用的用来将新行28插入到主
    表24中的数据库语句不同,因为SYNCSQLSTMTS字段38中的数据库语句将
    是那些在副服务器12上运行以将数据从主表24复制到副表26的数据库语句。

    接着应用20将新行插入到TASK_FED_ASSOC表40中。
    TASK_FED_ASSOC表40中的新行可以包括SYNCTASKID字段42,其包含如
    上所述的相同的SYNCTASKID(步骤104)。TASK_FED_ASSOC表40中的新
    行还可以包括SYNCTABLEID字段44,其包含了标识主表24的标识符。来自
    SYNCTABLEID字段44的SYNCTABLEID可以用于交叉引用(cross reference)
    FED_TABLE_CFG表46,表46包括用于主数据库16中每个表的行。
    FED_TABLE_CFG表46中的每一行都可以包括SYNCTABLEID字段48,其是
    与主数据库16中的特定表相关联的唯一标识符;SYNCTABLENAME字段50,
    其包含主数据库16中的实际表名;以及SYNCDBNAME字段52,其包含主数
    据库16的实际名称。FED_TABLE_CFG表46被用于将特定SYNCTABLEID
    与主数据库16中的特定主表交叉引用。

    接着应用20将新行插入到TASK_LAST_UPDATE表54中。
    TASK_LAST_UPDATE表54中的新行可以包括SYNCTASKID字段56,其包
    含关于TASK_FED_ASSOC表40和TASK_CFG表30所描述的SYNCTASKID;
    以及LASTSIG字段58,其包括与相应的SYNCTASKID相关联的唯一签名(步
    骤106)。新行还可以包括SYNCORDER字段60,其包括出于效率目的或数据
    完整性目的由副服务器12使用以确保复制按特定次序发生的数据。虽然此处将
    TASK_CFG表30、TASK_FED_ASSOC表40、FED_TABLE_CFG表46和
    TASK_LAST_UPDATE表54全部描述为主数据库16中的表,但是本领域的技
    术人员可以理解,此类表可以位于与主数据库16分离的数据库中。

    接着应用20向在副服务器12上运行的表同步器22通知:在主数据库16
    上执行了复制任务(步骤108)。使用任意的传统机制,应用20能够向副服务器
    12通知复制任务,该机制使得在第一服务器上运行的任务能够向在第二服务器
    上运行的任务通知在第一服务器上发生事件。根据本发明的一个实施例,通过
    SQL触发器,应用20向表同步器22通知:在主数据库16上执行了复制任务。
    在将新行插入到TASK_LAST_UPDATE表54之后可以激发该触发器。该触发
    器可以引起表同步器22正在等待发生的事件,从而通知表同步器22:已经在主
    数据库16上执行了复制任务。

    现在参考图2和图4,表同步器22确定已将更新应用于主表24(步骤200)。
    表同步器22从主数据库16中的TASK_LAST_UPDATE表54获得每一行(步
    骤202)。表同步器22访问副数据库18中的TASK_LAST_SYNC表62,其包
    括与之前在副数据库18上执行的每个复制任务相关联的行。
    TASK_LAST_SYNC表62中的每一行包括SYNCTASKID字段64,其包含来自
    与相应复制任务相关联的主数据库16的SYNCTASKID;以及LASTSIG字段
    66,其包括与相应SYNCTASKID相关联的LASTSIG。表同步器22将来自
    TASK_LAST_UPDATE表54的每一行的LASTSIG与来自TASK_LAST_SYNC
    表62的每一行的LASTSIG进行比较,以确定TASK_LAST_UPDATE表54中
    每一行中的LASTSIG是否与TASK_LAST_SYNC表62中每一行中的LASTSIG
    匹配(步骤204)。如果来自TASK_LAST_SYNC表62的行的LASTSIG与
    TASK_LAST_UPDATE表54的任意行的LASTSIG都不匹配,那么必须在副数
    据库18上执行与该SYNCTASKID相关联的复制任务。由于应用20执行了新
    的复制任务(其包含利用新行28来更新主表24,来自TASK_LAST_UPDATE
    表54中新行的LASTSIG将会与来自TASK_LAST_SYNC表62中任意行的
    LASTSIG都不匹配。

    然后,表同步器22访问主数据库16中的TASK_FED_ASSOC表40,并使
    用来自TASK_LAST_UPDATE表54中的新行的SYNCTASKID来访问
    TASK_FED_ASSOC表40以获得用于相应的SYNCTASKID的SYNCTABLEID
    (步骤206)。接着,表同步器22使用来自TASK_FED_ASSOC表40的
    SYNCTABLEID来访问主数据库16中的FED_TABLE_CFG表46,以获得表的
    SYNCTABLENAME和用于相应同步任务中的数据库的SYNCDBNAME(步骤
    208)。然后表同步器22建立副联合表68,其引用由FED_TABLE_CFG表46
    中SYNCTABLENAME字段50所标识的特定主表24,或与之耦合(步骤210)。
    如本领域技术人员可以理解的那样,联合表使得远程服务器上的数据库表看上
    去似乎该数据库表被安装于或以其他方式存在于本地服务器上。虽然词组“联合
    表”用于特定的DBMS中,但是可以理解,联合表的能力和概念存在于多个不
    同的DBMS中,并且在此处词组“联合表”的使用包含了从远程数据库表示本地
    数据库上的表的能力,以使得在本地数据库中的表上应用的数据库语句导致从
    远程数据库对数据进行访问,而不管用于描述任何特定DBMS中的这种特征的
    专用术语。本发明的副联合表68优选地具有与副联合表68所耦合到的主表24
    以及副表26这二者相同的表定义。

    表同步器22使用相应的SYNCTASKID访问主数据库16中的TASK_CFG
    表30以获得来自TASK_CFG表30的相应行的SYNCSQLSTMTS字段38的更
    新命令(步骤212)。数据库更新命令包括与相应DBMS相关联的一个或多个数
    据库语句。如果数据库更新命令包括单个数据库语句,那么SYNCMODE字段
    34的值可以为“0”。如果数据库更新命令包括多个数据库语句,那么
    SYNCMODE字段34的值可以为“1”。然后表同步器22使用副联合表68将数
    据库语句应用于副表26以创建新行70,其从主数据库16的主表24中的新行
    28处复制数据。表同步器22接着将新行插入到TASK_LAST_SYNC表62,其
    包括与从TASK_LAST_UPDATE表54获得的相应复制任务相关联的LASTSIG
    和SYNCTASKID,这样表同步器22不会在随后重复该复制任务(步骤214)。
    接着在一段时间之后,表同步器22然后移除副联合表68。

    在可替换实施例中,SYNCMODE字段34的值为“2”,这指示表同步器
    22基于主表24的表模式生成第二命令。在这种实施例中,表同步器22查询主
    数据库16的模式以确定定义主表24和副表26的表模式。表同步器22生成插
    入、更新及删除SQL语句,其对副联合表68的每个字段执行连接。插入SQL
    语句将来自主表24的新行添加到副表26,其之前不在副表26中。更新SQL语
    句基于来自主表24的相同行中的数据来更新副表26中的任意行。删除SQL语
    句将不存在于主表24中的行从副表26中移除。

    图5是图示根据本发明的另一个实施例的由应用20执行的示例性复制任务
    的示例性数据的框图。TASK_FED_ASSOC表40、TASK_CFG表30、
    FED_TABLE_CFG表46、TASK_LAST_UPDATE表54、和TASK_LAST_SYNC
    表62包含与参照图2讨论的那些相同的字段。但是,在图5中,出于说明的目
    的,示出实际的代表性数据。相应表中的每一行将会具有与相应表相同的元素
    参考数字后面跟着字母字符。例如,TASK_FED_ASSOC表40包含三个行40A、
    40B、40C。TASK_FED_ASSOC表40中的每个行都包括包含特定值的
    SYNCTASKID字段42,和包含特定值的SYNCTABLEID字段44,如此处所讨
    论的那样。此处字段中的数据由相应字段的名称所指代。假设应用20已经刚刚
    完成SYNCTASKID等于“101”的复制任务。应用20将行30A存储在TASK_CFG
    表30中,其中SYNCTASKID等于“101”,SYNCMODE等于“0”,SYNCFIG等
    于“1”,SYNCSQLSTMTS包含SQL语句,表同步器22应该将该语句应用于副
    表26以执行复制任务。应用20已经将行40A插入到包含相同SYNCTASKID
    的并引用SYNCTABLEID等于“8282”的主表的TASK_FED_ASSOC表40中。
    应用20已经将行54A插入到TASK_LAST_UPDATE表54,其包含相同的
    SYNCTASKID且LASTSIG等于“62”。行54A包含等于“0”的SYNCORDER,
    其指示该复制任务的次序与其它复制任务的次序不相关。假设在复制任务完成
    时应用20通知表同步器22。表同步器22从主数据库16中的
    TASK_LAST_UPDATE表54读取行54A和54B。表同步器22将来自行54A和
    54B中的每一行的LASTSIG与来自副数据库18中的TASK_LAST_SYNC表62
    的行62A和62B的LASTSIG进行比较。表同步器22确定行62A的LASTSIG
    与行54A的LASTSIG不匹配。使用值为“101”的SYNCTASKID,表同步器22
    读取TASK_FED_ASSOC表40,并获得行40A,其包含相同的SYNCTASKID
    值“101”。表同步器22确定行40A的SYNCTABLEID等于“8282”。表同步器22
    使用来自行46C的SYNCTABLEID从FED_TABLE_CFG表46获得行46C。行
    46C指示在SYNCTABLENAME字段50中所包含的表名为“OM_CFG”,并且
    SYNCDBNAME字段52中的数据库名称等于“EMPLATCORE”。表同步器22
    生成副数据库18上的名为“OM_CFG_FED”的副联合表68。注意,表同步器22
    基于在复制任务中被更新的主表24的名称生成的联合数据库表,添加后缀
    “FED”。可以使用任意适合的命名约定来生成副联合表68,只要主服务器10将
    相同的命名约定用于存储于TASK_CFG表30的SYNCSQLSTMTS字段38中
    的、应用于副数据库18以完成相应复制任务的更新命令。

    副联合表68耦合到主数据库16中的主表24。副联合表68本质上提供了
    从主服务器10上的主表24的副数据库18的虚拟化视图,因为应用于副数据库
    18的、引用副联合表68的SQL语句会依靠副联合表68和主表24之间的联合
    耦合来访问主表24,而无需将整个主表24拷贝到副数据库18中。表同步器22
    访问TASK_CFG表30,并使用值为“101”的SYNCTASKID从TASK_CFG表
    30获得行30A。SYNCMODE字段34中的值为“0”指示了更新命令是单个数据
    库语句。SYNCFIG字段36中的值为“1”指示了这个任务应当在副服务器12上
    复制。表同步器22从SYNCSQLSTMTS字段38获得特定数据库语句,如图5
    所示,是“更新”SQL语句,其中“OM_CFG”副表26中的“CFG”字段将被设置为
    来自主表24的“CFG”字段的值,无论哪里OM_CFG副表26的“IND”字段等于
    主表24的“IND”字段。注意,SYNCSQLSTMTS字段38中所包含的“更新”语句
    引用副联合表68。使用副联合表68使得传统的SQL语句能够被用于在副服务
    器12上执行复制任务。还要注意,图5中所示的每个表反映了具有值等于“653”
    的SYNCTASKID的第二个复制任务之前在主数据库16和副数据18这二者上
    都执行过,并且这种复制任务涉及多个主表24和多个SQL语句。

    图6是根据本发明一个实施例的副服务器12的框图。副服务器12包括控
    制系统80,其包含存储适于执行此处所描述的表同步器22的功能的软件84的
    存储器82。副服务器12包括用于与网络或副数据库18对接的通信接口86,视
    情况而定。虽然此处没有示出,但是主服务器10的框图可以与副服务器12的
    框图类似,其中存储器中的相关联软件将适于执行关于应用20所描述的功能。

    本领域的技术人员将会认识到对本发明优选实施例的改进和修改。所有的
    这种改进和修改都认为处于此处公开的概念和随后的权利要求的范围内。

    关 键  词:
    选择性 数据库 复制
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:选择性的数据库复制.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4575015.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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