Oracle Streams 和变更数据捕获之间有什么区别?
有几种类似的 Oracle 技术 - Oracle Streams、Oracle 更改数据捕获和数据库更改通知。
它们之间有什么区别?
它们与 Oracle 高级队列相关吗?
There are several similar Oracle technologies - Oracle Streams, Oracle Change Data Capture and Database Change Notification.
What are the differences between these?
Are they related to Oracle Advanced Queueing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Oracle CDC 就是捕获数据库表中的更改,并将更改存储在特殊的 Oracle 表中。 CDC操作有两种模式:异步(基于Java)或同步(基于DB触发器,性能开销较多)。
Oracle Streams 位于 Oracle CDC 之上,它是一种用于 2 个服务器之间数据同步的完整传输机制(例如通过 HTTP)。 它基于 Oracle Advanced Queues 技术,专为高性能和可靠性而设计。
Oracle CDC 和 Streams 通常用于 Oracle DB 服务器之间的数据同步...使用 Oracle CDC,您不必使用 Oracle Streams,例如,您可以编写自己的数据导出例程,该例程创建平面文件以用于以下目的2 个数据库服务器之间的同步,而对于 Streams,您必须在 2 个服务器之间具有网络链接。
数据库更改通知又是另一回事,它不用于服务器到服务器的同步,而是更多地用于向客户端发送结果集更改的服务器通知,主要是在客户端数据缓存的上下文中。
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 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.
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.
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.
我补充一下,系统间的同步,可以通过Streams和CDC发布机制的结合来实现异步模式。 如果您选择不使用 Streams 来实现此目的,您最终将使用同步模式(我认为是通过触发器),从而为每个事务带来一些额外的开销。
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.