Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 比较和对比更改数据捕获和数据库更改通知_Oracle_Change Data Capture - Fatal编程技术网

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

Oracle 比较和对比更改数据捕获和数据库更改通知,oracle,change-data-capture,Oracle,Change Data Capture,甲骨文有两种看似相互竞争的技术。CDC和DCN 它们各自的优点是什么 什么时候使用一个而不是另一个?通常,您会使用DCN通知客户端应用程序客户端应用程序需要清除/更新应用程序的缓存。您可以使用CDC进行ETL处理 当您有一个OLTP应用程序需要立即通知数据库中的数据更改时,通常最好使用DCN。因为这里的目标是最小化网络往返次数和数据库命中次数,所以您通常希望应用程序使用DCN进行查询,这些查询大多是静态的。如果查询的很大一部分是定期更改的,那么最好只按设置的频率刷新应用程序的缓存,而不是不断运行

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

它们各自的优点是什么


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

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

当您有一个OLTP应用程序需要立即通知数据库中的数据更改时,通常最好使用DCN。因为这里的目标是最小化网络往返次数和数据库命中次数,所以您通常希望应用程序使用DCN进行查询,这些查询大多是静态的。如果查询的很大一部分是定期更改的,那么最好只按设置的频率刷新应用程序的缓存,而不是不断运行查询以获取更改的数据(DCN不包含更改的数据,只包含更改的行的ROWID)。如果应用程序宕机,我相信DCN允许更改丢失


当您有一个DSS应用程序需要周期性地提取许多表中更改的所有数据时,CDC通常更可取。CDC可以保证订阅服务器已收到对基础表的所有更改,如果您试图将更改复制到其他数据库,这一点非常重要。CDC允许订阅者在方便的时候提取更改,而不是试图通知订阅者有更改,因此如果您希望订阅者每小时或每天处理新数据,而不是几乎实时处理,您肯定希望CDC。(注意:DCN还有一种保证交付模式,请参见下面的评论。--马克·哈里森)

CDC的设置似乎比DCN复杂得多

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


CDC需要出版商和订阅者,不管怎样,似乎需要更多的工作。

DCN可以设置为保证交付的模式。基本上是磁盘和内存。