Référence de la charge utile et du schéma
Data Streams s'auto-décrit lorsque les enregistrements de schéma et de métadonnées JSON sont activés. La forme exacte de l'enregistrement peut changer lorsque les champs de sortie sont renommés, que les métadonnées facultatives sont activées, que le modèle d'enregistrement est modifié ou que les métadonnées source sont modifiées. Les enregistrements de schéma JSON in-band et YAML AsyncAPI générés sont les définitions d'exécution faisant autorité.
| Classification |
Identification |
Conseils de traitement |
| Enregistrement de schéma |
Contient id, $schema, type et properties |
Mettre en cache par id ; ne pas acheminer en tant que données métier. |
| Métadonnées de flux |
op_type est STREAM_METADATA |
Enregistrer le producteur et le contexte source ; actualiser les diagnostics lorsqu'ils réapparaissent. |
| Métadonnées d'objet |
op_type est OBJECT_METADATA |
Mettez en cache les colonnes, les types primitifs, la capacité d'affectation de valeur NULL et les indicateurs de clé par qual_table. |
| LMD (langage de manipulation de données) |
op_type est INSERT, UPDATE, DELETE ou UPSERT. |
Appliquez le changement de ligne selon la sémantique avant/après. |
| DDL |
op_type est DDL et ddl est présent |
Traitez l'objet et l'instruction, puis attendez-vous à ce que les métadonnées/schéma soient actualisées, le cas échéant. |
Enregistrements de schéma JSON
Par défaut, les flux de données émettent un enregistrement de schéma JSON avant d'envoyer un type d'enregistrement qui requiert ce schéma. Les enregistrements de schéma utilisent le brouillon 4 du schéma JSON et contiennent les champs suivants :
| Champ |
Signification |
id |
Identificateur stable du type de schéma et, pour les schémas propres à une table, de l'objet qualifié. |
title |
Titre de schéma lisible par l'utilisateur. |
$schema |
Dialecte de schéma JSON, http://json-schema.org/draft-04/schema#. |
type |
Type JSON de niveau supérieur, object. |
definitions |
Définitions de colonne ou de métadonnées réutilisables si nécessaire. |
properties |
Champs autorisés et leurs contraintes. |
required |
Champs requis pour les instances du schéma. |
additionalProperties |
Indique si les champs non déclarés par le schéma sont acceptés. |
Règle de consommateur : un enregistrement de schéma ne doit pas contenir op_type. Détectez-le par structure de schéma et par id. Un schéma peut être envoyé à nouveau lorsque les métadonnées source ou la configuration du flux de données changent.
| Champ |
Sous-champs |
Description |
op_type |
- |
STREAM_METADATA. |
producer |
name, version |
Identité du producteur de flux de données et version du logiciel. |
database |
name, version, charset, timeZone |
Contexte de base de données source. Traite les valeurs comme informationnelles et dépendantes de la source. |
machine |
node, system, release, version, hardware |
Contexte de système d'exploitation d'hôte. |
source |
file, uri, uriHistory quand présent, creationTime, compatibility |
Contexte de trace ou de processus source. |
Un enregistrement de métadonnées d'objet décrit la définition de table en cours utilisée pour encoder les instructions LMD. Il contient op_type: OBJECT_METADATA, qual_table et un objet columns. Chaque colonne contient :
| Attribut de colonne |
Description |
type |
Classification primitive JSON telle que string, number ou boolean. Utilisez le schéma JSON propre à la table pour tous les types acceptés, y compris null. |
null |
Indique si la colonne source peut être NULL en fonction des métadonnées capturées. |
key |
Indique si la colonne fait partie de la clé connue sous le nom GoldenGate pour l'objet. |
{
"op_type": "OBJECT_METADATA",
"qual_table": "SALES.ORDERS",
"columns": {
"ORDER_ID": {"type": "number", "null": false, "key": true},
"STATUS": {"type": "string", "null": false, "key": false},
"TOTAL_AMOUNT": {"type": "number", "null": true, "key": false}
}
}
Enregistrement DML
| Champ par défaut |
Requis par défaut |
Signification |
qual_table |
Oui |
Nom de table qualifié complet. Le nom et la présence peuvent être modifiés avec metaFields.qualifiedTable. |
op_type |
Oui |
Chaîne d'opération. Les valeurs par défaut sont INSERT, UPDATE, DELETE et UPSERT ; les chaînes peuvent être personnalisées. |
op_ts |
Oui |
Horodatage de l'opération source au format ISO 8601 dans les schémas Data Streams en cours. |
xid |
Oui |
Identifiant de la transaction source représenté par une chaîne. Le format dépend de la source. |
pos |
Oui |
Position opaque de récupération. Stocker exactement ; ne pas analyser. |
before |
Conditionnel |
Avant image pour les opérations de mise à jour et de suppression lorsque les colonnes requises ont été capturées. Le nom peut être personnalisé. |
after |
Conditionnel |
Après l'image pour les opérations d'insertion et de mise à jour lorsque les colonnes requises ont été capturées. Le nom peut être personnalisé. |
| Métadonnées facultatives |
Non |
csn, séquence d'opération, indicateur de transaction, clés primaires, catalogue/schéma/table, horodatages de traitement, jetons, valeurs d'environnement et champs statiques. |
Matrice d'image avant et après
| Opération |
before |
after |
Notes |
| INSERT |
Normalement absent |
Nouvelle image de ligne |
Seules les colonnes disponibles dans la trace sont émises. |
| UPDATE |
Valeurs d'origine |
Nouvelles valeurs |
La trace (trail) et la journalisation source déterminent si les images sont complètes ou partielles. |
| SUPPRIMER |
Image de ligne supprimée |
Normalement absent |
Assurez-vous que les colonnes de clé et les colonnes d'audit requises sont capturées. |
| METTRE À JOUR |
Dépend du schéma d'exécution |
Image de ligne résultante |
Utilisez le schéma et le contrat d'opération générés pour le pipeline source. |
Exemples LMD
{
"qual_table": "SALES.ORDERS",
"op_type": "INSERT",
"op_ts": "2026-07-13T04:01:01.123456Z",
"xid": "example-transaction-1001",
"pos": "G-QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=1001",
"after": {
"ORDER_ID": 1001,
"STATUS": "NEW",
"TOTAL_AMOUNT": 125.50
}
}
{
"qual_table": "SALES.ORDERS",
"op_type": "UPDATE",
"op_ts": "2026-07-13T04:02:12.654321Z",
"xid": "example-transaction-1002",
"pos": "G-R0hJSktMTU5PUFFSU1RVVldYWVo=1002",
"before": {"ORDER_ID": 1001, "STATUS": "NEW"},
"after": {"ORDER_ID": 1001, "STATUS": "APPROVED"}
}
{
"qual_table": "SALES.ORDERS",
"op_type": "DELETE",
"op_ts": "2026-07-13T04:03:15.000000Z",
"xid": "example-transaction-1003",
"pos": "G-SktMTU5PUFFSU1RVVldYWVo=1003",
"before": {"ORDER_ID": 1001, "STATUS": "APPROVED"}
}
Enregistrement DDL
| Champ |
Signification |
op_type |
DDL. |
op_ts |
Horodatage de l'opération LDD. |
xid |
Identifiant de transaction associé à l'enregistrement DDL. |
pos |
Position de récupération opaque pour l'enregistrement DDL. |
ddl.object.catalog |
Nom du catalogue lorsque la source en fournit un ; peut être une chaîne vide. |
ddl.object.schema |
Nom de schéma ou de propriétaire. |
ddl.object.object |
Nom de l'objet affecté. |
ddl.statement |
Texte LDD tronqué s'il dépasse maxDDLTextSize. |
{
"op_type": "DDL",
"op_ts": "2026-07-13T04:04:30.000000Z",
"xid": "example-transaction-1004",
"pos": "G-TU5PUFFSU1RVVldYWVo=1004",
"ddl": {
"object": {
"catalog": "",
"schema": "SALES",
"object": "ORDERS"
},
"statement": "ALTER TABLE SALES.ORDERS ADD CUSTOMER_TIER VARCHAR2(20)"
}
}
Lorsque cloudEventsFormat est activé, l'enregistrement GoldenGate est transféré dans le membre data JSON CloudEvents. Les attributs CloudEvents standard identifient l'événement. Traitez les valeurs de type, source et id comme des valeurs de contrat d'exécution et examinez les enregistrements YAML et réels générés plutôt que les exemples de codage en dur à partir d'un autre flux.
{
"specversion": "1.0",
"type": "<runtime event type>",
"source": "<runtime event source>",
"id": "<runtime event id>",
"datacontenttype": "application/json",
"data": {
"qual_table": "SALES.ORDERS",
"op_type": "INSERT",
"op_ts": "2026-07-13T04:01:01.123456Z",
"xid": "example-transaction-1001",
"pos": "G-QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=1001",
"after": {"ORDER_ID": 1001, "STATUS": "NEW"}
}
}