【问题标题】:materialized view over multiple databases多个数据库的物化视图
【发布时间】:2015-07-18 01:52:02
【问题描述】:

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

要求:

  1. TRANSPORT db 中需要一个“UNIFIED 视图”,它将从所有 4 个 PRODUNIT 数据库中存在的表中检索数据。因此,当对 TRANSPORT 数据库(带有 where 子句)进行查询时,数据可能存在于 4 个 PRODUNIT 数据库中的任何一个中
  2. 查询将是“实时”的,即它要求在 4 个 PRODUNIT 数据库中的任何一个的表中插入/更新数据后,它立即在 TRANSPORT db 中可用强>

我在网上搜索并最终得到materialized view。在继续之前,我有以下顾虑:

  1. “提交时快速刷新”能否确保要求 2?
  2. 各个 PRODUNIT 数据库中的表会频繁出现 DML。我怀疑对 TRANSPORT db 的性能影响 - 我说得对吗?如果是,我该如何进行?

我想知道是否有比物化视图更好的方法!

【问题讨论】:

    标签: oracle view materialized-views


    【解决方案1】:

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

    我会严重质疑在这种情况下想要进行同步复制是否明智。如果可以的话,如果传输数据库关闭或网络连接不可用,本地数据库将变得不可用。您将承担每笔事务的两阶段提交的成本。 produnit 数据库之一很容易阻止其他数据库上发生的事务。

    在我遇到的几乎所有实例中,最好使用异步复制来为您提供更好的服务,该复制可以使transport 数据库与produnit 数据库的同步时间保持在几秒钟之内。您可能希望研究 GoldenGate 或 Streams 以实现延迟相对较短的异步复制。

    【讨论】:

    • 您能否详细说明如何“保持传输数据库同步到产品数据库的几秒钟内的异步复制”?您是否建议延迟使用 MV?
    • @KaliyugAntagonist - 您可以创建每隔几分钟刷新一次的物化视图。不过,就像我在回答中所说的那样,您可能想要研究 GoldenGate 或 Streams。这些是 Oracle 堆栈中的技术,旨在以比物化视图更少的延迟异步复制数据。物化视图更易于使用,但效率并不高 - 其他技术(Streams 和 GoldenGate)是更高效的架构,但通常需要更多的工作来设置。
    【解决方案2】:

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

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

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

    【讨论】:

    • 你的意思是“提交时快速刷新”MV 比普通视图快吗?
    • 查询可能会更快,但如果从普通视图查询提供可接受的性能,那么我不会打扰 MV
    • 您无法刷新跨数据库链接的提交物化视图。
    猜你喜欢
    • 2015-07-31
    • 2021-04-17
    • 2018-03-20
    • 2012-10-11
    • 2012-05-23
    • 2011-10-26
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多