2015-05-07 61 views
0

设置: 有一个TRANSPORT数据库和4个PRODUNIT数据库。所有这5个数据库都在不同的机器上,都是Oracle数据库。多个数据库的物化视图

要求:

  1. A被要求在运输分贝,这将检索来自表存在于所有的4个PRODUNIT数据库数据“统一视图”。因此,当在TRANSPORT数据库上查询(使用where子句)时,数据可能出现在4个PRODUNIT数据库中的任何一个数据库中。该查询将是'实时'种类,即它要求只要数据插入/更新任何4个PRODUNIT数据库的表,它是在运输分贝

我在网上搜索并结束了与materialized view立即可用。在我继续之前,我有以下担忧:

  1. “快速刷新提交”是否确保要求2?
  2. 单独的PRODUNIT数据库中的表将经常出现DML。我怀疑TRANSPORT数据库的性能影响 - 我正确吗?如果是,我该如何继续?

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

回答

0

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

我会从一个普通的视图开始,使用数据库链接从数据库中选择数据,但需要测试它以查看性能。

根据要求2,如果正常视图的性能很差,则提交刷新可能是最佳方法。

+0

你的意思是说'提交快速刷新'MV比普通视图快吗? –

+0

查询可能会更快,但如果来自正常视图的查询提供可接受的性能,那么我不会打扰MV – davegreen100

+0

您不能在跨数据库链接提交物化视图时进行刷新。 –

1

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

我会严重质疑在这种情况下希望做同步复制的智慧。如果可以,那么如果传输数据库关闭或网络连接不可用,则本地数据库将变得不可用。你会承担每个事务的两阶段提交的成本。 produnit数据库中的一个可以很容易地阻止在其他数据库上发生的事务。

实际上,在我遇到过的每一个实例中,最好使用异步复制服务,使transport数据库保持同步,例如在produnit数据库的几秒钟内。您可能希望查看GoldenGate或Streams进行异步复制,延迟时间相对较短。

+0

您可以详细说明如何“异步复制,使传输数据库保持同步,例如,produnit数据库的几秒钟内”?你是否打算用一些延迟来使用MV? –

+0

@KaliyugAntagonist - 您可以创建每隔几分钟刷新一次的物化视图。就像我在我的回答中所说的那样,你可能想看看GoldenGate或Streams。这些是Oracle堆栈中的技术,专为异步复制数据而设计,延迟时间比实例化视图的延迟时间短。物化视图更容易处理,但效率并不高 - 其他技术(Streams和GoldenGate)是更高效的架构,但它们通常需要更多的工作来设置。 –