2008-11-14 142 views
1

有没有人有从一个DBMS迁移到另一个的经验?如果你这样做了,你为什么这样做?特征?成本?公司指令?从一个DBMS迁移到另一个

有时,我与DBA一起工作过,他们坚持不使用特定于DBMS的功能(例如,SQL Server中的CLR存储过程)。DBA的观点是,如果我们使用这些功能,它会使如果必须的话,切换到另一个DBMS会更困难。但到目前为止,我从未被要求切换。

回答

4

在我看来,它愚蠢的是不利用你使用的分贝的所有功能。无论您使用多少功能都会变得困难,更改DBMS将会很困难。系统之间存在细微差别(如某些记录日期和一些记录日期和时间),这将导致巨大的头痛改变。没有这样的东西只是切换到一个新的DBMS。

从业务角度来看,还有很多工作要做。分析新的dbs改变为。弄清楚改变dbs对新系统的影响。通过开发改变现有系统,测试变化等等。这个列表继续下去。如果在企业系统上进行这种转换,则需要几个月甚至几年的时间。我工作的最后一个地方不得不改变dbs,我们花了11个月的时间来完成这项工作,并花费了200万美元用于咨询顾问,硬件,软件和员工工资。这是一件大事。如果有人说不使用功能,因为有一天“可能”会发生,并且会更容易做到,很可能,这个人不在他们的摇杆中。与其他任何事情(最可能)相比,转换这些功能花费的额外时间和金钱是微不足道的。国际海事组织如果现在购买使用这些功能可以节省时间和金钱,那么这是最佳的行动方案。

我们这样做是因为我们在旧的dbms上运行的系统太大了。数据太多,我们需要更强大的功能。另外,它不再支持。

3

切换很多次。主要是因为“非自愿转换” - 旧产品不再被支持或不再适合。

  • DB2到Oracle。 Pre-UDB数据保存并移入Oracle。
  • MS访问Oracle。继续在Oracle表上使用Access前端。甲骨文向甲骨文提供的产品有:
  • 。 6至8,我想...

“你为什么这样做?没有功能。不是成本。在所有情况下,有些事情已经破裂。

  • 旧产品不再有效。操作系统升级或其他任何操作都会导致旧产品中断。
  • 旧产品没有扩展。

切换很少是您选择做的事情。当供应商停业时(Ingres曾经这样做过一次)或停止支持你的版本(微软经常这样做),这是强迫你的。

然后,当然,这是一场危机。由触发器和存储过程变化的技术复杂性所复杂化。如果只是数据,那不会是一场危机。转储到某种标准格式(例如CSV),重新加载,然后启动并运行。

更重要的是,更多的“东西”(存储过程,触发器等))在数据库中越多,你的应用程序软件就越容易变成一堆难以理解(难以维护)的问题。没有什么让人感到沮丧的是等待某个人查找存储过程名称。如果是VB代码,每个人都可以访问它。但是由于它在数据库中,它变得反常地不那么明显。代码是代码,应该远离数据。

有关此主题的更多信息,请参见Where to put your code - Database vs. Application?

2

我参与过几个项目,将数据从一个数据库迁移到另一个数据库。在任何情况下,都是正在迁移的数据 - 而不是RDMBS。如果应用程序正在工作,那么为了切换而切换数据库不会有任何压力。迁移的动力通常是因为旧系统的数据不是过时的,不兼容的,或者两者兼而有之,这也为切换RDBMS提供了机会。

最有可能的变化是将参考数据(员工,客户等)整合到现有的主数据库中(为了一致性和易用性),然后修改所有其他表,以便键指向新的参考数据。这需要在堆栈上下架构和相应的代码更改。这是数据迁移 - 不是数据库迁移。并且很有可能你会想利用这个机会来添加数据,或者标准化名称,或者(去) - 标准化表格等。

结果是这些项目几乎总是对数据,模式和代码,以及将T-SQL转换为PL-SQL所需的任何工作将只是该项目的一小部分。因此,如果您要为一个不错的RDBMS付费,请全部使用它。否则就像不使用新车的后备箱或手套箱,以便在购买新车时更换汽车更容易。

3

我在一家公司工作了很多年,其产品支持Oracle或SQL Server。我们在Erwin中维护模型,并从中生成模式脚本,触发器和Oracle包。这些包被用于使Oracle触发器与SQL Server类似地工作(具有逻辑“插入”和“删除”表)我们保存了两套存储过程脚本。

随着这个混乱,我建议你可以迁移大型项目,只要你能够成功地让你的数据层完全脱离任何逻辑代码。如果你能做到这一点,那么你可以实现任何数据库特性将加快数据层中的应用程序,而不会影响你的核心应用程序。

1

另一点(支持S.洛特)。根据您的开发环境,您的开发人员可能无法轻松开发甚至查看存储过程。将应用程序代码拆分为两套不同的开发工具和执行环境可能会变得复杂,并且可能会使找到技术熟练的员工变得更加困难。

我不认为这是针对存储过程的争论,但当决定应用程序的给定组件驻留在代码的哪个位置时,这当然需要考虑。

0

我们是通过HP3000迁移到Oracle的。它花费了我们2500万美元,还增加了损失2亿美元数据的成本,因为他们没有考虑到他们在做什么。我还发现很多地方只是把它看作是一个举动。他们稍后会找出其余的......。

相关问题