在一个拥有两个应用程序且每个都有自己的Oracle数据库实例的组织中,将两个数据库合并为一个具有两个模式的数据库有什么缺点?
备份和复制数据库可能更大更慢。还有什么?
一些背景知识:
这两个数据库是各自数据的“黄金来源”。每个都对组织的运行至关重要,每个实际上都由几个应用程序,工具和报告使用(但每个数据库主要由一个应用程序“拥有”)。需要在数据库之间连接数据,将一个实体与另一个实体相关联,这种需求经常出现。因此,有两个DB链接连接两个和一些跨数据库物化视图以帮助提高性能。正在努力减少数据重复,并且正在讨论这些具体化的观点。组织中的一些人希望逐步淘汰数据库链接和物化视图,并引入更多Web服务以使数据跨应用程序可用。我担心的是,有太多情况需要在两个数据库之间进行复杂的数据连接,因此暴露数据的服务将无法执行。减少数据库链接和物化视图的另一种方法是将模式合并到一个数据库中,但我想确保我不会忘记该方法的任何关键缺点。
答案 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的角度来看,您将失去一些灵活性:
总的来说,您将拥有更少的管理任务(单个备份,单个修补......)但每个任务都将更加重要,因为它们将产生全局效应。
在开发方面,要注意命名空间冲突:某些功能在单个数据库中是全局的,例如:
这意味着如果要整合两个具有同名的公共同义词的数据库,指向两个不同的东西,您将需要做一些工作。
答案 3 :(得分:1)