代码之家  ›  专栏  ›  技术社区  ›  jlpp

整合数据库的缺点?

  •  2
  • jlpp  · 技术社区  · 14 年前

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

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

    一些背景:

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

    4 回复  |  直到 14 年前
        1
  •  1
  •   Vincent Malgrat    14 年前

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

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


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

    • 目录,
    • 公共同义词,
    • 数据库链接
    • 模式

    这意味着,如果要合并两个具有指向两个不同事物的同名公共同义词的数据库,则需要做一些工作。

        2
  •  1
  •   user151323 user151323    14 年前

        3
  •  1
  •   HLGEM    14 年前

    我最担心的是,所有代码都需要重写,以适应新的数据库和模式。或者至少看一眼。这会引入新的错误。我不知道Oracle如何处理对不同数据库的引用,所以我将使用一个示例来说明使用sqlserver语法的含义。如果我要连接到同一服务器上不同数据库中的两个表,我的选择将如下所示:

    选择a.field1、b.field2 从数据库1。dbo.1表一 加入数据库2。dbo.2表b 在a.myid=b.myFK上

    选择a.field1、b.field2 来自schema1.1 a 连接schema2.table2 b 在a.myid=b.myFK上

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

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

        4
  •  1
  •   codewrath    14 年前

    仅凭提供的信息很难判断,数据库世界的大容量将是100gb或更大,因此2个数据库将是200GB。如果两个数据库都不大于100GB,那么大小不应该是决定的一个重要因素,复制和同步只能在更改时进行,备份不应该有太大的区别(这同样取决于具体情况,例如何时进行备份,是否可能停机,或者备份是在非高峰时间进行的) dbo中的命名冲突,如键、外键名、表名等。一些表的重命名也存储过程名。