Es gibt mehrere ähnliche Oracle-Technologien - Oracle Streams, Oracle Change Data Capture und Database Change Notification. Weißt du, was ist der Unterschied zwischen diesen? Sind sie verwandt oder Oracle Advanced Queuing?Was ist der Unterschied zwischen Oracle Streams und Change Data Capture?
Antwort
Bei Oracle CDC geht es nur darum, Änderungen in DB-Tabellen zu erfassen, und die Änderungen werden in speziellen Oracle-Tabellen gespeichert. Es gibt zwei Arten von CDC-Operationen: asynchron (basierend auf Java) oder synchron (basierend auf DB-Triggern, mehr Performance-Overhead).
Oracle Streams sitzt auf Oracle CDC und es ist ein vollständiger Transportmechanismus (über HTTP) für die Datensynchronisation zwischen 2 Servern. Es basiert auf der Oracle Advanced Queues-Technologie und ist auf hohe Leistung und Zuverlässigkeit ausgelegt.
Sowohl Oracle CDC als auch Streams werden im Allgemeinen für die Datensynchronisierung zwischen Oracle DB-Servern verwendet ... Mit Oracle CDC müssen Sie keine Oracle Streams für z. Sie könnten Ihre eigenen Datenexport-Routinen schreiben, die flache Dateien zum Zweck der Synchronisation zwischen 2 DB-Servern erstellen, während Sie bei Streams eine Netzwerkverbindung zwischen den 2 Servern haben müssen.
Datenbank Änderung Benachrichtigung ist wieder etwas anderes, es ist nicht für die Server-zu-Server-Synchronisation verwendet, sondern mehr für Server Benachrichtigung von Resultset Änderungen an Clients, vor allem im Rahmen der Daten-Caches auf der Client-Seite.
Ich würde hinzufügen, dass für die Synchronisierung zwischen Systemen, können Sie asynchronen Modus durch die Kombination von Streams und der CDC Publishing-Mechanismus erreichen. Wenn Sie sich dazu entschließen, keine Streams für diesen Zweck zu verwenden, würden Sie am Ende einen synchronen Modus verwenden (ich denke, dass es über Trigger erfolgt), wodurch für jede Transaktion ein zusätzlicher Aufwand entsteht.
Seien Sie vorsichtig mit dem Begriff "resultset", jeder glaubt, da Sie eine Abfrage verwenden, um anzuzeigen, welche Tabellen DCN aktiv sein soll, auf die nur Ergebnisse der Abfrage Benachrichtigung. Alles, was DCN interessiert, ist die FROM-Klausel. Alle Änderungen an einer Tabelle in der FROM verursachen eine Benachrichtigung. –
Hallo Andrew, hast du ein Beispiel für CDC gebunden mit Java im asynchronen Modus? Art eines Abonnenten in Java oder so implementiert. – user2427
Nach der http://docs.oracle.com/cd/E11882_01/server.112/e25554/cdc.htm, "Asynchronous Change Data Capture ist aufgebaut, und bietet eine relationale Schnittstelle zu Oracle Streams." Ich weiß nicht wie/ob das den Rest deiner Antwort beeinflusst, was richtig scheint. –