比较和对比度更改数据捕获和数据库更改通知

时间:2008-10-16 15:44:46

标签: oracle change-data-capture

Oracle有两种看似竞争的技术。 CDC和DCN。

每个人的优势是什么?

你什么时候使用一个而不是另一个?

2 个答案:

答案 0 :(得分:4)

通常,您将使用DCN通知客户端应用程序客户端应用程序需要清除/更新应用程序的缓存。您可以使用CDC进行ETL处理。

当您有一个OLTP应用程序需要立即通知数据库中的数据更改时,通常更可取DCN。由于此处的目标是最小化网络往返次数和数据库命中数,因此您通常希望应用程序将DCN用于主要是静态的查询。如果查询的很大一部分定期更改,您可能最好只是在设定频率上刷新应用程序的缓存,而不是经常运行查询以获取更改的数据(DCN不包含更改的数据,只包含行的ROWID (s)改变了)。如果应用程序出现故障,我相信DCN允许更改丢失。

如果您的DSS应用程序需要定期提取多个表中已更改的所有数据,则通常会优先使用CDC。 CDC可以保证订户已收到对基础表的每个更改,如果您尝试将更改复制到其他数据库,这些更改可能很重要。 CDC允许订户在方便时提取更改而不是尝试通知订户存在更改,因此如果您希望订户每小时或每天处理新数据而不是近乎实时地处理新数据,那么您肯定需要CDC 。 (注意:DCN也有保证交付模式,请参阅下面的评论。 - Mark Harrison)

答案 1 :(得分:1)

CDC似乎比DCN设置起来要复杂得多。

我的意思是设置DCN我在开始和结束DCN块中包装一个选择,然后编写一个要通过收集更改来调用的过程。就是这样。

CDC要求发布商和订阅者,无论如何,似乎更多的工作。