数据库同步工具
sqlserver,Mysql数据同步软件

关系数据库中的数据复制

购买事宜请联系QQ:1793040

本文讨论了一种数据复制自动化技术,该技术将特定记录从基于Oracle/MySQL DB的源数据库复制到目标数据库。

考虑以下用例。 QA小组提供的服务之一是复制数据环境,例如,将特定记录(正在发现一些看不见的业务逻辑缺陷)从登台环境复制到测试环境中,以重现和调试问题。复制自动化节省了在测试环境中手动重新创建数据的工作,这通常很复杂,耗时且容易出错。此外,结果可能与源环境中正在检查的情况不符。

乍一看,这似乎是一项简单的任务,即从源数据库中导出记录并将其插入目标数据库中。但是,这种方法提出了一些要解决的问题:

  • 参照完整性已损坏。  一条记录可能通过某些外键引用了另一条称为父记录的记录。要将记录复制到数据库中,必须先复制其父项。

  • 业务关系。  一条记录可以同时引用其他记录(其父项)可以被称为”儿童”的其他一些记录引用。这些参考构成业务结构和关系。因此,从业务角度来看,要复制记录,还必须复制其父母和子女。

为促进随后的讨论,让我们定义:

  • 记录的家庭,成为记录的父母和孩子的结合。

  • 种子记录的数据场景是以下记录的并集:

    1. 一些已知的记录称为用户的种子。

    2. #1中每个记录的族。

    3. #2中每个记录的族,依此类推。

使用这些定义,数据复制的用例现在减少为:给定种子记录,从源数据库导出数据方案,并按照符合参照完整性的顺序将它们复制到目标数据库中

复制自动化中的关键点包括:

  1. 如何查找父子关系。这可以通过Oracle/MySQL DBMS中可用的表来解决。特别是,,,和列实现引用。

  2. 如何查找记录的完整定义。可以通过表格再次解决此问题,该表格也可以在DBMS中使用。特别是, 列和 提供了适当的记录配置文件。

  3. 如何建立符合参照完整性的记录插入顺序。这可以通过双端队列解决。双端队列是双端队列,其中元素的插入和删除都可以在两个端点处执行。在我们的案例中,我们施加以下约束:

    • 在前端插入父母。

    • 在后端插入子项。

    • 在前端检索/删除记录。

以下代码段概述了复制自动化的解决方案,并在下面提供了实现说明。

 
  • 在第35行中,使用”元”信息检索完整记录,然后将记录导出为”语句,并将其写入脚本文件;完成后可以在目标数据库中执行该操作以实际复制数据方案。
  • 第24行和第27行实现了  >  > 线性 每个记录的顺序。因此,在插入目标数据库期间会尊重参照完整性。

请考虑以下包含五个记录的简单数据方案:2有一个孩子(1),3有两个孩子(1和5),1有两个父母(2和3)和两个孩子(4和5),4个有一个父母(1)和5个有两个父母(1和3)。

假设1是选定的种子记录,下面的列表显示的状态,以及通过上述代码段循环产生的输出。在列表中,表示未查询其家人的记录1;并表示已查询其家庭的记录1。

 

可以看出,对于数据场景中的任何 R 记录,输出均达到线性插入顺序:

  • R的父母> R > R的孩子

可以证明,无论如何选择种子记录,都可以实现上述属性。

未经允许不得转载:数据库同步软件|Mysql数据同步软件|sqlserver数据库同步工具|异构同步 » 关系数据库中的数据复制

分享到:更多 ()

syncnavigator 8.6.2 企业版

联系我们联系我们