Menu Docs
Página inicial do Docs
/
MongoDB Kafka Connector
/ /

Aplicar esquemas

Nesta página

  • Visão geral
  • Default Schemas
  • Esquema Chave
  • Esquema de valor
  • Esquemas para documentos transformados
  • Especificar esquemas
  • Infer a Schema

Neste guia, você pode aprender como aplicar esquemas a documentos recebidos em um conector de origem MongoDB Kafka.

Existem dois tipos de esquema no Kafka Connect, esquema chave e esquema de valor. O Kafka Connect envia mensagens ao Apache Kafka contendo seu valor e uma chave. Um esquema de chave impõe uma estrutura para chaves em mensagens enviadas ao Apache Kafka. Um esquema de valor impõe uma estrutura para valores em mensagens enviadas ao Apache Kafka.

Importante

Nota sobre terminologia

Este guia usa a definição Apache Kafka da palavra "chave", que difere ligeiramente da definição BSON. Em BSON, uma "chave" é um identificador de string exclusivo para um campo em um documento.

No Apache Kafka, uma "chave" é uma array de bytes enviada em uma mensagem usada para determinar em qual partição de um tópico a mensagem deve ser gravada. As chaves Kafka podem ser duplicadas de outras chaves ou null.

A especificação de esquemas no conector é opcional e você pode especificar qualquer uma das seguintes combinações de esquemas:

  • Apenas um esquema de valor

  • Somente um esquema chave

  • Um esquema de valor e um esquema de chave

  • No schemas

Dica

Benefícios do esquema

Para ver uma discussão sobre os benefícios de usar esquemas com o Kafka Connect, consulte este artigo do Confluent.

Se você quiser enviar dados pelo Apache Kafka com um formato de dados específico, como Apache Avro ou JSON schema, consulte o guia Conversores .

Para saber mais sobre chaves e valores no Apache Kafka, consulte a introdução oficial do Apache Kafka.

O conector fornece dois esquemas padrão:

Para saber mais sobre eventos de alteração, consulte nosso guia de change streams.

Para saber mais sobre esquemas padrão, consulte os esquemas padrão aqui no código-fonte MongoDB Kafka Connector.

O conector fornece um esquema de chave padrão para o campo _id de alterar documentos de evento. Você deve usar o esquema de chave padrão, a menos que remova o campo _id do documento de eventos de alteração usando uma das transformações descritas neste guia aqui.

Se você especificar uma dessas transformações e quiser usar um esquema de chaves para os documentos recebidos, deverá especificar um esquema de chaves conforme descrito na seção Especificar um esquema deste guia.

Você pode habilitar o esquema de chave padrão com a seguinte opção:

output.format.key=schema

O conector fornece um esquema de valores padrão para documentos de eventos de alteração. Você deve usar o esquema de valores padrão, a menos que transforme seus documentos de eventos de alteração conforme descrito neste guia.

Se você especificar uma dessas transformações e quiser usar um esquema de valores para os documentos recebidos, deverá usar um dos mecanismos descritos na seção esquemas para documentos transformados deste guia.

Você pode habilitar o esquema de valor padrão com a seguinte opção:

output.format.value=schema

Existem duas maneiras de transformar seus documentos de eventos de mudança em um conector de origem:

  • A opção publish.full.document.only=true

  • Um pipeline de agregação que modifica a estrutura dos documentos de eventos de alteração

Se você transformar seus documentos de eventos de alteração MongoDB, deverá fazer o seguinte para aplicar esquemas:

Para saber mais sobre as opções de configuração anteriores, consulte a página Propriedades do Change stream.

Você pode utilizar a sintaxe Avro para definir esquemas de documentos recebidos. Clique nas abas a seguir para saber como definir um esquema para as chaves e valores do documento:

output.format.key=schema
output.schema.key=<your avro schema>
output.format.value=schema
output.schema.value=<your avro schema>

Para visualizar um exemplo que demonstra como especificar um esquema, consulte o exemplo de uso Especificar um esquema.

Para saber mais sobre o Avro Schema, consulte o guia Formatos de Dados.

Importante

Conversores

Para enviar seus dados com codificação binário Avro através do Apache Kafka, é necessário utilizar um conversor Avro. Para obter mais informações, consulte o guia sobre Conversores.

Você pode fazer com que seu conector de origem infira um esquema para documentos recebidos. Essa opção funciona bem para desenvolvimento e para fontes de dados que não mudam de estrutura com frequência, mas para a maioria das implantações de produção, recomendamos que você especifique um esquema.

Você pode ter o conector inferindo um esquema especificando as seguintes opções:

output.format.value=schema
output.schema.infer.value=true

O conector de origem pode inferir esquemas para documentos recebidos que contêm documentos aninhados armazenados em arrays. A partir da versão 1.9 do conector, a inferência de esquema coletará o tipo de dados apropriado para os campos em vez de usar como padrão uma atribuição de tipo string se houver diferenças entre os documentos aninhados descritos pelos seguintes casos:

  • Um campo está presente em um documento, mas ausente em outro.

  • Um campo está presente em um documento, mas null em outro.

  • Um campo é uma array com elementos de qualquer tipo em um documento, mas tem elementos adicionais ou elementos de outros tipos de dados em outro.

  • Um campo é uma array com elementos de qualquer tipo em um documento, mas uma array vazia em outro.

Se os tipos de campo entrarem em conflito entre documentos aninhados, o conector empurrará o conflito para baixo até o esquema para o campo e padronizará para uma tarefa de tipo string.

Observação

Não é possível inferir esquema de chave

O conector não suporta a inferência de esquema de chaves. Se quiser usar um esquema de chaves e transformar os documentos de eventos de alteração do MongoDB, será necessário especificar um esquema de chaves, conforme descrito na seção especificar esquemas deste guia.

Voltar

Fluxos de alterações