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