使用通用语言执行数据迁移是一个好主意吗?

时间:2014-07-17 06:24:29

标签: data-migration

迁移有两种。一种是在开发期间更新数据库模式。另一种是将现有数据迁移到新系统(具有不同的模式)。

前一种情况有很多可用的工具,例如Flyway,Liqubase。但是,我不知道后一种用途的工具。

我们目前正在使用PL/SQL进行迁移。但是,并非所有Java开发人员都具有DBA背景。我想知道是否有人使用通用语言(Java,Scala,C#等)和数据库访问库(Hibernate,NHibernate等)来执行迁移。

1 个答案:

答案 0 :(得分:0)

我不确定问题是什么,但如果我理解正确的话; 当然,您可以使用(ny)语言开发应用程序,该语言从数据源读取数据并将其放入数据目标中。

数据源之间的数据迁移不一定只是SQL到SQL(如果源和目标是关系数据库)

事实上,如果存在需要在各种结构之间或各种数据源之间处理或转换数据的逻辑,则在源/目标之间存在应用程序通常是有意义的。 例如,如果将数据从一个ERP系统迁移到电子商务系统(仅作为示例)。

通过应用程序执行此操作的另一个好处是,您通常可以包含更多用于报告和错误处理的工具/功能 特别是如果集成/迁移应该经常运行,那么验证数据移动的这种错误处理/报告是有益的。

此外,如果数据源和数据目标位于不同区域/不同服务器上,则可以更轻松地通过应用程序进行迁移,以避免服务器之间不必要地打开并将它们链接在一起。

基本上 - 这样的应用程序(Java,C#......任何东西)将从数据源读取数据,将数据转换为目标的数据结构,然后将其存储在数据目标中。

使应用程序执行操作,只是开发人员工具箱中的另一个工具。

但是,如果数据迁移基本上是数据从一个结构到另一个结构的1:1移动,并且不存在转换;那么情况会更快/更容易直接在SQL中处理或使用数据同步程序 即使不是“DBA背景”(没有很多开发人员具有DBA背景,但这不应该阻止人们学习SQL,因为它也只是另一种语言。你不需要成为DBA就能有效地编写SQL)

所以 - 总之。是的,你可以写一个应用程序,是的,这可能是一个好主意。但是,作为我们领域内的几乎所有内容,那么这是一个逐案/逐个情况的评估,无论它是否是“更好”的方式。