代码之家  ›  专栏  ›  技术社区  ›  Gad

架构正在更改的应用程序的数据迁移过程?

  •  3
  • Gad  · 技术社区  · 15 年前

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

    新数据库和旧数据库都是Oracle数据库。

    2 回复  |  直到 9 年前
        1
  •  6
  •   MusiGenesis    15 年前

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

    如果是这样的话,那么您实际上会问两个不同的过程:数据库结构的迁移(经过一些修改),然后是数据本身的迁移。

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

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

        2
  •  2
  •   Justin Niessner    15 年前

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

    更优雅的解决方案包括安装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(提取、转换和加载)包。我从来没有亲自使用过它,但它也可能做你想做的。