Da die modernen Datensätze immer größer und die Anwendungen immer zeitkritischer werden, kann herkömmliches ETL nur schwer mithalten. Wie aber können sich Datenbanken an Echtzeitanforderungen anpassen?
Jetzt betritt Change Data Capture (CDC) die Bühne. Mit CDC werden die Daten in kleinen Echtzeitschritten übertragen und nicht in Bulk Loads oder Batch Windows. Mit dieser Funktion hilft Ihnen CDC, schnellere und genauere Entscheidungen zu treffen, da die Daten in Echtzeit übertragen werden.
In diesem Kurzleitfaden werden wir die Grundlagen von CDC, ihre Vorteile und einige gängige Methoden für die Implementierung in relationalen Datenbanken erläutern.
Was ist Change Data Capture (CDC)?
Change Data Capture (CDC) wird üblicherweise für die Replikation von Datenbanken und die Verarbeitung von Daten aus verschiedenen Datenquellen, wie SaaS-Anwendungen oder anderen Systemen, die nur über APIs zugänglich sind, verwendet.
Es gibt zwei Hauptgründe dafür, dass CDC immer beliebter wird:
- CDC treibt leistungsstarke datengetriebene Anwendungsfälle als eine Art von Datenreplikation voran. Die Datenreplikation ermöglicht einen konsolidierten Zugriff auf Betriebsdaten für Echtzeit-Analysen, Daten-Streaming und Machine Learning.
- CDC ermöglicht die Übertragung von Daten in Echtzeit, sobald sich Änderungen ergeben. Das macht es für Unternehmen, die kritische Systeme rund um die Uhr betreiben und keine Zeit für Batch-Fenster haben, von unschätzbarem Wert, insbesondere wenn die Auswirkungen auf die Datenbankverarbeitung den primären Geschäftsprozess direkt beeinträchtigen. Da kritische Systeme die wichtigsten Daten für die Entscheidungsfindung enthalten, ist ein Echtzeitzugriff auf diese Daten erforderlich, um wettbewerbsfähiger zu sein.
ETL und Change Data Capture
CDC mag neuartig klingen, ist aber eigentlich nur eine Verbesserung des bekannten ETL-Prozesses (Extraktion, Transformation, Laden), der zum Laden von Daten in ein Data Warehouse oder einen Data Lake verwendet wird.
Gehen wir es durch und sehen wir uns an, wie CDC in den einzelnen Phasen des ETL-Prozesses aussieht.
Extraktion
Während der Extraktionsphase extrahiert CDC Daten in Echtzeit (oder nahezu in Echtzeit) und liefert einen kontinuierlichen Strom von geänderten Daten (Change Data).
Traditionell wird dieser Prozess in Batches durchgeführt, wobei eine einzige Datenbankabfrage eine große Menge an Daten in Massen extrahiert. Dies ist zwar durchaus sinnvoll, wird aber schnell ineffizient, da die Quelldatenbanken ständig aktualisiert werden.
Da jedes Mal eine Replik der Quelltabellen aktualisiert werden muss, kann es sein, dass die Zieltabelle nicht genau den aktuellen Stand der Quellanwendung widerspiegelt. CDC umgeht dieses Problem, indem es einen Datenstrom in Echtzeit aufrechterhält.
Transformation
CDC bietet auch neue Effizienzgewinne in der Transformationsphase.
Traditionell müssen ganze Datensätze vor dem Laden mit Hilfe von ETL-Tools transformiert werden, um der Struktur und dem Format der Zieltabelle oder des Repositorys zu entsprechen. Dies trifft zwar auch auf CDC zu, aber es wird nicht versucht, große Datenmengen auf einmal zu transformieren.
Stattdessen werden die Daten kontinuierlich geladen, wenn sich die Quelle ändert, und dann in das Zieldaten-Repository transformiert. Angesichts der ständig wachsenden Datenmengen ist dieser Ansatz nicht nur effizienter, sondern auch notwendig, um mit der Entwicklung Schritt zu halten.
Laden
Wie Sie dem Abschnitt „Transformation“ entnommen haben, erfolgen Laden und Transformation bei der CDC fast gleichzeitig. Wenn überhaupt, erfolgt das Laden vor der Transformation, da die meisten cloudbasierten Zielspeicher (z. B. Data Warehouse, Data Lake usw.) die Transformation übernehmen.
Vorteile von Change Data Capture
Die Einbindung von CDC in Ihre Datenintegrationen bietet eine Reihe von einzigartigen Vorteilen – nicht nur für ETL. Generell ermöglichen die Echtzeitoperationen von CDC es Ihnen und Ihrem Unternehmen, Daten schneller als je zuvor zu integrieren, zu analysieren und zu nutzen.
Im Folgenden finden Sie einige Möglichkeiten, wie die Effizienz von CDC Ihre Datenintegration unterstützen kann.
Echtzeit-Operationen (d. h. kein Massenladen mehr)
Es gibt keine Batch-Fenster und kein Bulk-Loading mehr, ETL erfolgt in Echtzeit und mit besserer Kommunikation zwischen Daten-Repositories und Quellen. Dadurch werden auch die Auswirkungen auf die Quellen-Extracts verringert, die nicht mehr auf einmal aktualisiert werden müssen.
Geringere Belastung der Systemressourcen
Das Hauptprinzip von CDC besteht darin, dass die Daten in kleinen Schritten und nicht in großen Mengen übertragen werden. Dadurch kann es in Echtzeit arbeiten, und die Auswirkungen auf die Systemressourcen, die andernfalls während des Massenladens übermäßig beansprucht würden, werden erheblich reduziert.
Schnellere Datenbankmigrationen ohne Ausfallzeiten
Die Fähigkeit von CDC, Daten schnell und effizient zu verschieben, ermöglicht auch Datenbankmigrationen in Echtzeit, ohne dass es zu Ausfallzeiten kommt. Dies ermöglicht auch Echtzeit-Analysen, Synchronisierung und andere Anwendungen über verteilte Systeme hinweg.
Synchronisierung über mehrere Datensysteme hinweg
Darüber hinaus ermöglicht der Echtzeit-Datentransfer von CDC auch die Synchronisierung mehrerer Datensysteme, unabhängig von deren Standort. Dies ist vor allem für zeitkritische Anwendungen und Umgebungen ein unschätzbarer Vorteil.
Methoden von Change Data Capture
Es gibt viele verschiedene Methoden zur Implementierung von Change Data Capture in verschiedenen Arten von Datenbanken. Der Einfachheit halber konzentrieren wir uns auf relationale Datenbanken, die in der Regel für die operative Datenverarbeitung verwendet werden.
Es gibt mehrere Arten von Change Data Capture, die für die Datenverarbeitung aus einer Datenbank verwendet werden können. Dazu gehören die log-based CDC, die trigger-based CDC, die auf Zeitstempeln basierende CDC und die differenzbasiertes CDC.
Log-based Change Data Capture
Die meisten Datenbanken, die für die Online-Transaktionsverarbeitung (OLTP) entwickelt wurden, verwenden ein Transaktionsprotokoll, um Änderungen aufzuzeichnen. Im Falle eines System- oder Datenbankabsturzes ermöglicht das Transaktionsprotokoll eine verlustfreie Wiederherstellung der Datenbank. Grundsätzlich können alle festgeschriebenen und wiederherstellbaren Änderungen in den Transaktionsprotokollen der Datenbank gefunden werden.
Ein log -based Erfassungsmechanismus analysiert die Änderungen aus dem Transaktionsprotokoll, asynchron zu den Transaktionen, die die Änderungen einreichen. Einige Datenbanktechnologien bieten eine API für log-based CDC. Bei anderen ist das nicht der Fall, und es ist tiefgreifendes Fachwissen erforderlich, um Änderungen vorzunehmen.
Nur wenige Anbieter, darunter Fivetran, bieten log-based CDC über so genannte binäre Log-Reader an. Ein binärer Protokollleser analysiert das Transaktionsprotokoll direkt, ohne API-Zwischenschichten, die die Erfassung von geänderten Daten verlangsamen oder einschränken könnten.
Binäre Protokollleser haben auch nur minimale Auswirkungen auf die Datenbankverarbeitung und bieten die größte Flexibilität bei den Einsatzoptionen. Das Lesen des Binärprotokolls kann beispielsweise auf einem Standby-System oder auf der Grundlage von Sicherungskopien des Protokolls durchgeführt werden.
Einige Anwendungsfälle der Datenreplikation erfordern transaktionale Konsistenz in Übereinstimmung mit den Tabellen der Datenquelle. Die log-based CDC ermöglicht dies standardmäßig, da die Transaktionsgrenzen und die Übertragungsreihenfolge im Transaktionsprotokoll enthalten sind.
Außerdem können Sie mit der log-based CDC in die Vergangenheit zurückgehen und historische Änderungen abrufen.
- Gut geeignet für: Ihre geschäftskritischsten und am stärksten ausgelasteten Datenbanken, die sich eine Verlangsamung der Datenbankverarbeitung nicht leisten können. Dies sind die Systeme mit den wichtigsten Datensätzen, die Sie in analytische Anwendungsfälle einbeziehen möchten. Die log-based CDC verarbeitet die größten Mengen an Änderungsdaten in Echtzeit.
- Wann sind andere Arten von CDC in Betracht zu ziehen? Einige Datenbanktechnologien oder -bereitstellungen, wie z. B. in der Cloud bereitgestellte Datenbanken oder Anwendungen, die als gehostete Lösung oder Appliance bereitgestellt werden, lassen ein log-based CDC einfach nicht zu.
Trigger-based Change Data Capture
Die trigger-based CDC ist ein Ansatz zur Aufzeichnung von Veränderungen, sobald sie eintreten. Jeder Einfüge-, Lösch- und Aktualisierungsvorgang führt nicht nur die entsprechende Änderung durch, es wird auch ein Trigger ausgelöst, um die Änderung in einer separaten Änderungstabelle aufzuzeichnen.
Der trigger-based Ansatz wurde bevorzugt, bevor log-based Lösungen entwickelt wurden. Heutzutage wollen Unternehmen die Auswirkungen von Triggern auf die Datenbankverarbeitung vermeiden. Die log-based CDC funktioniert jedoch nach wie vor gut, und selbst die native Lösung von SAP für CDC aus SAP HANA setzt darauf auf.
Es gibt zwei gängige Implementierungen für die trigger-based Erfassung:
- Erfassen der Änderung in ihrer Gesamtheit. Dies ermöglicht den Zugriff auf den gesamten Änderungsverlauf, verdoppelt aber die Datenmenge, die für die ursprüngliche Transaktion in die Datenbank geschrieben wird. Da aber alle geänderten Daten in separaten Tabellen gespeichert sind, ist das Abrufen der Daten einfach.
- Erfassen Sie nur den identifizierenden Schlüssel der Zeile und der Art des Vorgangs (Einfügen, Aktualisieren oder Löschen). Dieser Ansatz hat nur minimale Auswirkungen auf die Ursprungstransaktion. Es reicht jedoch nicht aus, nur den Schlüssel und die Art der Operation zu kennen, um den gesamten Verlauf der Änderungen zu rekonstruieren. Die Datenextraktion beansprucht oft zusätzliche Ressourcen, da ein Join zwischen der Änderungstabelle und der Basistabelle erforderlich ist, um die aktuellen Werte abzurufen.
- Gut geeignet für: Anwendungsfälle, bei denen die Transaktions- und Datenbankleistung nicht kritisch ist und Ihr System über ausreichende Verarbeitungskapazität verfügt.
- Wann sind andere Arten von CDC in Betracht zu ziehen? Wenn Ihre Datenbankverarbeitung aufgrund von kritischen Datenverarbeitungsanforderungen oder hohen Datenmengen den Overhead von Datenbank-Trigger nicht leisten kann. Außerdem kann es vorkommen, dass Standardanwendungen es nicht erlauben, Trigger hinzuzufügen. Wenn Ihr Anwendungsfall transaktionale Konsistenz erfordert, dann ist die trigger-based CDC auch keine gute Option.
Auf Zeitstempeln (oder eine anderen low Watermark) basierende Change Data Capture
Einige Anwendungen halten in einer separaten Spalte fest, wann jede Zeilenänderung durchgeführt wurde (z. B. LAST_MODIFIED). Änderungen können extrahiert werden, indem einfach verfolgt wird, wann die letzten Änderungen extrahiert wurden, und nach der entsprechenden Spalte gefiltert wird.
Ein großer Nachteil dieses Ansatzes ist die Unfähigkeit, gelöschte Zeilen zu identifizieren. Einige Technologien speichern natürlich in jeder Zeile einen low Watermark. PostgreSQL verwendet zum Beispiel XMIN.
Wenn der Wert monoton ansteigt, kann CDC auch ein solches alternativen low Watermark verwenden.
- Gut geeignet für: Anwendungen mit einer zuverlässigen Spalte mit low Watermark in allen Tabellen. CDC auf der Basis von Zeitstempeln oder low Watermark ist eine Alternative, wenn andere Optionen, einschließlich log-based oder trigger-based CDC, nicht verfügbar sind.
- Wann sind andere Arten von CDC in Betracht zu ziehen? Wenn Sie die Verarbeitung von Löschungen wünschen. Wenn exakte Transaktionskonsistenz wichtig ist, ist CDC auf der Basis von Zeitstempeln oder low Watermark im Allgemeinen keine gute Option.
Differenzbasierte Change Data Capture
Differenzbasierte Change Data Capture wird durch einen Brute-Force-Vergleich aller Daten ermittelt. Um eine vollständige Differenzanalyse durchzuführen, müssen alle Daten zum Vergleich herangezogen werden. Die Differenz basiert immer auf zwei Momentaufnahmen der Daten.
- Gut geeignet für: relativ kleine Datensätze, wenn andere Optionen nicht verfügbar sind.
- Wann sind andere Arten von CDC in Betracht zu ziehen? Wenn Ihre Anwendung eine vollständige Historie der Datenänderungen benötigt oder wenn Ihr Anwendungsfall exakte transaktionale Konsistenz erfordert.
Change Data Capture mit Fivetran
Fivetran ist eine moderne Datenintegrationslösung, die auf dem Konzept von CDC aufbaut.
Unsere Plattform bietet mehr als 200 vorgefertigte Konnektoren, die es Datenteams ermöglichen, Daten aus Hunderten von SaaS- und lokalen Datenquellen mühelos zu zentralisieren und in Cloud-Ziele umzuwandeln. Die Konnektoren von Fivetran sind ebenfalls mit CDC-Technologie optimiert und gewährleisten einen effizienten Datenverkehr mit hohem Volumen für verschiedene Einsatzoptionen.
Sind Sie bereit, die Vorteile von CDC zu erleben? Melden Sie sich noch heute an, um mit Ihrer kostenlosen Testversion zu starten.