DDL- und Schemaentwicklung verarbeiten
Erwartete Sequenz
Wenn sich eine Tabellendefinition ändert und die DDL-Erfassung aktiviert ist, kann der Stream den DDL-Datensatz bereitstellen und dann Objektmetadaten und tabellenspezifisches DML-Schema aktualisieren, bevor nachfolgende Datensätze die neue Definition verwenden. Die genaue Batchverarbeitung und Reihenfolge in WebSocket-Nachrichten sind Implementierungsdetails. Consumer müssen einen Schema- oder Metadatendatensatz immer dann verarbeiten, wenn er angezeigt wird.
-
Cachen Sie Schemas nach ihrem
id, nicht nur nach Tabellennamen. -
Cachen Sie Objektmetadaten durch
qual_table, und ersetzen Sie sie, wenn ein neuerer Datensatz eintrifft. -
Gehen Sie nicht davon aus, dass das zur Verbindungszeit empfangene Schema für die Lebensdauer der Verbindung gültig bleibt.
-
Halten Sie einen DML-Datensatz an, wenn sein erforderliches Schema unbekannt ist und das Downstream-System keine schemalosen Daten akzeptieren kann.
-
Wenden Sie kompatible Änderungen automatisch an, wenn die Policy dies zulässt. Leiten Sie inkompatible Änderungen an einen kontrollierten Migrationsworkflow weiter.
Kompatible und inkompatible Änderungen
| Ändern | Typische Verbraucheraktion |
|---|---|
| Auf Null setzbare Spalte hinzufügen | Akzeptieren Sie das neue Feld, und aktualisieren Sie das Downstream-Schema asynchron oder dynamisch. |
| Spalte hinzufügen, die nicht Null ist | Bestätigen Sie das Standard-/Backfill-Verhalten, bevor Sie Datensätze anwenden. |
| Spalte löschen | Schreiben Sie das Feld nicht mehr; bewahren Sie historische nachgelagerte Daten gemäß der Aufbewahrungs-Policy auf. |
| Spalte umbenennen | Wird als "Drop plus hinzufügen" behandelt, es sei denn, es gibt einen gesteuerten Zuordnungsstatus. |
| Primitive JSON-Typ- oder Quellgenauigkeit ändern | Validieren Sie die Konvertierung, Genauigkeit und nachgelagerte Kompatibilität, bevor Sie fortfahren. |
| Schlüsselspalten ändern | Erstellen Sie die Idempotenz neu, führen Sie die Logik zusammen, und löschen Sie sie, bevor Sie Datensätze unter dem neuen Schlüssel konsumieren. |
DDL-Verarbeitungs-Policy
-
Zeichnen Sie den Zeitstempel für DDL
pos, Objektidentität, Anweisung und Vorgang in einem Auditlog auf. -
Führen Sie nicht geprüfte Quell-DDL nur direkt für ein Downstream-System aus, wenn dieses Verhalten explizit genehmigt und gesichert ist.
-
Verwenden Sie
maxDDLTextSize, das groß genug für die DDL der Organisation ist, und warnen Sie, wenn eine Leerung erkannt oder vermutet wird. -
Erwarten Sie im Laufe der Zeit mehrere Schemaversionen für dieselbe Tabelle. Behalten Sie die Schema-ID mit archivierten Ereignissen bei.
Schema-Registry-Integration
Ein Consumer kann In-Band-JSON-Schemadatensätze in einer Unternehmensschema-Registry veröffentlichen. Behalten Sie die ursprüngliche id bei, verknüpfen Sie sie mit dem Datenstream und dem Deployment und Versionsänderungen, anstatt historische Schemadefinitionen zu überschreiben. Die Registry ergänzt das Laufzeitschema. Sie ersetzt weder Checkpoint noch das Recovery im Quelltrail.