Change Data Capture streamt Änderungen auf Zeilenebene aus einer Quelldatenbank. Logbasiertes CDC liest das Transaction Log direkt, erfasst also Inserts, Updates und Hard Deletes in Commit-Reihenfolge und belastet die Quelle kaum. Eine updated_at-Spalte zu pollen ist einfacher, verpasst aber Hard Deletes, verpasst Zwischenzustände zwischen zwei Polls, hängt davon ab, dass die Anwendung die Spalte pflegt, und kann Zeilen durch Uhr- oder Transaktionsgrenzen übersehen.
Warum Interviewer das fragen
Das ist in fast jedem Ingestion-Projekt eine echte Architekturentscheidung. Interviewer wollen die konkreten Schwächen des Timestamp-Pollings hören, besonders Deletes und laufende Transaktionen, und ob du verstehst, was logbasiertes CDC von der Quelle verlangt: Replication Slots, Log-Retention, Berechtigungen und einen Plan für den initialen Snapshot.
So baust du deine Antwort auf
- Definier CDC und nenn die zwei Hauptumsetzungen.
- Zähl genau auf, was Timestamp-Polling verpasst.
- Beschreib, was logbasiertes CDC von der Quelldatenbank verlangt.
- Erklär die Übergabe von Snapshot zu Stream.
- Sag, wie du mit Schemaänderungen an der Quelltabelle umgehen würdest.
Beispielantwort
Bei CDC geht es darum, Änderungen auf Zeilenebene zu bekommen, statt ganze Tabellen neu zu lesen. Logbasiertes CDC, etwa mit Debezium auf dem Postgres Write Ahead Log oder dem MySQL Binlog, gibt dir jedes Insert, Update und Delete in Commit-Reihenfolge und legt fast keine Query-Last auf die Primary. Eine updated_at-Spalte zu pollen ist viel einfacher aufzusetzen und für sich langsam ändernde Referenzdaten völlig in Ordnung, hat aber echte Löcher. Hard Deletes sieht es überhaupt nicht, Zeilen bleiben also stromabwärts stillschweigend für immer bestehen. Es verpasst Zwischenzustände, wenn sich eine Zeile zwischen zwei Polls zweimal ändert, und es hängt davon ab, dass jeder Writer daran denkt, die Spalte zu setzen, was ein Altjob in unserem Bestand nie getan hat. Logbasiertes CDC hat seine eigenen Betriebskosten. Du brauchst einen Replication Slot, und wenn dein Consumer stockt, wird das Log nicht freigegeben und die Quelldisk läuft voll, was ein wirklich gefährlicher Fehlerfall ist. Ich überwache Slot Lag daher als First-Class-Alert neben dem Pipeline Lag.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wie würdest du den initialen Snapshot machen, ohne die Quelle zu blockieren?
- Was passiert, wenn ein Postgres Replication Slot zurückfällt?
- Wie stellst du ein Delete stromabwärts in einer Append-only-Tabelle dar?
Weitere Fragen für Data Engineer
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen