Oracle Streams 和变更数据捕获之间有什么区别?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/272779/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
What is the difference between Oracle Streams and Change Data Capture?
提问by
There are several similar Oracle technologies - Oracle Streams, Oracle Change Data Capture and Database Change Notification.
有几种类似的 Oracle 技术 - Oracle Streams、Oracle Change Data Capture 和 Database Change Notification。
What are the differences between these?
这些之间有什么区别?
Are they related to Oracle Advanced Queueing?
它们与 Oracle Advanced Queueing 相关吗?
采纳答案by Andrew not the Saint
Oracle CDC is all about capturing changes in DB tables and the changes are stored in special Oracle tables. There are two modes of CDC operation: asynchronous (based on Java) or synchronous (based on DB triggers, more performance overhead).
Oracle CDC 是关于捕获 DB 表中的更改,并且这些更改存储在特殊的 Oracle 表中。CDC操作有两种模式:异步(基于Java)或同步(基于DB触发器,性能开销更大)。
Oracle Streams sits on top of Oracle CDC and it's a full transport mechanism (over e.g. HTTP) for data synchronization between 2 servers. It's based on Oracle Advanced Queues technology and it's designed for high performance and reliability.
Oracle Streams 位于 Oracle CDC 之上,它是一种完整的传输机制(通过 HTTP 等),用于两台服务器之间的数据同步。它基于 Oracle Advanced Queues 技术,专为实现高性能和可靠性而设计。
Both Oracle CDC and Streams are generally used for data synchronization between Oracle DB servers... With Oracle CDC, you don't have to use Oracle Streams for, e.g. you could write your own data export routines which create flat files for the purpose of synchronization between 2 DB servers, whereas with Streams you must have a network link between the 2 servers.
Oracle CDC 和 Streams 通常用于 Oracle DB 服务器之间的数据同步......使用 Oracle CDC,您不必使用 Oracle Streams,例如您可以编写自己的数据导出例程,这些例程创建平面文件以用于2 个数据库服务器之间的同步,而对于 Streams,您必须在 2 个服务器之间建立网络链接。
Database Change Notification is something else again, it's not used for server-to-server synch but instead more for server notification of resultset changes to clients, mostly in the context of data caches on the client side.
数据库更改通知又是另一回事,它不用于服务器到服务器的同步,而是更多地用于向客户端发送结果集更改的服务器通知,主要是在客户端的数据缓存上下文中。
回答by agartzke
I would add that for synchronizing between systems, you can achieve asynchronous mode by combining Streams and the CDC publishing mechanism. If you choose not to use Streams for this purpose, you would end up using a synchronous mode (I think it's via triggers) putting a little extra overhead on each transaction.
我想补充一点,对于系统之间的同步,您可以通过结合 Streams 和 CDC 发布机制来实现异步模式。如果您选择不为此目的使用 Streams,您最终会使用同步模式(我认为是通过触发器),这会在每个事务上增加一些额外的开销。