《选择性的数据库复制.pdf》由会员分享,可在线阅读,更多相关《选择性的数据库复制.pdf(17页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102257494 A (43)申请公布日 2011.11.23 CN 102257494 A *CN102257494A* (21)申请号 200980151932.3 (22)申请日 2009.12.22 12/341845 2008.12.22 US G06F 17/30(2006.01) G06F 9/52(2006.01) H04L 12/16(2006.01) (71)申请人 北方电讯网络有限公司 地址 加拿大魁北克省 (72)发明人 S惠诺特 (74)专利代理机构 中国专利代理(香港)有限公 司 72001 代理人 刘春元 卢江 (54) 发明名称 选择。
2、性的数据库复制 (57) 摘要 一种用于选择性地从与主服务器相关联的主 数据库向与副服务器相关联的副数据库复制数据 的方法和系统。副服务器确定使用第一更新命令 的复制任务已经修改了主数据库。副服务器确定 主数据库中的主表已经被更新。副服务器生成耦 合到主表的副联合表。副服务器基于第一更新命 令从主数据库获得第二更新命令, 并使用副联合 表将第二更新命令应用于副数据库中的副表。 (30)优先权数据 (85)PCT申请进入国家阶段日 2011.06.21 (86)PCT申请的申请数据 PCT/IB2009/007873 2009.12.22 (87)PCT申请的公布数据 WO2010/073110。
3、 EN 2010.07.01 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 8 页 附图 6 页 CN 102257502 A1/2 页 2 1. 一种用于从第一数据库向第二数据库复制数据的方法, 包括 : 确定第一更新命令已经修改了与主服务器相关联的主数据库中的主表中的数据 ; 响应于确定第一更新命令已经修改了主数据库中的主表中的数据, 基于第一更新命令 确定第二更新命令 ; 以及 使用耦合到主表的副联合表来应用第二更新命令以将数据复制在与副服务器相关联 的副数据库中的副表中。 2. 如权利要求 1 的方法, 其中基于第一更新。
4、命令确定第二更新命令包括, 从主数据库 获得应用于副数据库的一个或多个修改语句。 3. 如权利要求 1 的方法, 其中基于第一更新命令确定第二更新命令包括, 获得与由第 一更新命令更新的主表相关联的表模式, 并基于该表模式生成第二更新命令。 4. 如权利要求 2 的方法, 其中所述一个或多个修改语句中的每一个都包含对副联合表 的引用。 5. 如权利要求 1 的方法, 其中所述数据包括与关联于副数据库的副服务器相关联的关 于配置的信息。 6. 如权利要求 1 的方法, 其中主数据库被存储在与主服务器相关联的第一存储装置 上, 并且副数据库被存储在与副服务器相关联的第二存储装置上。 7. 如权利要。
5、求 6 的方法, 其中主服务器和副服务器包括媒体应用服务器。 8. 如权利要求 1 的方法, 其中主表、 副表和副联合表均具有相同的表定义。 9. 如权利要求 1 的方法, 其中确定第一更新命令已经修改了主表包括, 从主服务器接 收第一更新命令已经修改了主数据库的通知。 10. 如权利要求 1 的方法, 进一步包括将第一更新命令应用于主服务器中的主表, 基于 第一更新命令生成第二更新命令, 并将第二更新命令存储在主数据库中的更新表中。 11. 如权利要求 10 的方法, 其中第二更新命令包括一个或多个修改语句, 其引用副表 和副联合表。 12. 如权利要求 1 的方法, 其中应用第二更新命令以。
6、修改副表进一步包括, 生成副联合 表, 使用副联合表来应用第二更新命令以修改副表, 以及在应用第二更新命令之后移除副 联合表。 13. 如权利要求 1 的方法, 其中第二更新命令包括对副联合表的引用, 并且在应用第二 更新命令之后, 通过对副联合表的引用自动将数据从主数据库中的主表传送到副联合表。 14. 如权利要求 1 的方法, 其中副联合表包括主数据库中的主表的虚拟化视图, 其中副 联合表不包含主表中包含的所有数据。 15. 如权利要求 1 的方法, 进一步包括, 确定要更新的副表, 并且其中第二更新命令包 括应用于副表的结构化查询语言 (SQL) 语句。 16. 如权利要求 1 的方法,。
7、 进一步包括, 多个副服务器, 多个副服务器中的每一个都具 有相应的相关联的副数据库, 并且其中响应于确定第一更新命令已经修改了主数据库中的 主表中的数据, 多个副服务器中的每一个都基于第一更新命令来确定第二更新命令, 并使 用耦合到主表的相应的副联合表来应用第二更新命令以基本同时地将数据复制在副数据 库中的相应副表中。 17. 如权利要求 16 的方法, 其中主服务器和多个副服务器均构成服务器集群中的节 权 利 要 求 书 CN 102257494 A CN 102257502 A2/2 页 3 点。 18. 如权利要求 1 的方法, 其中副表是副数据库中的多个副表中的一个。 19. 如权利。
8、要求 1 的方法, 其中使用耦合到主表的副联合表来应用第二更新命令以将 数据复制在副数据库中的副表中, 更新副表中的第一多个行, 而不更新副表中的第二多个 行。 20. 一种用于更新表的装置, 包括 : 适于与网络通信的接口 ; 以及 耦合到该接口的控制系统, 并且其适于 : 确定第一更新命令已经修改了与主服务器相关联的主数据库中的主表中的数据 ; 响应于确定第一更新命令已经修改了主数据库中的主表中的数据, 基于第一更新命令 确定第二更新命令 ; 以及 使用耦合到主表的副联合表来应用第二更新命令以将数据复制在与副服务器相关联 的副数据库中的副表中。 21. 如权利要求 20 的装置, 其中为了。
9、确定第二更新命令, 控制系统进一步适于从主数 据库获得应用于副表的一个或多个修改语句。 22. 如权利要求 21 的装置, 其中所述一个或多个修改语句引用副联合表。 23. 如权利要求 20 的装置, 其中为了确定第二更新命令, 控制系统进一步适于获得与 由第一更新命令更新的主表相关联的表模式, 并基于所述表模式生成第二更新命令。 24. 如权利要求 20 的装置, 其中副联合表包括主数据库中的主表的虚拟化视图, 其中 副联合表不包含主表中包含的所有数据。 25. 如权利要求 20 的装置, 其中控制系统进一步适于确定要更新的副表, 并且其中第 二更新命令包括应用于副数据库的结构化查询语言 (。
10、SQL) 语句。 权 利 要 求 书 CN 102257494 A CN 102257502 A1/8 页 4 选择性的数据库复制 技术领域 0001 本发明大体上涉及复制数据库, 特别涉及在集群 (cluster) 中操作的数据库的选 择性复制。 背景技术 0002 计算机应用使用数据库来存储信息。数据库典型的包括软件功能的复杂集合, 其 通常被称为数据库管理系统 (DBMS), 这使得用户能够定义并创建数据库, 更新并查询该数 据库, 以及以其他方式维护该数据库。数据库提供安全性, 并确保更新是极小的、 持续的且 一致的, 但通常都是以复杂度为代价的。 对于商业上的应用而言, 雇用专任的数。
11、据库专家来 维护商业数据库是很平常的事。应用提供者可能希望使用数据库来存储关键数据, 例如配 置数据, 但是不希望需要客户来承受与维护复杂数据库软件相关联的额外支持费用, 或者, 在一些情况中, 甚至知道应用正在使用特定的 DBMS。因此, 应用提供者可能需要 DBMS 的好 处, 但是希望使他们的用户远离与 DBMS 相关联的复杂性。 0003 特定的应用被设计用来在网络上以分布式的方式协作运行。例如, 电信系统可能 包括集群中联网在一起的多个数据服务器。 集群中的每个服务器与集群中的其它服务器通 信。每个服务器可能具有相关联的数据库, 其中维护着信息, 例如配置信息。在数据库中维 护的信息。
12、可以涉及单独服务器, 例如主机名或网际协议 (IP) 地址, 或者可以为网络上的每 个服务器所共用, 例如不论所述服务器是否实现简单网络管理协议 (SNMP)。在分布式系统 中, 将一个服务器标识为主机 (master) 或主 (primary) 服务器, 而将其余服务器指定为从 服务器或副 (secondary) 服务器是很正常的。对主服务器的特定配置的改变可能需要对每 个副服务器中都进行。 理想地, 每次对主服务器进行此类配置改变时, 无需人类参与就能对 副服务器进行适当的配置改变。今天虽然大多数现代 DBMS 具有一定的在分布式数据库中 传播数据的能力, 例如通过数据库复制来完成, 但是。
13、实现和维护已复制的数据库依然需要 大量的专业知识。此外, 复制增加了重新存储已破坏的数据库或者将新的副数据库添加到 集群的复杂度, 复制不允许副数据库的选择性更新, 并且需要每个数据库都来自于相同的 DBMS 厂商。因此, 需要一种机制, 无需用户掌握大量的数据库专业知识, 就能在分布式数据 库中复制数据库信息, 该机制是可靠的, 并工作在多厂商的环境中, 并基本上同时地实现在 分布式网络上的选择性复制。 发明内容 0004 本领域的技术人员将会了解本发明的范围, 并在参照附图阅读下列优选实施例的 详细描述后认识到到本发明的其它方面。 0005 本发明涉及从主数据库向一个或多个副数据库选择性地。
14、复制数据, 例如配置数 据。复制任务包括对与主服务器相关联的主数据库的更新, 这需要在与副服务器相关联的 一个或多个副数据库上进行复制。 副服务器确定主数据库中的主表已经被第一更新命令所 修改。该第一更新命令能够包括一个或多个数据库修改语句。副服务器确定基于第一更新 说 明 书 CN 102257494 A CN 102257502 A2/8 页 5 命令的第二更新命令。 副服务器生成该副服务器中的副联合表(federated table), 其与主 服务器中的主表耦合。副联合表允许使用副服务器上的传统数据库命令, 例如结构化查询 语言 (SQL) 语句, 来访问来自主表的数据。使用副联合表,。
15、 副服务器将第二更新命令应用于 副表, 从而将来自主数据库的更新复制到副数据库。 0006 根据本发明的一个实施例, 主服务器基于第一更新命令生成第二更新命令, 并将 该第二更新命令存储在主数据库中的更新命令表中。当第一更新命令已经应用于主表时, 主服务器通过触发器或警报通知副服务器。在主服务器接收到通知时, 副服务器访问主数 据库中的更新命令表并获取第二更新命令。副服务器生成与主表耦合的副联合表, 并通过 该副联合表来更新副表。主表、 副表、 副联合表都具有相同的表定义。 0007 根据本发明的另一个实施例, 每个复制任务具有相关联的唯一任务标识符和唯一 签名。当在主数据库上执行复制任务时,。
16、 与每个复制任务相关联的任务标识符和签名被存 储于主数据库中, 并且在已经在副数据库上执行了复制任务之后与复制任务相关联的相同 的唯一任务标识符和唯一签名被存储于副数据库中。 当通知副服务器主数据库中的主表已 经发生更新时, 副服务器从主数据库获得与复制任务相关联的任务标识符和签名, 并将所 述签名与之前存储在副数据库中的签名相比较。 如果来自主数据库的签名与来自副数据库 的签名不匹配, 则副服务器在副数据库上执行复制任务, 并然后将来自主数据库的签名存 储于副数据库中以便不会再次执行该复制任务。 0008 根据本发明的另一个实施例, 第二更新命令以基于副数据库中的数据的标准作为 更新副表的条。
17、件。例如, 安装于主服务器上的应用启动复制任务, 该任务在主数据库中建 立新配置表, 在该主数据库中与该应用相关联的配置数据被维护。通知副服务器已经在主 数据库上执行复制任务。副服务器从主数据库获得与该复制任务相关联的标识符和签名, 并确定尚未在副数据库上执行该复制任务。 副服务器基于用于创建新配置表的第一更新命 令获得第二更新命令。但是, 第二更新命令以在副数据库中存在副配置表作为修改副数据 库中的副配置表的条件。由于该应用还没有被安装在副服务器上, 所以该副配置表还不存 在于副数据库上, 并且没有数据被从主数据库中的新配置表复制到副数据库。在未来的时 间点, 当该应用被安装在副服务器上并在。
18、副数据库中创建了副配置表时, 则能够指示副服 务器启动复制过程。 副服务器将再次从主数据库获得与复制任务相关联的任务标识符和签 名, 确定来自主数据库的签名与来自副数据库的签名不匹配, 并在副数据库上执行复制任 务。 0009 还是根据本发明的又另一个实施例, 第二更新命令以基于副数据库中数据的标准 作为更新副表中的特定行的条件。 例如, 主服务器上的应用启动复制任务, 该任务基于特定 标准修改主表中的特定行。通知副服务器已经在主数据库上执行了复制任务。副服务器从 主数据库获得与复制任务相关联的任务标识符和签名, 并确定还没有在副数据库上执行该 复制任务。副服务器基于用于创建新配置表的第一更新。
19、命令获得第二更新命令。副服务器 执行复制任务, 并且基于特定标准仅更新副表中的特定行。 0010 还是根据本发明的又另一个实施例, 将新的副服务器添加到已有副服务器的集 群。 新的副服务器启动并访问主数据库以获得与主服务器上的复制任务相关联的唯一任务 标识符和签名。随后在与新的副服务器相关联的副数据库上执行每个复制任务。同样地, 从主数据库选择性地复制新的副数据库, 而不需耗时的手动配置, 并且也不会对主数据库 说 明 书 CN 102257494 A CN 102257502 A3/8 页 6 和任意其它副数据库造成干扰。 附图说明 0011 包括到说明书中并构成说明书一部分的附图阐明了本发。
20、明的几个方面, 并与说明 书一起用于解释本发明的原理。 0012 图 1 是根据本发明的一个实施例的用于选择性地复制数据库的系统的框图。 0013 图 2 是更详细地示出了图 1 所示系统的各方面的框图。 0014 图 3 是图示根据本发明的一个实施例的用于更新主数据库中的主表的过程的流 程图。 0015 图 4 是图示根据图 3 所示实施例的用于更新副数据库中的副表的过程的流程图。 0016 图 5 是图示根据本发明的另一个实施例用于选择性复制的过程中的示例性数据 的框图。 0017 图 6 是根据本发明的一个实施例的服务器的框图。 具体实施方式 0018 以下阐述的实施例表示使得那些本领域。
21、的技术人员能够实现本发明, 并说明了实 现本发明的最佳方式的必要信息。根据附图阅读说明书之后, 本领域的技术人员将理解本 发明的概念, 并将意识到这些概念的应用并不特定于此处所述。 应该理解, 这些概念和应用 落入本公开和所附权利要求书的范围内。 0019 本发明使得与主服务器相关联的主数据库能够被选择性地复制到与在集群中运 行的多个副服务器相关联的多个副数据库。本发明使用传统的数据库修改语句来执行复 制, 并消除了与传统的数据库复制相关联的复杂性, 同时提供了比传统数据库显著更多的 灵活性。 本发明在很小的处理开销或网络带宽使用的情况下使得多个集群的数据库能够选 择性地基本上彼此同时地复制。。
22、 本发明还实现数据库的自动恢复而无需人类干预或不需要 复杂的数据库命令的知识。由于使用传统的数据库语句来执行复制任务, 本发明在多厂商 的环境中提供了选择性的数据库复制。 0020 图 1 是根据本发明的一个实施例的用于选择性地复制数据库的系统的框图。主服 务器 10 通过网络 14 与多个副服务器 12 耦合。主服务器 10 和副服务器 12 优选地在集群 中运行, 并通过网络 14 向其它设备 ( 未示出 ) 提供一种或多种服务。主服务器 10 与主数 据库 16 通信地耦合并与之相关联, 并且每个副服务器 12 与副数据库 18 通信地耦合并与之 相关联。有时此处的主服务器 10 和副服。
23、务器 12 可以被称为集群中的节点。将集群中的特 定节点指定为主节点或副节点可以由安装决定。但是, 被指定为主服务器的节点 ( 例如主 服务器 10) 是所有其它节点 ( 例如副服务器 12) 优先与之通信以接收特定信息 ( 例如为集 群中的每个节点所共用的配置信息 ) 的节点。除了主服务器和副服务器的角色之外, 在主 服务器 10 和副服务器 12 之间物理上的差异很小。此处主服务器 10 和副服务器 12 可以被 共同地称为服务器 10、 12, 这里涉及主服务器 10 和副服务器 12 的讨论是等同的。 0021 服务器 10、 12 可以包括适合执行此处所述功能的任意数据处理设备。服务。
24、器 10、 12 可以是运行传统的或有专用的操作系统的通用计算机服务器, 所述操作系统通过在服务 器 10、 12 上运行的一个或多个应用来实现传统的或专用的功能。可替换地, 服务器 10、 12 说 明 书 CN 102257494 A CN 102257502 A4/8 页 7 可以是提供有限功能的专用设备。根据本发明的一个实施例, 服务器 10、 12 包括媒体应用 服务器, 其能够向多个终端用户设备 ( 未示出 ), 例如电话、 计算机等等提供多种通信服务, 例如提供语音、 视频、 音频和其它服务。 0022 网络 14 可以包括任意适合的通信技术, 有线的或无线的, 能够在服务器 1。
25、0、 12 之 间实现通信的, 并可以使用任何传统的消息传送协议, 例如传输控制协议 / 网际协议 (TCP/ IP)、 实时传输协议 (RTP)、 媒体资源控制协议 (MRCP) 等等, 或者可以使用专用消息传送协 议。主数据库 16 和副数据库 18 可以包括任意适合的数据库管理系统 (DBMS)、 例如传统的 关系 DBMS 或层次 DBMS。特别地, 主数据库 16 和副数据库 18 可以由同一厂商或不同厂商 来提供, 只要数据库以相同方式响应相同的传统数据库语句就可以, 例如结构化查询语言 (SQL) 语句。此处主数据库 16 和副数据库 18 可以共同地称为数据库 16、 18, 。
26、这里涉及主数 据库 16 和副数据库 18 的讨论是等同的。 0023 虽然数据库 16、 18 被描述为与存储设备相关联, 所述存储设备分别与服务器 10、 12 分离, 但是本领域的技术人员会意识到 DBMS 不仅包括数据结构 ( 例如表, 用于包含数据 的数据集合和索引, 其可以存储于存储设备上 ), 而且还包括相对复杂的数据库访问算法的 集合, 其在相关联的服务器 10、 12 上运行, 或者在专用的数据库处理器上运行, 并且使得应 用程序能够创建、 更新、 访问、 和查询数据库 16、 18。对主数据库 16 的在主服务器 10“上” 或与主服务器 10“相关联” 的引用指的是主数据。
27、库 16 和主服务器 10 之间的关联, 主数据 库 16 物理地位于主服务器 10 上, 与主服务器 10 集成, 还是仅仅通过网络 14 或另一个网络 或通信路径可被主服务器 10 所访问。类似地, 对副数据库 18 的在相应的副服务器 12 “上” 或与相应的副服务器 12“相关联” 的引用指的是副数据库 18 和相应的副服务器 12 之间的 关联, 副数据库 12 物理地位于副服务器 18 上, 与副服务器 12 集成, 还是仅仅通过网络 14 或另一个网络或通信路径可被副服务器 12 所访问。此处对从服务器 10、 12 获得数据库信 息的引用指的是根据具体情况从与相应的服务器10、。
28、 12相关联的相应的数据库16、 18获得 信息, 无论相应的服务器 10、 12 实际上是否参与提供来自相应数据库 16、 18 的数据。 0024 提供服务器10、 12的期望功能的应用可以使用数据库16、 18来存储用于多种目的 的数据, 包括涉及相应应用的操作的信息。例如, 数据库 16、 18 可以包括节点的数据, 其仅 涉及与数据库 16、 18 相关联的特定服务器 10、 12, 例如, 相关联的服务器 10、 12 的主机名或 网际协议 (IP) 地址。数据库 16、 18 还可以包括涉及集群中的所有节点的集群数据, 例如是 否使用简单网络管理协议 (SNMP) 来管理服务器 。
29、10、 12。根据本发明的一个实施例, 可以被 选择性复制的数据类型可以包括但不限于, 会话发起协议 (SIP) 配置信息, 其包括 SIP 域、 SIP 代理属性、 SIP 可信节点 ; 运行测量配置信息, 例如运行测量信息是否被存档 ; 媒体编解 码器信息, 其标识哪些编解码器被启用, 与编解码器关联的优先级排序 ; 工程参数, 例如最 大中央处理单元限制、 时间同步服务器的地址、 许可密钥等等。根据本发明, 在基本上同时 的时间帧中, 例如, 在两秒或三秒内, 在主数据库 16 上修改的集群数据可以被自动复制到 副数据库 18 上, 而在主数据库 16 上修改的节点数据将不会被复制到副数。
30、据库 18。 0025 图 2 是图 1 中所示的主服务器 10 及其关联的主数据库 16 和副服务器 12 及其关 联的副数据库 18 的更详细的框图, 其包括了根据本发明的一个实施例的用于执行选择性 复制的表定义。主服务器 10 包括提供主服务器 10 的特定功能的应用 20。副服务器 12 包 括表同步器 22, 此处其用于描述在一个或多个副服务器 12 上执行以便选择性地将数据从 说 明 书 CN 102257494 A CN 102257502 A5/8 页 8 主数据库 16 复制到副数据库 18 的本发明的方面。图 2 将结合图 3 来讨论, 图 3 是图示根 据本发明的一个实施。
31、例的用于更新主数据库 16 中的主表 24 的过程的流程图。图 2 还将结 合图 4 来讨论, 图 4 是图示根据本发明的一个实施例的用于将数据从主表 24 复制到副数据 库 18 中的副表 26 的过程的流程图。图 2-4 还将结合图 5 来讨论, 图 5 是表示根据本发明 的一个实施例的用于执行选择性数据库复制的特定表的表定义的框图。 0026 现在参考图2和图3, 假设应用20通过向主表24中插入包含一个或多个配置参数 的新的数据行 28 来修改主表 24( 步骤 100), 并且该修改是应该被复制到副数据库 18 的复 制任务。 虽然出于说明的目的使用SQL DBMS和关系数据库术语(。
32、例如表、 插入、 连接(join) 等等 ) 来描述本发明, 但是本领域的技术人员会意识到此处描述的概念适用于许多不同类 型的DBMS, 包括层次DBMS, 并且本发明不限于使用关系DBMS。 将新行28插入到主表24中之 后, 应用20将与对主表24的更新相关联的新数据行插入到TASK_CFG表30中。 新的数据行 可以包括SYNCTASKID字段32, 其包含识别复制任务的唯一任务标识符。 本领域的技术人员 会意识到, 可以用多种不同的方式获得唯一标识符, 包括调用厂商提供的操作系统函数或 提供唯一标识符上请求的 DBMS 函数。TASK_CFG 表 30 中的新行还可以包括 SYNCMO。
33、DE 字段 34, 其包含关于数据库语句的信息, 这些语句将用于在副数据库 18 上执行复制。SYNCMODE 字段 34 能够指示使用单个数据库语句或多个数据库语句执行复制任务, 这些语句可以从 SYNCSQLSTMTS 字段 38 获得, 或者副服务器 12 应当基于主表 24 的模式 (schema) 定义生成 多个数据库语句以执行复制任务。新行还可以包括 SYNCFIG 字段 36, 其包含指示复制任务 是否应该被复制到副表 26 的指示符。新行还可以包括 SYNCSQLSTMTS 字段 38, 其可以包含 实际的数据库语句, 所述数据库语句由副服务器12使用以基于SYNCMODE字段。
34、34在副表26 上执行复制任务 ( 步骤 102)。特别地, 如此处更详细的描述的那样, SYNCSQLSTMTS 字段 38 中所包含的数据库语句可能与应用 20 所使用的用来将新行 28 插入到主表 24 中的数据库 语句不同, 因为 SYNCSQLSTMTS 字段 38 中的数据库语句将是那些在副服务器 12 上运行以将 数据从主表 24 复制到副表 26 的数据库语句。 0027 接着应用 20 将新行插入到 TASK_FED_ASSOC 表 40 中。TASK_FED_ASSOC 表 40 中 的新行可以包括 SYNCTASKID 字段 42, 其包含如上所述的相同的 SYNCTAS。
35、KID( 步骤 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 中的。
36、实际表名 ; 以及 SYNCDBNAME 字段 52, 其包含主数据库 16 的实际名称。FED_TABLE_CFG 表 46 被用于将特定 SYNCTABLEID 与主 数据库 16 中的特定主表交叉引用。 0028 接着应用 20 将新行插入到 TASK_LAST_UPDATE 表 54 中。TASK_LAST_UPDATE 表 54 中的新行可以包括 SYNCTASKID 字段 56, 其包含关于 TASK_FED_ASSOC 表 40 和 TASK_CFG 表 30所描述的SYNCTASKID ; 以及LASTSIG字段58, 其包括与相应的SYNCTASKID相关联的唯一 签名 ( 。
37、步骤 106)。新行还可以包括 SYNCORDER 字段 60, 其包括出于效率目的或数据完整性 目的由副服务器 12 使用以确保复制按特定次序发生的数据。虽然此处将 TASK_CFG 表 30、 TASK_FED_ASSOC 表 40、 FED_TABLE_CFG 表 46 和 TASK_LAST_UPDATE 表 54 全部描述为主数 说 明 书 CN 102257494 A CN 102257502 A6/8 页 9 据库16中的表, 但是本领域的技术人员可以理解, 此类表可以位于与主数据库16分离的数 据库中。 0029 接着应用 20 向在副服务器 12 上运行的表同步器 22 通知。
38、 : 在主数据库 16 上执行 了复制任务 ( 步骤 108)。使用任意的传统机制, 应用 20 能够向副服务器 12 通知复制任务, 该机制使得在第一服务器上运行的任务能够向在第二服务器上运行的任务通知在第一服 务器上发生事件。 根据本发明的一个实施例, 通过SQL触发器, 应用20向表同步器22通知 : 在主数据库 16 上执行了复制任务。在将新行插入到 TASK_LAST_UPDATE 表 54 之后可以激 发该触发器。该触发器可以引起表同步器 22 正在等待发生的事件, 从而通知表同步器 22 : 已经在主数据库 16 上执行了复制任务。 0030 现在参考图 2 和图 4, 表同步器。
39、 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。
40、_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 执行了新的复制任务。
41、 ( 其包含利用新行 28 来更新主表 24, 来 自 TASK_LAST_UPDATE 表 54 中新行的 LASTSIG 将会与来自 TASK_LAST_SYNC 表 62 中任意行 的 LASTSIG 都不匹配。 0031 然后, 表同步器22访问主数据库16中的TASK_FED_ASSOC表40, 并使用来自TASK_ LAST_UPDATE表54中的新行的SYNCTASKID来访问TASK_FED_ASSOC表40以获得用于相应的 SYNCTASKID的SYNCTABLEID(步骤206)。 接着, 表同步器22使用来自TASK_FED_ASSOC表40 的 SYNCTABLEID 。
42、来访问主数据库 16 中的 FED_TABLE_CFG 表 46, 以获得表的 SYNCTABLENAME 和用于相应同步任务中的数据库的 SYNCDBNAME( 步骤 208)。然后表同步器 22 建立副联合 表 68, 其引用由 FED_TABLE_CFG 表 46 中 SYNCTABLENAME 字段 50 所标识的特定主表 24, 或 与之耦合 ( 步骤 210)。如本领域技术人员可以理解的那样, 联合表使得远程服务器上的数 据库表看上去似乎该数据库表被安装于或以其他方式存在于本地服务器上。虽然词组 “联 合表” 用于特定的DBMS中, 但是可以理解, 联合表的能力和概念存在于多个不同。
43、的DBMS中, 并且在此处词组 “联合表” 的使用包含了从远程数据库表示本地数据库上的表的能力, 以使 得在本地数据库中的表上应用的数据库语句导致从远程数据库对数据进行访问, 而不管用 于描述任何特定 DBMS 中的这种特征的专用术语。本发明的副联合表 68 优选地具有与副联 合表 68 所耦合到的主表 24 以及副表 26 这二者相同的表定义。 0032 表同步器 22 使用相应的 SYNCTASKID 访问主数据库 16 中的 TASK_CFG 表 30 以获 得来自 TASK_CFG 表 30 的相应行的 SYNCSQLSTMTS 字段 38 的更新命令 ( 步骤 212)。数据库 更新。
44、命令包括与相应 DBMS 相关联的一个或多个数据库语句。如果数据库更新命令包括单 个数据库语句, 那么 SYNCMODE 字段 34 的值可以为 “0” 。如果数据库更新命令包括多个数据 说 明 书 CN 102257494 A CN 102257502 A7/8 页 10 库语句, 那么 SYNCMODE 字段 34 的值可以为 “1” 。然后表同步器 22 使用副联合表 68 将数 据库语句应用于副表 26 以创建新行 70, 其从主数据库 16 的主表 24 中的新行 28 处复制数 据。表同步器 22 接着将新行插入到 TASK_LAST_SYNC 表 62, 其包括与从 TASK_L。
45、AST_UPDATE 表 54 获得的相应复制任务相关联的 LASTSIG 和 SYNCTASKID, 这样表同步器 22 不会在随后 重复该复制任务 ( 步骤 214)。接着在一段时间之后, 表同步器 22 然后移除副联合表 68。 0033 在可替换实施例中, SYNCMODE字段34的值为 “2” , 这指示表同步器22基于主表24 的表模式生成第二命令。在这种实施例中, 表同步器 22 查询主数据库 16 的模式以确定定 义主表 24 和副表 26 的表模式。表同步器 22 生成插入、 更新及删除 SQL 语句, 其对副联合 表 68 的每个字段执行连接。插入 SQL 语句将来自主表 。
46、24 的新行添加到副表 26, 其之前不 在副表 26 中。更新 SQL 语句基于来自主表 24 的相同行中的数据来更新副表 26 中的任意 行。删除 SQL 语句将不存在于主表 24 中的行从副表 26 中移除。 0034 图 5 是图示根据本发明的另一个实施例的由应用 20 执行的示例性复制任务的示 例性数据的框图。 TASK_FED_ASSOC表40、 TASK_CFG表30、 FED_TABLE_CFG表46、 TASK_LAST_ UPDATE 表 54、 和 TASK_LAST_SYNC 表 62 包含与参照图 2 讨论的那些相同的字段。但是, 在 图 5 中, 出于说明的目的, 。
47、示出实际的代表性数据。相应表中的每一行将会具有与相应表相 同的元素参考数字后面跟着字母字符。例如, 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” 。
48、, 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, 其指示该复制任务的次序。
49、与其它复制任务的次序不相关。 假设在复制任务完成 时应用 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 中的数据库名称等于 “EMPLATC。