Oracle 有两种看似相互竞争的技术。CDC 和 DCN。
各自的强项是什么?
你什么时候用一个而不用另一个?
通常,您将使用 DCN 通知客户端应用程序客户端应用程序需要清除/更新应用程序的缓存。您将使用 CDC 进行 ETL 处理。
当您的 OLTP 应用程序需要立即通知数据库中的数据更改时,通常首选 DCN。由于这里的目标是最大限度地减少网络往返次数和数据库命中次数,因此您通常希望应用程序使用 DCN 进行大部分静态查询。如果大部分查询定期更改,您最好只以设定的频率刷新应用程序的缓存,而不是不断运行查询以获取更改的数据(DCN 不包含更改的数据,仅包含行的 ROWID (s) 发生了变化)。如果应用程序出现故障,我相信 DCN 允许丢失更改。
当您有一个 DSS 应用程序需要定期拉取在多个表中更改的所有数据时,CDC 通常更可取。CDC 可以保证订阅者已收到对基础表的所有更改,如果您尝试将更改复制到不同的数据库,这可能很重要。CDC 允许订阅者在方便时提取更改,而不是试图通知订阅者有更改,因此如果您希望订阅者每小时或每天而不是近乎实时地处理新数据,您肯定需要 CDC . (注意:DCN 也有保证交付模式,请参阅下面的评论。--Mark Harrison)
CDC 的设置似乎比 DCN 复杂得多。
我的意思是设置 DCN,我在开始和结束 DCN 块中包装一个选择,然后编写一个过程以调用一系列更改。就是这样。
CDC 需要发布者和订阅者,无论如何,这似乎需要更多的工作。