多个数据库的物化视图

时间:2015-05-07 13:05:16

标签: oracle view materialized-views

设置: 有一个TRANSPORT数据库和4个PRODUNIT数据库。所有这5个DB都在不同的机器上,并且是Oracle数据库。

要求:

  1. TRANSPORT db中需要“UNIFIED视图”,它将从所有4个PRODUNIT数据库中的表中检索数据。因此,当对TRANSPORT数据库(带有where子句)进行查询时,数据可能出现在4个PRODUNIT数据库中的任何一个中
  2. 查询将是“实时”类型,即它要求只要在4个PRODUNIT数据库中的任何一个数据库的表中插入/更新数据,它就会立即立即在TRANSPORT数据库中提供
  3. 我在网上搜索并最终得到了materialized view。在我继续之前,我有以下问题:

    1. “提交时快速刷新”是否确保要求2?
    2. 各个PRODUNIT数据库中的表将经历频繁的DML。我怀疑对TRANSPORT db的性能影响 - 我是否正确?如果是,我该怎么办?
    3. 我很想知道是否有比物化视图更好的方法!

2 个答案:

答案 0 :(得分:1)

在提交时刷新的物化视图不能引用远程对象,因此它对您没有多大好处。如果您可以在提交时刷新,则可以同步维护传输数据库中的数据。但你不能。

在这种情况下,我会严肃质疑想要进行同步复制的智慧。如果可以,那么如果传输数据库关闭或网络连接不可用,则本地数据库将变得不可用。您需要为每笔交易承担两阶段提交的费用。并且其中一个produnit数据库很容易阻止在其他数据库上发生的事务。

在我遇到过的几乎所有情况中,您可以更好地使用异步复制,使transport数据库同步到{{1}的几秒内数据库。您可能希望以相对较短的延迟调查GoldenGate或Streams进行异步复制。

答案 1 :(得分:0)

您是否需要MV将取决于您的数据库与相关数据量之间的性能。

我将从普通视图开始,使用数据库链接从数据库中选择数据,但是需要对此进行测试才能看到性能。

鉴于要求2,如果普通视图上的性能较差,则提交时刷新可能是最好的方法。