Gérer l'évolution des instructions LDD et des schémas
Séquence attendue
Lorsqu'une définition de table est modifiée et que la capture LDD est activée, le flux peut transmettre l'enregistrement LDD, puis mettre à jour les métadonnées d'objet et le schéma LMD propre à la table avant les enregistrements suivants qui utilisent la nouvelle définition. Le traitement batch et l'ordre exacts des messages WebSocket sont des détails d'implémentation ; les destinataires doivent gérer un enregistrement de schéma ou de métadonnées chaque fois qu'il apparaît.
-
Mettez les schémas en cache en fonction de leur
id, et pas uniquement en fonction du nom de la table. -
Mettez en cache les métadonnées d'objet par
qual_tableet remplacez-les lorsqu'un enregistrement plus récent arrive. -
Ne présumez pas que le schéma reçu au moment de la connexion reste valide pendant toute la durée de la connexion.
-
Suspendez ou mettez en attente un enregistrement LMD si son schéma requis est inconnu et que le système en aval ne peut pas accepter de données sans schéma.
-
Appliquer automatiquement les modifications compatibles lorsque la stratégie le permet ; acheminer les modifications incompatibles vers un workflow de migration contrôlé.
Modifications compatibles et incompatibles
| Modifier | Action typique du consommateur |
|---|---|
| Ajouter une colonne avec valeur NULL | Acceptez le nouveau champ et mettez à jour le schéma en aval de manière asynchrone ou dynamique. |
| Ajouter une colonne non NULL | Confirmez le comportement par défaut/retour avant d'appliquer les enregistrements. |
| Supprimer une colonne | Arrêtez d'écrire le champ ; préservez les données historiques en aval conformément à la stratégie de conservation. |
| Renommer une colonne | Traiter comme drop plus add sauf si un mapping régi indique le contraire. |
| Modifier la précision de la source ou du type primitif JSON | Validez la conversion, la précision et la compatibilité en aval avant de continuer. |
| Modifier les colonnes de clé | Recréez la logique d'idempotence, de fusion et de suppression avant d'utiliser les enregistrements sous la nouvelle clé. |
Stratégie de gestion des instructions LDD
-
Enregistrez le code LDD
pos, l'identité de l'objet, l'instruction et l'horodatage de l'opération dans un journal d'audit. -
N'exécutez pas le code LDD source non vérifié directement sur un système en aval, sauf si ce comportement est explicitement approuvé et sécurisé.
-
Utilisez
maxDDLTextSizesuffisamment volumineux pour le script LDD de l'organisation et alerte lorsque la troncature est détectée ou suspectée. -
Au fil du temps, plusieurs versions de schéma sont attendues pour la même table. Conservez l'identificateur de schéma avec les événements archivés.
Intégration du registre de schémas
Un destinataire peut publier des enregistrements de schéma JSON in-band dans un registre de schéma d'entreprise. Conservez le fichier id d'origine, associez-le au flux de données et au déploiement, ainsi qu'aux modifications de version plutôt que d'écraser les définitions de schéma historique. Le registre complète le schéma d'exécution ; il ne remplace pas la récupération de point de reprise ou de trace source.