Payload e riferimento schema
I flussi di dati descrivono automaticamente quando i record di schema e metadati JSON sono abilitati. La forma esatta del record può cambiare quando i campi di output vengono rinominati, i metadati facoltativi vengono abilitati, le modifiche al modello di record o le modifiche ai metadati di origine. I record YAML AsyncAPI generati e Schema JSON in banda sono le definizioni di runtime autorevoli.
| Classificazione |
Identificazione |
Guida all'elaborazione |
| Record schema |
Contiene id, $schema, type e properties |
Cache di id; non instradare come dati business. |
| Metadati flusso |
op_type è STREAM_METADATA |
Registrare il producer e il contesto di origine; aggiornare la diagnostica quando viene visualizzata di nuovo. |
| Metadati oggetto |
op_type è OBJECT_METADATA |
Inserisci nella cache colonne, tipi primitivi, annullabilità e flag chiave di qual_table. |
| DML |
op_type è INSERT, UPDATE, DELETE o UPSERT |
Applicare la modifica della riga in base alla semantica precedente/successiva. |
| DDL |
op_type è DDL e ddl è presente |
Elaborare l'oggetto e l'istruzione, quindi prevedere metadati/schemi aggiornati, se applicabile. |
Record dello schema JSON
Per impostazione predefinita, Data Streams emette un record di schema JSON prima di inviare un tipo di record che richiede tale schema. I record di schema utilizzano la bozza 4 dello schema JSON e contengono i campi riportati di seguito.
| Campo |
Significato |
id |
Identificativo stabile per il tipo di schema e, per gli schemi specifici della tabella, per l'oggetto qualificato. |
title |
Titolo schema leggibile dall'utente. |
$schema |
Dialetto schema JSON, http://json-schema.org/draft-04/schema#. |
type |
Tipo JSON di livello superiore, object. |
definitions |
Definizioni di colonne o metadati riutilizzabili quando necessario. |
properties |
Campi consentiti e relativi vincoli. |
required |
Campi richiesti per le istanze dello schema. |
additionalProperties |
Indica se i campi non dichiarati dallo schema sono accettati. |
Regola di consumo: non si prevede che un record di schema contenga op_type. Rilevarlo in base alla struttura dello schema e a id. È possibile inviare di nuovo uno schema quando i metadati di origine o la configurazione del flusso vengono modificati.
| Campo |
Campi secondari |
Descrizione |
op_type |
- |
STREAM_METADATA. |
producer |
name, version |
Identità del producer di flussi di dati e versione software. |
database |
name, version, charset, timeZone |
Contesto del database di origine. Considera i valori come informativi e dipendenti dalla fonte. |
machine |
node, system, release, version, hardware |
Contesto del sistema operativo host. |
source |
file, uri, uriHistory se presente, creationTime, compatibility |
Percorso di origine o contesto del processo. |
Un record di metadati oggetto descrive la definizione di tabella corrente utilizzata per codificare DML. Ha op_type: OBJECT_METADATA, qual_table e un oggetto columns. Ogni colonna contiene:
| Attributo colonna |
Descrizione |
type |
Classificazione primitiva JSON come string, number o boolean. Utilizzare lo schema JSON specifico della tabella per i tipi accettati completi, incluso null. |
null |
Indica se la colonna di origine può essere nulla in base ai metadati acquisiti. |
key |
Indica se la colonna fa parte della chiave nota a GoldenGate per l'oggetto. |
{
"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}
}
}
Record DML
| Campo predefinito |
Obbligatorio per impostazione predefinita |
Significato |
qual_table |
Sì |
Nome tabella completamente qualificato. Il nome e la presenza possono essere modificati con metaFields.qualifiedTable. |
op_type |
Sì |
Stringa operazione. Le impostazioni predefinite sono INSERT, UPDATE, DELETE, UPSERT; le stringhe possono essere personalizzate. |
op_ts |
Sì |
Indicatore orario dell'operazione di origine nel form ISO 8601 negli schemi Data Streams correnti. |
xid |
Sì |
Identificativo della transazione di origine rappresentato come stringa. Il formato dipende dall'origine. |
pos |
Sì |
Posizione di recupero opaca. Conservare esattamente; non analizzare. |
before |
Condizionale |
Prima dell'immagine per le operazioni di aggiornamento ed eliminazione quando sono state acquisite le colonne necessarie. Il nome può essere personalizzato. |
after |
Condizionale |
Dopo l'immagine per le operazioni di inserimento e aggiornamento quando sono state acquisite le colonne necessarie. Il nome può essere personalizzato. |
| Metadati facoltativi |
N. |
csn, sequenza delle operazioni, indicatore delle transazioni, chiavi primarie, catalogo/schema/tabella, indicatori orari di elaborazione, token, valori di ambiente e campi statici. |
Prima e dopo la matrice delle immagini
| Operazione |
before |
after |
Note |
| INSERISCI |
Normalmente assente |
Nuova immagine riga |
Vengono emesse solo le colonne disponibili nel trail. |
| UPDATE |
Valori originali |
Nuovi valori |
Il log trail e il log di origine determinano se le immagini sono complete o parziali. |
| ELIMINA |
Immagine riga eliminata |
Normalmente assente |
Assicurarsi che le colonne chiave e le colonne di audit necessarie vengano acquisite. |
| UPSERT |
Dipendente dallo schema di runtime |
Immagine riga risultante |
Utilizzare lo schema generato e il contratto operativo per la pipeline di origine. |
Esempi DML
{
"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"}
}
Record DDL
| Campo |
Significato |
op_type |
DDL. |
op_ts |
Indicatore orario dell'operazione DDL. |
xid |
Identificativo della transazione associato al record DDL. |
pos |
Posizione di recupero opaca per il record DDL. |
ddl.object.catalog |
Nome del catalogo quando l'origine ne fornisce uno; può essere una stringa vuota. |
ddl.object.schema |
Nome schema o proprietario. |
ddl.object.object |
Nome oggetto interessato. |
ddl.statement |
Testo DDL troncato se supera 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)"
}
}
Quando cloudEventsFormat è abilitato, il record GoldenGate viene riportato nel membro data JSON CloudEvents. Gli attributi CloudEvents standard identificano l'evento. Considera i valori di type, source e id come valori del contratto runtime e ispeziona gli YAML generati e i record effettivi anziché gli esempi di hardcoding di un altro flusso.
{
"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"}
}
}