应用程序之间数据转换的最佳实践是什么?

时间:2012-01-15 22:44:11

标签: sql data-migration database-migration

我想知道这对于stackoverflow来说是否是一个过于主观的问题,但不管怎么说还是不好意思。

应用程序之间是否存在数据迁移的通用/最佳实践?假设我有一个用Java / J2EE编写的Application A,它连接到一个用Ruby / Rails编写并连接到MySQL数据库的PostgreSQL数据库和应用程序B.

我想将数据从应用程序A迁移到应用程序B,表结构,因此A的数据模型与B完全不同。所以我想从A中提取信息,更改其结构并将其插入到B. / p>

此外,我在应用程序B中存在信息,该信息与来自应用程序A的信息有关,例如基于两个应用程序中常见的ID

我尝试编写一些花哨的SQL脚本,但这种情况无处可去。

上次我遇到这样的项目时,我只是编写了大量的代码来处理迁移。我想知道这可能是最好的做法吗?我认为这是开发人员经常做的工作。也许有工具或框架可供使用?

2 个答案:

答案 0 :(得分:0)

可能不是一个单一的最佳实践,但是一旦你选择了一种方法,一系列最佳实践。

一种策略是将数据放在目标平台中的相同模型(或非常接近)中,然后在目标平台内进行转换。

例如,如果目标是SQL Server,我会在目标服务器上创建另一个数据库,从表到表的数据类型是直接的(数据类型是你在那里注意的主要内容),只是对database2使用查询.user.table_names以填充目标数据模型。

这消除了您可能正在使用的任何ETL工具选择中异构源/目标的问题,并允许您在数据库2上创建一些可能是转换最佳的附加索引。

此外,您的转换将采用直接SQL,允许同时加入源和目标,而不会产生任何服务器间延迟或带宽。

如果你的表中有二进制数据或类似的东西,显然事情变得复杂得多。

答案 1 :(得分:0)

广泛的问题,广泛的答案?

  1. 在DatabaseB中重新创建数据模型,不需要自动增量等
  2. 通过
  3. 复制所有适当的数据
  4. 处理,操纵等等,让你内心深处
  5. 通过允许步骤1基于原始和副本的当前内容,扩展到自动化流程。