Change Data Capture aktualisiert einen lokalen Wissensindex, indem bestätigte Änderungen an der Quelle in Ereignisse umgewandelt werden, die nachgelagerte Indexierungs-Worker inkrementell verarbeiten können.
Das ist wichtig, wenn eine Wissensdatenbank für zu Hause von einer strukturierten Anwendungsdatenbank und nicht nur von einem Ordnerüberwacher gespeist wird. Notizen, Inventareinträge, Medienmetadaten, Lesezeichen, der Verlauf der Hausautomatisierung oder Zeilen eines Dokumentkatalogs können sich fortlaufend ändern. Die gesamte Datenbank erneut zu lesen, um einen bearbeiteten Datensatz zu finden, verschwendet I/O-Ressourcen und führt zu großen Verzögerungen bei der Aktualisierung. CDC folgt stattdessen dem eigenen Änderungsstrom der Datenbank und liefert dem Indexer eine Sequenz spezifischer Mutationen.
CDC liest einen Änderungsstrom der Quelle, statt jede Zeile erneut zu scannen
Viele Datenbanken zeichnen bestätigte Mutationen bereits in Transaktionsprotokollen, Replikationsströmen oder vergleichbaren geordneten Änderungsdatensätzen auf. CDC-Systeme abonnieren diesen Strom und übersetzen die Informationen aus den Low-Level-Protokollen in verarbeitbare Ereignisse für Einfügungen, Aktualisierungen und Löschungen.
Protokollbasierte CDC erfasst Datenbankänderungen auf Zeilenebene direkt aus dem Änderungsstrom der Quelle. Dadurch entfällt das wiederholte Abfragen ganzer Tabellen, nur um eine kleine Anzahl von Mutationen zu finden.
Das unterscheidet sich von einem Dateiüberwacher. Ein Überwacher beobachtet Ereignisse auf Pfadebene, die vom Betriebssystem erzeugt werden, während CDC logische Änderungen innerhalb einer Datenbank erfasst und die Reihenfolge von Transaktionen sowie die Identität von Datensätzen bewahren kann.
Der Wissensindex erhält dadurch eine deutlich kleinere Arbeitswarteschlange: „Datensatz 184 wurde geändert“ ist günstiger zu verarbeiten als „900.000 Zeilen scannen und alle erneut vergleichen“.
Jedes Ereignis enthält die Identität, die zum Auffinden abgeleiteter Indexdatensätze erforderlich ist
Ein Aktualisierungsereignis ist nur dann nützlich, wenn der Indexer die geänderte Quellzeile mit den daraus zuvor abgeleiteten Abschnitten, Textfeldern, Metadatensätzen oder Vektoren verknüpfen kann.
Eine Replikatidentität legt fest, welche Informationen zur Identifizierung einer Zeile für replizierte Aktualisierungen und Löschungen verfügbar sind. Dadurch erhalten nachgelagerte Verbraucher eine stabile Möglichkeit, gezielt auf abgeleitete Indexdatensätze zuzugreifen.
Eine lokale Indexierungspipeline sollte in jedem abgeleiteten Datensatz einen ähnlich stabilen Quellschlüssel bewahren. Ein `UPDATE` kann dann nur die betroffene Dokumentfamilie abrufen und neu erstellen, während ein `DELETE` jeden Vektor finden kann, der ungültig werden muss. Ohne eine stabile Identität kann der Ereignisstrom dem System zwar mitteilen, dass sich etwas geändert hat, es aber dennoch zu einer aufwendigen Suche zwingen, um herauszufinden, welche indizierten Artefakte zu dieser Quelle gehören.
Der Indexer übersetzt Datenbankmutationen in Aktionen auf der Suchebene
Ein CDC-Ereignis enthält kein Embedding und kennt die Aufteilungsrichtlinie nicht. Es ist eine Benachrichtigung aus der maßgeblichen Quellschicht und keine fertige Vektoroperation.
Strukturierte Änderungsereignisdatensätze trennen die Mutation der Quelle von der nachgelagerten Indexierungslogik. So kann der Verbraucher entscheiden, ob eine Einfügung, Aktualisierung oder Löschung Parsing, Embedding oder eine Ausmusterung erfordert.
Der Indexierungs-Worker kann eine Einfügung auf „analysieren und hinzufügen“, eine Aktualisierung auf „vergleichen und neu erstellen“ und eine Löschung auf „Tombstone setzen oder alle aus dem Quellschlüssel abgeleiteten Suchdatensätze entfernen“ abbilden.
In diesen Aktualisierungspfad kann ein Inhalts-Hash integriert werden. CDC gibt an, welcher Quelldatensatz geändert wurde; der Hash-Test kann anschließend entscheiden, ob sich der Text, der in das Embedding-Modell eingeht, tatsächlich geändert hat.
Offsets und Checkpoints ermöglichen dem Verbraucher die Fortsetzung nach einem Neustart
Ein Heimserver wird neu gestartet, Container werden aktualisiert und Indexierungs-Worker fallen gelegentlich aus. Verliert der Verbraucher seine Position, kann er entweder Änderungen verpassen oder eine große Menge an Arbeit erneut ausführen.
Gespeicherte Quell-Offsets ermöglichen es einem Erfassungsprozess, nach einem Neustart an einer bekannten Position fortzufahren, statt Änderungen unbemerkt zu überspringen oder von vorn zu beginnen.
Der Verbraucher des Wissensindex sollte seinen eigenen Checkpoint erst dann bestätigen, wenn die zugehörige Indexmutation dauerhaft gespeichert wurde. Andernfalls könnte ein Ereignis bestätigt werden, bevor seine Vektoren oder Metadaten tatsächlich geschrieben wurden. Die erneute Verarbeitung eines Ereignisses sollte ebenfalls sicher sein. Durch Upserts anhand stabiler IDs, Versionsprüfungen und eine idempotente Verarbeitung von Löschungen verhindert man, dass doppelte Zustellungen doppelte Abschnitte erzeugen.
CDC verkürzt die Aktualisierungsverzögerung, ersetzt aber keine Abstimmung
Protokollbasiertes Streaming eignet sich gut für geordnete Datenbankänderungen. Dennoch können Konfigurationsfehler, Aufbewahrungslimits, Ausfälle von Konnektoren, Schemaänderungen oder Fehler im Verbraucher Lücken zwischen Quelle und Index verursachen.
Das Risiko verpasster Änderungsereignisse zeigt, warum ein schneller inkrementeller Strom weiterhin durch eine langsamere Abstimmung mit dem maßgeblichen Quellstatus abgesichert werden sollte.
Eine regelmäßige Abstimmung kann Quellzeilenzahlen, Versionen, Inhaltshashes, Löschmarkierungen und indizierte IDs vergleichen, um alles zu reparieren, was der Live-Stream verpasst hat.
Dadurch erhält das System zwei Zeitskalen: CDC hält gewöhnliche Änderungen innerhalb von Sekunden oder Minuten aktuell, während die Abstimmung eine langsamere Vollständigkeitsprüfung ermöglicht.
Hohe Aktualisierungsraten erzeugen Rückstau zwischen Quelle und Index
Eine Datenbank kann Änderungen schneller bestätigen, als OCR, Aufteilung, Embedding oder die Pflege des Vektorindexes sie verarbeiten können. Die CDC-Warteschlange dient dann als Puffer zwischen der Aktivität der Quelle und der Aktualität der Suche.
Ein dauerhaftes Binärprotokoll datenändernder Ereignisse stellt einen geordneten Verlauf bereit, den ein langsamerer nachgelagerter Indexer nach einer vorübergehenden Ausfallzeit verarbeiten kann, vorbehaltlich des Aufbewahrungszeitraums des Quellsystems.
Bündeln Sie zeitnahe Aktualisierungen derselben Quell-ID, priorisieren Sie Löschungen und Berechtigungsänderungen und überwachen Sie die Verzögerung statt nur die Länge der Warteschlange. Tausend Ereignisse können tausend unabhängige Dokumente oder wiederholte Änderungen an einem einzigen Datensatz darstellen. Der Index ist erst dann aktuell, wenn der Verbraucher Ereignisse bis zu einer bekannten Quellposition angewendet hat und sämtliche erforderlichen nachgelagerten Embedding- oder Komprimierungsarbeiten für diese Datensätze abgeschlossen sind.
FAQ
Ist Change Data Capture nur für SQL-Datenbanken gedacht?
Nein. CDC ist ein allgemeines Muster zum Verarbeiten von Mutationen einer Quelle. SQL-Transaktionsprotokolle sind zwar weit verbreitet, aber auch andere Systeme stellen Änderungsströme, Commit-Protokolle, Ereignis-Feeds oder Nur-Anhängen-Datensätze mit ähnlicher Semantik bereit.
Gehen Änderungen verloren, sobald der Indexierungsverbraucher offline ist?
Nicht unbedingt. Wenn die Quelle das Änderungsprotokoll aufbewahrt und der Konnektor seinen Offset beibehält, kann der Verbraucher fortfahren und den Rückstand erneut verarbeiten. Bei längeren Ausfällen sind die Aufbewahrungslimits weiterhin wichtig.
Kann CDC eine regelmäßige vollständige Abstimmung ersetzen?
In der Regel nicht. Eine Abstimmung bleibt nützlich, um verpasste Ereignisse, Zuordnungsfehler, veraltete abgeleitete Datensätze und Änderungen an der Quelle zu erkennen, die außerhalb des Erfassungspfads erfolgt sind.
Tech- & KI-Zentrum
Mehr zum Lesen

Laufzeitstatus vs. dauerhafter Status in Home Assistant: Was muss einen Neustart überstehen?
Home Assistant speichert nicht jeden aktuellen Wert dauerhaft; Konfiguration, Register, ausgewählte wiederhergestellte Zustände, Verlauf und Bereitstellungsdaten erfüllen beim Neustart unterschiedliche Aufgaben.

Wie authentifiziert Home Assistant lokale und entfernte Sitzungen?
Lokale und Remote-Home-Assistant-Sitzungen verwenden dasselbe serverseitige Identitätsmodell. Der Fernzugriff ändert die Route und die TLS-Grenze, nicht den grundlegenden Token-Ablauf.

Warum können Home-Assistant-Verlaufsabfragen langsamer werden, wenn die Recorder-Daten wachsen?
Das Wachstum des Recorders kann die Kosten von Verlaufsabfragen erhöhen, wenn der angeforderte Zeitraum mehr Zeilen umfasst, Cache-Fehlversuche zunehmen oder die Verarbeitung von Speicher...

