Carga útil y referencia de esquema
Data Streams se describe automáticamente cuando los registros de metadatos y esquemas JSON están activados. La unidad de registro exacta puede cambiar cuando se cambia el nombre de los campos de salida, se activan los metadatos opcionales, se cambian los modelos de registro o se cambian los metadatos de origen. Los registros de esquema JSON YAML y en banda generados AsyncAPI son las definiciones de tiempo de ejecución autorizadas.
| Clasificación |
Identificación |
Orientación para el procesamiento |
| Registro de esquema |
Contiene id, $schema, type y properties |
Almacene en caché mediante id; no direccione como datos de negocio. |
| Metadatos de flujo |
op_type es STREAM_METADATA |
Registre el contexto de origen y productor; actualice el diagnóstico cuando vuelva a aparecer. |
| Metadatos de objeto |
op_type es OBJECT_METADATA |
Columnas de caché, tipos primitivos, nulidad e indicadores de clave mediante qual_table. |
| DML |
op_type es INSERT, UPDATE, DELETE o UPSERT |
Aplique el cambio de fila según la semántica anterior/después. |
| DDL |
op_type es DDL y ddl está presente |
Procese el objeto y la sentencia y, a continuación, espere que se refresquen los metadatos/esquema cuando corresponda. |
Registros de esquema JSON
Por defecto, Data Streams emite un registro de esquema JSON antes de enviar un tipo de registro que requiera ese esquema. Los registros de esquema utilizan el borrador 4 del esquema JSON y contienen los siguientes campos:
| Campo |
Significado |
id |
Identificador estable para el tipo de esquema y, para los esquemas específicos de la tabla, el objeto calificado. |
title |
Título de esquema legible por el usuario. |
$schema |
Dialecto de esquema JSON, http://json-schema.org/draft-04/schema#. |
type |
Tipo JSON de nivel superior, object. |
definitions |
Definiciones de metadatos o columnas reutilizables cuando sea necesario. |
properties |
Campos permitidos y sus restricciones. |
required |
Campos necesarios para las instancias del esquema. |
additionalProperties |
Si se aceptan campos no declarados por el esquema. |
Regla de consumidor: no espere que un registro de esquema contenga op_type. Detectarlo por estructura de esquema y id. Se puede volver a enviar un esquema cuando cambien los metadatos de origen o la configuración del flujo.
| Campo |
Subcampos |
Descripción |
op_type |
- |
STREAM_METADATA. |
producer |
name, version |
Identidad del productor de flujo de datos y versión de software. |
database |
name, version, charset, timeZone |
Contexto de base de datos de origen. Tratar los valores como informativos y dependientes de la fuente. |
machine |
node, system, release, version, hardware |
Contexto del sistema operativo del host. |
source |
file, uri, uriHistory cuando esté presente, creationTime, compatibility |
Contexto de proceso o pista de origen. |
Un registro de metadatos de objeto describe la definición de tabla actual utilizada para codificar DML. Tiene op_type: OBJECT_METADATA, qual_table y un objeto columns. Cada columna contiene:
| Atributo de columna |
Descripción |
type |
Clasificación primitiva JSON, como string, number o boolean. Utilice el esquema JSON específico de la tabla para los tipos aceptados completos, incluido null. |
null |
Si la columna de origen puede ser nula según los metadatos capturados. |
key |
Si la columna forma parte de la clave conocida por GoldenGate para el objeto. |
{
"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}
}
}
Registro DML
| Campo por defecto |
Obligatorio por defecto |
Significado |
qual_table |
Sí |
Nombres de tablas totalmente cualificadas. El nombre y la presencia se pueden cambiar con metaFields.qualifiedTable. |
op_type |
Sí |
Cadena de operación. Los valores por defecto son INSERT, UPDATE, DELETE, UPSERT; las cadenas se pueden personalizar. |
op_ts |
Sí |
Registro de hora de operación de origen en formato ISO 8601 en esquemas de flujos de datos actuales. |
xid |
Sí |
Identificador de transacción de origen representado como una cadena. El formato depende del origen. |
pos |
Sí |
Posición de recuperación opaca. Almacene exactamente; no analice. |
before |
Condicional |
Antes de la imagen para las operaciones de actualización y supresión cuando se capturaron las columnas necesarias. Los nombres se pueden personalizar. |
after |
Condicional |
Después de la imagen para las operaciones de inserción y actualización cuando se capturaron las columnas necesarias. Los nombres se pueden personalizar. |
| Metadatos opcionales |
No |
csn, secuencia de operación, indicador de transacción, claves primarias, catálogo/esquema/tabla, registros de hora de procesamiento, tokens, valores de entorno y campos estáticos. |
Matriz de imagen antes y después
| Operación |
before |
after |
Notas |
| INSERT |
Normalmente ausente |
Nueva imagen de fila |
Solo se emiten las columnas disponibles en la pista. |
| UPDATE |
Valores Originales |
Nuevos valores |
El registro de origen y de pista determinan si las imágenes son completas o parciales. |
| SUPRIMIR |
Imagen de fila eliminada |
Normalmente ausente |
Asegúrese de que se capturan las columnas de clave y las columnas de auditoría necesarias. |
| UPSERT |
Dependiente de esquema de tiempo de ejecución |
Imagen de fila resultante |
Utilice el esquema generado y el contrato de operación para el pipeline de origen. |
Ejemplos de 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"}
}
Registro DDL
| Campo |
Significado |
op_type |
DDL. |
op_ts |
Registro de hora de la operación DDL. |
xid |
Identificador de transacción asociado al registro DDL. |
pos |
Posición de recuperación opaca para el registro DDL. |
ddl.object.catalog |
Nombre del catálogo cuando el origen proporciona uno; puede ser una cadena vacía. |
ddl.object.schema |
Esquema o nombre de propietario. |
ddl.object.object |
Nombre de objeto afectado. |
ddl.statement |
Texto DDL truncado si 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)"
}
}
Cuando cloudEventsFormat está activado, el registro GoldenGate se lleva en el miembro data de JSON CloudEvents. Los atributos CloudEvents estándar identifican el evento. Tratar los valores de type, source y id como valores de contrato de tiempo de ejecución e inspeccionar los registros reales y de YAML generados en lugar de codificar ejemplos de otro flujo.
{
"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"}
}
}