Payload- und Schemareferenz
Data Streams beschreibt selbst, wann JSON-Schema- und Metadatendatensätze aktiviert sind. Die genaue Datensatzausprägung kann sich ändern, wenn Ausgabefelder umbenannt, optionale Metadaten aktiviert, das Datensatzmodell geändert oder Quellmetadaten geändert werden. Die generierten AsyncAPI YAML- und In-Band-JSON-Schemadatensätze sind die maßgeblichen Laufzeitdefinitionen.
| Klassifizierung |
Identifikation |
Verarbeitungsleitfaden |
| Schemadatensatz |
Enthält id, $schema, type und properties |
Cache nach id; nicht als Geschäftsdaten weiterleiten. |
| Streammetadaten |
op_type lautet STREAM_METADATA. |
Producer- und Quellkontext aufzeichnen; Diagnose aktualisieren, wenn sie wieder angezeigt wird. |
| Objektmetadaten |
op_type lautet OBJECT_METADATA. |
Cachen Sie Spalten, primitive Typen, Nullbarkeit und Schlüssel-Flags nach qual_table. |
| DML |
op_type ist INSERT, UPDATE, DELETE oder UPSERT |
Wenden Sie die Zeilenänderung entsprechend der Vor/Nach-Semantik an. |
| DDL |
op_type ist DDL, und ddl ist vorhanden |
Verarbeiten Sie das Objekt und die Anweisung, und erwarten Sie gegebenenfalls aktualisierte Metadaten/Schema. |
JSON-Schemadatensätze
Standardmäßig gibt Data Streams einen JSON-Schemadatensatz aus, bevor ein Datensatztyp gesendet wird, der dieses Schema erfordert. Schemadatensätze verwenden JSON-Schemaentwurf 4 und enthalten die folgenden Felder:
| Feld |
Bedeutung |
id |
Stabile ID für den Schematyp und für tabellenspezifische Schemas das qualifizierte Objekt. |
title |
Menschlich lesbarer Schematitel. |
$schema |
JSON-Schemadialekt, http://json-schema.org/draft-04/schema#. |
type |
JSON-Typ der obersten Ebene, object. |
definitions |
Wiederverwendbare Spalten- oder Metadatendefinitionen bei Bedarf. |
properties |
Zulässige Felder und ihre Constraints. |
required |
Erforderliche Felder für Instanzen des Schemas. |
additionalProperties |
Ob Felder, die nicht vom Schema deklariert wurden, akzeptiert werden. |
Consumer-Regel: Erwarten Sie nicht, dass ein Schemadatensatz op_type enthält. Ermitteln Sie sie anhand der Schemastruktur und id. Ein Schema kann erneut gesendet werden, wenn sich die Quellmetadaten oder die Streamkonfiguration ändern.
| Feld |
Subfelder |
Beschreibung |
op_type |
- |
STREAM_METADATA. |
producer |
name, version |
Identität und Softwareversion des Data Stream-Producers. |
database |
name, version, charset, timeZone |
Quelldatenbankkontext. Werte als informativ und quellabhängig behandeln. |
machine |
node, system, release, version, hardware |
Hostbetriebssystemkontext. |
source |
file, uri, uriHistory, sofern vorhanden, creationTime, compatibility |
Quelltrail oder Prozesskontext. |
Ein Objektmetadatensatz beschreibt die aktuelle Tabellendefinition, die zur Codierung von DML verwendet wird. Er enthält op_type: OBJECT_METADATA, qual_table und ein columns-Objekt. Jede Spalte enthält:
| Spaltenattribut |
Beschreibung |
type |
Primitive JSON-Klassifizierung wie string, number oder boolean. Verwenden Sie das tabellenspezifische JSON-Schema für die vollständigen akzeptierten Typen, einschließlich null. |
null |
Gibt an, ob die Quellspalte gemäß den erfassten Metadaten Null sein kann. |
key |
Gibt an, ob die Spalte Teil des Schlüssels ist, der GoldenGate für das Objekt bekannt ist. |
{
"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}
}
}
DML-Datensatz
| Standardfeld |
Standardmäßig erforderlich |
Bedeutung |
qual_table |
Ja |
Vollqualifizierter Tabellenname. Der Name und die Präsenz können mit metaFields.qualifiedTable geändert werden. |
op_type |
Ja |
Vorgangszeichenfolge. Die Standardwerte sind INSERT, UPDATE, DELETE, UPSERT. Zeichenfolgen können angepasst werden. |
op_ts |
Ja |
Zeitstempel des Quellvorgangs in ISO 8601-Form in aktuellen Data Streams-Schemas. |
xid |
Ja |
Quelltransaktions-ID, die als Zeichenfolge dargestellt wird. Das Format ist quellabhängig. |
pos |
Ja |
Undurchsichtige Erholungsposition. Genau speichern; nicht parsen. |
before |
Bedingt |
Vor Image für Aktualisierungs- und Löschvorgänge, wenn die erforderlichen Spalten erfasst wurden. Der Name kann angepasst werden. |
after |
Bedingt |
Nach dem Image für Einfüge- und Aktualisierungsvorgänge, wenn die erforderlichen Spalten erfasst wurden. Der Name kann angepasst werden. |
| Optionale Metadaten |
Nein |
csn, Vorgangssequenz, Transaktionsindikator, Primärschlüssel, Katalog/Schema/Tabelle, Verarbeitungszeitstempel, Token, Umgebungswerte und statische Felder. |
Vor und nach Bildmatrix
| Arbeitsvorgang |
before |
after |
Notizen |
| INSERT |
Normalerweise abwesend |
Neues Zeilenbild |
Es werden nur Spalten ausgegeben, die im Trail verfügbar sind. |
| UPDATE |
Originalwerte |
Neue Werte |
Das Trail- und Quelllogging bestimmen, ob Bilder vollständig oder teilweise sind. |
| LÖSCHEN |
Bild der gelöschten Zeile |
Normalerweise abwesend |
Stellen Sie sicher, dass Schlüsselspalten und erforderliche Auditspalten erfasst werden. |
| UPSERT |
Laufzeitschemaabhängig |
Ergebniszeilenbild |
Verwenden Sie den generierten Schema- und Vorgangsvertrag für die Quellpipeline. |
DML – Beispiele
{
"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"}
}
DDL-Datensatz
| Feld |
Bedeutung |
op_type |
DDL. |
op_ts |
Zeitstempel für DDL-Vorgang. |
xid |
Transaktions-ID, die dem DDL-Datensatz zugeordnet ist. |
pos |
Nicht transparente Wiederherstellungsposition für den DDL-Datensatz. |
ddl.object.catalog |
Katalogname, wenn die Quelle einen bereitstellt. Kann eine leere Zeichenfolge sein. |
ddl.object.schema |
Schemaname oder Eigentümername. |
ddl.object.object |
Name des betroffenen Objekts. |
ddl.statement |
DDL-Text, abgeschnitten, wenn er maxDDLTextSize überschreitet. |
{
"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)"
}
}
Wenn cloudEventsFormat aktiviert ist, wird der GoldenGate-Datensatz im JSON-Element data CloudEvents übertragen. Standardattribute der CloudEvents kennzeichnen das Ereignis. Behandeln Sie die Werte von type, source und id als Laufzeitvertragswerte, und prüfen Sie die generierten YAML- und Istdatensätze, anstatt Beispiele aus einem anderen Stream zu hartcodieren.
{
"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"}
}
}