合并数据库的缺点?

时间:2010-08-25 12:54:11

标签: oracle database-design

在一个拥有两个应用程序且每个都有自己的Oracle数据库实例的组织中,将两个数据库合并为一个具有两个模式的数据库有什么缺点?

备份和复制数据库可能更大更慢。还有什么?

一些背景知识:

这两个数据库是各自数据的“黄金来源”。每个都对组织的运行至关重要,每个实际上都由几个应用程序,工具和报告使用(但每个数据库主要由一个应用程序“拥有”)。需要在数据库之间连接数据,将一个实体与另一个实体相关联,这种需求经常出现。因此,有两个DB链接连接两个和一些跨数据库物化视图以帮助提高性能。正在努力减少数据重复,并且正在讨论这些具体化的观点。组织中的一些人希望逐步淘汰数据库链接和物化视图,并引入更多Web服务以使数据跨应用程序可用。我担心的是,有太多情况需要在两个数据库之间进行复杂的数据连接,因此暴露数据的服务将无法执行。减少数据库链接和物化视图的另一种方法是将模式合并到一个数据库中,但我想确保我不会忘记该方法的任何关键缺点。

4 个答案:

答案 0 :(得分:1)

可能与许可证成本有关 - 扩展与扩展。

答案 1 :(得分:1)

我最担心的是,您需要重写所有代码以考虑新数据库和模式。或者至少看一下。这个courl引入了新的bug。我不知道Oracle如何处理对不同数据库的引用,所以我将使用SQL Server语法的一个例子。如果我在不同数据库中的同一台服务器上加入两个表,我的选择将是这样的:

选择a.field1,b.field2 FROM database1.dbo.table1 a JOIN database2.dbo.table2 b     在a.myid = b.myFK

要获得新的综合想法,您可以写一下:

选择a.field1,b.field2 FROM schema1.table1 a 加入schema2.table2 b     在a.myid = b.myFK

您需要特别注意现在两个数据库中具有相同名称的任何表,这可能会导致一些偷偷摸摸的错误。

请注意,这些并非难以更改,但是必须检查所有攻击数据库的SQL,看它是否可以正常工作或调整。

我不确定是否只是将它们放在同一个数据库中也可以。您可能需要合并一些表以避免跨应用程序的重复。 (在这种情况下,添加字段以引用人们习惯通过id查找的旧id号码,例如可能出现在旧文书工作中的person_id,因此可以对它们进行研究)这是一个相当重要的重写,所有随之而来的可能性由于新的错误导致更糟糕的事情。

如果你走这条路,我强烈建议你在决定如何设计之前阅读一本关于重构数据库的书。

答案 2 :(得分:1)

在单个统一数据库中,从DBA的角度来看,您将失去一些灵活性:

  • 数据库显然只能有一个版本(例如10.2.0.5),这意味着升级和补丁会影响所有模式 - 如果多个供应商应用程序需求不匹配,这可能是一件坏事。
  • 同样,对于单个数据库,某些管理任务(将数据库A还原到时间点t)可能会更复杂。

总的来说,您将拥有更少的管理任务(单个备份,单个修补......)但每个任务都将更加重要,因为它们将产生全局效应。


在开发方面,要注意命名空间冲突:某些功能在单个数据库中是全局的,例如:

  • 目录,
  • 公共同义词,
  • 数据库链接
  • 架构

这意味着如果要整合两个具有同名的公共同义词的数据库,指向两个不同的东西,您将需要做一些工作。

答案 3 :(得分:1)

仅通过提供的信息很难说,db world中的大数据将是100gb或更多,因此2 dbs将是200GB。如果两个db都不大于100GB,那么大小不应该是决定中的一个重要因素,复制和同步只能在更改上进行,备份不应该有很大的区别(这又取决于具体情况,例如备份完成时或如果可以停机或在非高峰时段完成备份) 除此之外的其他因素是: 在dbo中命名冲突,例如键,外键名,表名等。一些表的重命名,也存储过程名称。