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

5 oracle change-data-capture

甲骨文拥有两种看似相互竞争的技术。CDC 和 DCN。

各自的优势是什么?

什么时候你会使用其中一种而不使用另一种?

Jus*_*ave 4

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

当您的 OLTP 应用程序需要立即收到有关数据库中的数据更改的通知时,DCN 通常更适合。由于此处的目标是最大限度地减少网络往返次数和数据库命中次数,因此您通常希望应用程序使用 DCN 来进行大部分静态的查询。如果查询的很大一部分定期更改,则最好按设定的频率刷新应用程序的缓存,而不是不断运行查询来获取更改的数据(DCN 不包含更改的数据,只包含行的 ROWID) (s) 已更改)。如果应用程序出现故障,我相信 DCN 允许更改丢失。

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