【问题标题】:Data migration process for an application whose architecture is changing?架构正在发生变化的应用程序的数据迁移过程?
【发布时间】:2009-09-18 12:57:44
【问题描述】:

在使用一个应用程序超过 10 年之后,并且一直受到其缺乏可扩展性的限制,我们决定从头开始完全重写它。因为新架构不同于旧应用程序,所以数据库也不同。问题来了:是否有任何工业流程可以将数据从以前的数据库迁移到新的数据库?有些表是相似的,有些则不是。总的来说,我们需要一个流程来帮助我们确保在迁移过程中不会丢失任何数据或逻辑约束。

PS:新旧数据库都是Oracle数据库。

【问题讨论】:

    标签: database oracle process migration


    【解决方案1】:

    虽然您没有在问题中指定这一点,但我假设您将开发新版本的应用程序/数据库,然后在某个切换点您需要从旧版本迁移所有实时数据数据库到您的新数据库中。

    如果是这种情况,那么您实际上是在询问两个不同的过程:数据库结构的迁移(进行一些修改),然后是数据本身的迁移。

    对于第一个过程,最好的工具是你,开发者(我不是说你是一个“工具”——你知道我的意思)。您可以引入旧数据库的结构,然后根据新版本的需要对其进行更改;然而,这种方法通常会留下太多的旧结构。我认为最好利用这种情况,从头开始重建数据库,将原始数据库用作一般参考。

    对于第二个过程,我会将数据迁移视为需要单独编写和测试的应用程序的单独任务。此应用程序可以是一组脚本或已编译的应用程序或任何对您来说最方便的东西。因为您的新旧数据库不会具有相同的结构(实际上可能非常不同),所以没有商业工具可以自动为您处理此任务。通过将此视为您自己编写的独特应用程序,您可以在“上线”日期之前多次测试数据转换过程。

    【讨论】:

    • +1 好答案!非常感谢,很清楚。你知道我可以在哪里找到执行第二个过程的最佳实践/教程/文章吗?
    • @m_oLogin:有很多不同的方法可以做到这一点,很难为您指明一个方向。我确信 Oracle 本身具有在表定义不完全匹配时将数据从表复制到表的工具,而贾斯汀提到的 SQL Server Management Studio 中的 SSIS 工具可以做到这一点(尽管使用它似乎有点错误)纯粹的 Oracle 到 Oracle 工作)。您还可以使用 C# 编写一个 ADO.Net 应用程序,该应用程序使用数据读取器和数据写入器从一个表复制到另一个表。
    • 由于它是一个关系型数据库,因此复制表的顺序显然很重要,因为必须先准备好外键值,然后才能在相关表中写入外键。解决此问题的一种方法是关闭所有键约束,以任何旧顺序复制所有表,然后重新打开所有约束。
    • 我会将其标记为正确答案,因为它为我指明了最佳方向。
    【解决方案2】:

    我听说过几种不同的方法来解决此类问题。我见过的最简单的解决方案是使用 Microsoft Access 数据库并使用 ODBC 连接来连接新旧 Oracle 数据库。然后,您可以根据需要使用 Access 迁移和转换数据。

    更优雅的解决方案包括安装 Microsoft SQL Server 开发工具。您可以使用 Business Intelligence Development Studio 创建具有两个 Oracle 端点的 SSIS 包。 SSIS 可以处理在数据库之间转换数据的繁重工作,您可以在本地运行包,因此您不必在任何地方运行 SQL Server 实例。

    有一个 SSIS 教程系列在:

    http://www.developerdotstar.com/community/node/364

    您可能还想查看Oracle Warehouse Builder (OWB)。这个名字有点混乱,但它是 Oracle 的 ETL(提取、转换和加载)包。我从未亲自使用过它,但它可能也能满足您的需求。

    【讨论】:

    • 您有关于如何使用 Development Studio 的好文章或教程吗?
    • 我不确定您为什么要使用 MS Access 将 Oracle 数据转换为 Oracle 数据。在 Oracle 数据库中使用 SQL 和 PLSQL 完全可以实现您想做的任何事情。
    • Access 只是人们通常在他们的机器上已有的简单解决方案。这显然不是最好的或建议的解决方案......但我肯定听说过它正在完成。个人...不会自己做。
    • @Justin:我会小心 - 以非居高临下的方式提及 Access 往往会自动获得轻蔑的反对票。不过,公平地说,Access 是一种有效的工具,可以达到预期目的,但迁移 Oracle 数据库绝对不是其中之一。
    • @MusiGenesis:我绝对希望通过提出更好的建议来避免反弹。我猜是生活和学习。
    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2011-03-11
    • 2021-06-11
    相关资源
    最近更新 更多