Payload e Referência de Esquema
O serviço Data Streams é autodescritivo quando o esquema JSON e os registros de metadados estão ativados. A forma exata do registro pode ser alterada quando os campos de saída são renomeados, os metadados opcionais são ativados, as alterações no modelo de registro ou as alterações nos metadados de origem. Os registros gerados do Esquema JSON YAML AsyncAPI e em banda são as definições de runtime autorizadas.
| Classificação |
Identificação |
Orientação de processamento |
| Registro do esquema |
Contém id, $schema, type e properties |
Cache por id; não roteie como dados de negócios. |
| Metadados de fluxo |
op_type é STREAM_METADATA |
Registre o contexto do produtor e da origem; atualize o diagnóstico quando ele reaparecer. |
| Metadados do objeto |
op_type é OBJECT_METADATA |
Armazene no cache colunas, tipos primitivos, nulidade e flags de chave por qual_table. |
| DML |
op_type é INSERT, UPDATE, DELETE ou UPSERT |
Aplique a alteração de linha de acordo com a semântica antes/depois. |
| DDL |
op_type é DDL e ddl está presente |
Processe o objeto e a instrução e espere metadados/esquema atualizados quando aplicável. |
Registros do Esquema JSON
Por padrão, o serviço Data Streams emite um registro do Esquema JSON antes de enviar um tipo de registro que requer esse esquema. Os registros de esquema usam o rascunho 4 do Esquema JSON e contêm os seguintes campos:
| Campo |
Significado |
id |
Identificador estável para o tipo de esquema e, para esquemas específicos da tabela, o objeto qualificado. |
title |
Título do esquema legível por humanos. |
$schema |
Dialeto do Esquema JSON, http://json-schema.org/draft-04/schema#. |
type |
Tipo de JSON de nível superior, object. |
definitions |
Definições de coluna ou metadados reutilizáveis quando necessário. |
properties |
Campos permitidos e suas restrições. |
required |
Campos obrigatórios para instâncias do esquema. |
additionalProperties |
Se os campos não declarados pelo esquema serão aceitos. |
Regra do consumidor: Não espere que um registro de esquema contenha op_type. Detecte-o por estrutura de esquema e id. Um esquema pode ser enviado novamente quando os metadados de origem ou a configuração do stream forem alterados.
| Campo |
Subcampos |
Descrição |
op_type |
- |
STREAM_METADATA. |
producer |
name, version |
Identidade do produtor do Fluxo de Dados e versão do software. |
database |
name, version, charset, timeZone |
Contexto do banco de dados de origem. Tratar valores como informativos e dependentes de origem. |
machine |
node, system, release, version, hardware |
Contexto do sistema operacional do host. |
source |
file, uri, uriHistory quando presente, creationTime, compatibility |
Trilha de origem ou contexto do processo. |
Um registro de metadados do objeto descreve a definição de tabela atual usada para codificar DML. Ele tem op_type: OBJECT_METADATA, qual_table e um objeto columns. cada coluna contiver:
| Atributo de coluna |
Descrição |
type |
Classificação primitiva JSON, como string, number ou boolean. Use o Esquema JSON específico da tabela para os tipos aceitos completos, incluindo null. |
null |
Se a coluna de origem pode ser nula de acordo com os metadados capturados. |
key |
Se a coluna faz parte da chave conhecida como GoldenGate para o 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 padrão |
Obrigatório por padrão |
Significado |
qual_table |
Sim |
Nome de tabela totalmente qualificado. O nome e a presença podem ser alterados com metaFields.qualifiedTable. |
op_type |
Sim |
String de operação. Os padrões são INSERT, UPDATE, DELETE, UPSERT; as strings podem ser personalizadas. |
op_ts |
Sim |
Timestamp da operação de origem no form ISO 8601 nos esquemas atuais do serviço Data Streams. |
xid |
Sim |
Identificador da transação de origem representado como uma string. O formato é dependente da origem. |
pos |
Sim |
Posição opaca de recuperação. Armazenar exatamente; não analisar. |
before |
Condicional |
Antes da imagem para operações de atualização e exclusão quando as colunas necessárias foram capturadas. O nome pode ser personalizado. |
after |
Condicional |
Após a imagem para operações de inserção e atualização quando as colunas necessárias foram capturadas. O nome pode ser personalizado. |
| Metadados opcionais |
Não |
csn, sequência de operação, indicador de transação, chaves primárias, catálogo/esquema/tabela, timestamps de processamento, tokens, valores de ambiente e campos estáticos. |
Matriz de imagem anterior e posterior
| Operação |
before |
after |
Observações |
| INSERT |
Normalmente ausente |
Nova imagem de linha |
Somente colunas disponíveis na trilha são emitidas. |
| UPDATE |
Valores originais |
Novos valores |
A trilha e o log de origem determinam se as imagens estão completas ou parciais. |
| EXCLUIR |
Imagem de linha excluída |
Normalmente ausente |
Certifique-se de que as colunas-chave e as colunas de auditoria necessárias sejam capturadas. |
| ATUALIZAR |
Dependente do esquema de tempo de execução |
Imagem da linha resultante |
Use o esquema gerado e o contrato de operação para o pipeline de origem. |
Exemplos 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 |
Timestamp da operação DDL. |
xid |
Identificador da transação associado ao registro DDL. |
pos |
Posição de recuperação opaca para o registro DDL. |
ddl.object.catalog |
Nome do catálogo quando a origem fornece um; pode ser uma string vazia. |
ddl.object.schema |
Nome do esquema ou proprietário. |
ddl.object.object |
Nome do objeto afetado. |
ddl.statement |
Texto DDL, truncado se exceder 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 o cloudEventsFormat está ativado, o registro GoldenGate é transportado no membro CloudEvents JSON data. Os atributos CloudEvents padrão identificam o evento. Trate os valores de type, source e id como valores de contrato de runtime e inspecione os registros YAML e reais gerados em vez de exemplos de codificação de outro fluxo.
{
"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"}
}
}