Gestisci DDL ed evoluzione schema
Sequenza prevista
Quando una definizione di tabella viene modificata e l'acquisizione DDL è abilitata, il flusso può consegnare il record DDL e quindi aggiornare i metadati dell'oggetto e lo schema DML specifico della tabella prima dei record successivi che utilizzano la nuova definizione. Il batch e l'ordine esatti tra i messaggi WebSocket sono dettagli di implementazione; i consumer devono gestire uno schema o un record di metadati ogni volta che viene visualizzato.
-
Cache degli schemi in base al relativo
id, non solo in base al nome della tabella. -
Inserisci nella cache i metadati dell'oggetto
qual_tablee sostituiscili quando arriva un record più recente. -
Non si supponga che lo schema ricevuto al momento della connessione rimanga valido per la durata della connessione.
-
Sospendere o eliminare una lettera morta di un record DML se lo schema richiesto è sconosciuto e il sistema a valle non può accettare dati senza schema.
-
Applica automaticamente le modifiche compatibili laddove consentito dal criterio; instrada le modifiche incompatibili a un flusso di lavoro di migrazione controllato.
Modifiche compatibili e incompatibili
| Modifica | Tipica azione dei consumatori |
|---|---|
| Aggiungi colonna annullabile | Accettare il nuovo campo e aggiornare lo schema a valle in modo asincrono o dinamico. |
| Aggiungi colonna non nulla | Confermare il funzionamento predefinito/di riempimento prima di applicare i record. |
| Elimina colonna | Interrompere la scrittura del campo; conservare i dati cronologici a valle in base ai criteri di conservazione. |
| Rinomina colonna | Considera come drop plus add a meno che non venga specificato un altro stato di mapping governato. |
| Modifica tipo o precisione origine primitiva JSON | Convalida la conversione, la precisione e la compatibilità a valle prima di continuare. |
| Modifica colonne chiave | Ricreare l'idempotenza, unire ed eliminare la logica prima di utilizzare i record nella nuova chiave. |
Criterio di gestione DDL
-
Registrare la DDL
pos, l'identità dell'oggetto, l'istruzione e l'indicatore orario dell'operazione in un log di audit. -
Non eseguire DDL di origine non rivisto direttamente su un sistema a valle a meno che tale comportamento non sia esplicitamente approvato e protetto.
-
Usare
maxDDLTextSizeabbastanza grande per la DDL dell'organizzazione e avvisare quando viene rilevato o sospettato un troncamento. -
Prevedere più versioni di schema per la stessa tabella nel tempo. Conservare l'identificativo dello schema con gli eventi archiviati.
Integrazione registro schemi
Un consumer può pubblicare record di schema JSON in banda in un registro di schema enterprise. Conserva il file id originale, lo associa al flusso di dati e alla distribuzione e le modifiche alla versione anziché sovrascrivere le definizioni dello schema cronologico. Il registro completa lo schema di runtime e non sostituisce il checkpoint o il recupero del percorso di origine.