A Captura de dados de alterações no repositório analítico do Azure Cosmos DB

APLICA-SE AO: NoSQL MongoDB

A CDA (captura de dados de alterações) no repositório analítico do Azure Cosmos DB permite consumir com eficiência um feed contínuo e incremental de dados (inseridos, atualizados e excluídos) alterados do repositório analítico. Perfeitamente integrado com o Azure Synapse e Azure Data Factory, ele oferece uma experiência escalonável sem código para um alto volume de dados. Como o recurso de captura de dados de alterações é baseado no repositório analítico, ele não consome RUs provisionadas, não afeta suas cargas de trabalho transacionais, oferece menor latência e tem o TCO mais baixo.

O recurso de captura de dados de alterações no repositório analítico do Azure Cosmos DB pode gravar em vários coletores usando um fluxo de dados do Azure Synapse ou do Azure Data Factory.

Diagram of the analytical store in Azure Cosmos DB and how it, with change data capture, can write to various first and third-party target services.

Para obter mais informações sobre os tipos de coletores suportados em um fluxo de dados de mapeamento, confira tipos de coletor suportados por fluxo de dados.

Além de fornecer feed de dados incrementais do repositório analítico para destinos diversos, a captura de dados de alterações dá suporte aos seguintes recursos:

  • Compatível com a captura de exclusões e atualizações intermediárias
  • Capacidade de filtrar o feed de alterações para um tipo específico de operação (Inserir | Atualizar | Excluir | TTL)
  • Dá suporte à aplicação de filtros, projeções e transformações no Feed de alterações por meio da consulta de origem
  • Vários feeds de alterações no mesmo contêiner podem ser consumidos simultaneamente
  • Cada alteração no contêiner aparece somente uma vez no feed de captura de dados de alterações e os pontos de verificação são gerenciados internamente para você
  • As alterações podem ser sincronizadas “desde o início” ou “a partir de um determinado carimbo de data/hora” ou “a partir de agora”
  • Não há um limite para o período fixo de retenção de dados para os quais as alterações estão disponíveis

Captura de dados incremental eficiente com pontos de verificação gerenciados internamente

Cada alteração no contêiner do Cosmos DB aparece somente uma vez no feed de CDC e os pontos de verificação são gerenciados internamente para você. Isso ajuda a resolver as desvantagens abaixo do padrão comum de uso de pontos de verificação personalizados com base no valor "_ts":

  • O filtro "_ts" é aplicado aos arquivos de dados que nem sempre garantem a verificação mínima de dados. Os pontos de verificação baseados em GLSN gerenciados internamente na nova funcionalidade CDC garantem que a identificação de dados incremental seja feita, apenas com base nos metadados e, portanto, garantem a verificação mínima de dados em cada fluxo.

  • O processo de sincronização do repositório analítico não garante a ordenação baseada em "_ts", o que significa que pode haver casos em que o "_ts" de um registro incremental é menor que o último "_ts" com ponto de verificação e pode ser perdido no fluxo incremental. O novo CDC não considera "_ts" para identificar os registros incrementais e, portanto, garante que nenhum dos registros incrementais seja perdido.

Recursos

A captura de dados de alterações no repositório analítico do Azure Cosmos DB é compatível com os principais recursos a seguir.

Capturando as alterações desde o início

Quando a opção Start from beginning é selecionada, a carga inicial inclui um instantâneo completo dos dados do contêiner na primeira execução e os dados alterados ou incrementais são capturados em execuções subsequentes. Isso é limitado pela propriedade analytical TTL e os documentos removidos por TTL do repositório analítico não estão incluídos no feed de alterações. Exemplo: imagine um contêiner com analytical TTL definido para 31536000 segundos, o que equivale a 1 ano. Se você criar um processo CDC para esse contêiner, apenas documentos com menos de 1 ano serão incluídos na carga inicial.

Capturando as alterações de um determinado carimbo de data/hora

Quando a opção Start from timestamp é selecionada, a carga inicial processa os dados do carimbo de data/hora fornecido e os dados incrementais ou alterados são capturados em execuções subsequentes. Esse processo também é limitado pela propriedade analytical TTL.

Capturando as alterações a partir de agora

Quando a opção Start from timestamp estiver selecionada, todas as operações anteriores do contêiner não serão capturadas.

Capturando exclusões, atualizações intermediárias e TTLs

O recurso de captura de dados de alterações para o repositório analítico captura exclusões, atualizações intermediárias e operações de TTL. As exclusões e atualizações capturadas podem ser aplicadas em Coletores que dão suporte a operações de exclusão e atualização. O valor {_rid} identifica exclusivamente os registros e, portanto, especificar {_rid} como coluna de chave no lado do Coletor, as operações de atualização e exclusão seriam refletidas no Coletor.

Observe que as operações de TTL são consideradas exclusões. Verifique a seção configurações de origem para verificar os detalhes do modo e o suporte para atualizações intermediárias e exclusões em coletores.

Filtrar o feed de alterações para um tipo específico de operação

Não é possível filtrar o feed de captura de dados de alterações para um tipo específico de operação. Por exemplo, você pode capturar seletivamente as operações de inserção e atualização, ignorando assim as operações de exclusão de usuário e exclusão de TTL.

Aplicação de filtros, projeções e transformações no Feed de alterações por meio da consulta de origem

Opcionalmente, você pode usar uma consulta de origem para especificar filtros, projeções e transformações, que seriam propagados para o repositório analítico de colunas. Aqui está um exemplo de consulta de origem que captura apenas registros incrementais com o filtro Category = 'Urban'. Este exemplo de consulta projeta apenas cinco campos e aplica uma transformação simples:

SELECT ProductId, Product, Segment, concat(Manufacturer, '-', Category) as ManufacturerCategory
FROM c 
WHERE Category = 'Urban'

Vários processos de CDA

Você pode criar vários processos para consumir a CDA no repositório analítico. Esta abordagem traz flexibilidade para dar suporte a diferentes cenários e requisitos. Enquanto um processo pode não ter transformações de dados e vários coletores, outro pode ter nivelamento de dados e um coletor. E podem ser executados em paralelo.

Isolamento de taxa de transferência, menor latência e TCO menor

As operações no repositório analítico do Cosmos DB não consomem as RUs provisionadas e, portanto, não afetam suas cargas de trabalho transacionais. A captura de dados de alterações com o repositório analítico também tem menor latência e menor TCO. A menor latência é atribuída ao repositório analítico, permitindo um melhor paralelismo para processamento de dados e reduz o TCO geral, permitindo impulsionar a eficiência de custos nessas condições econômicas em rápida mudança.

Cenários

Aqui estão cenários comuns em que você pode usar a captura de dados de alterações e o repositório analítico.

Consumo de dados incrementais do Cosmos DB

Você pode usar a captura de dados de alterações do repositório analítico se estiver usando ou planejando usar:

  • Captura de dados incrementais usando Fluxos de dados do Azure Data Factory ou atividade Copy.
  • Processamento em lotes avulsos usando o Azure Data Factory.
  • Acesso aos dados do Cosmos DB
    • O repositório analítico tem latência de até 2 minutos para sincronizar dados de armazenamento transacional. Você pode agendar Fluxos de dados no Azure Data Factory a cada minuto.
    • Se você precisar transmitir sem a latência acima, recomendamos usar o recurso de feed de alterações do repositório transacional.
  • Captura de exclusões, alterações incrementais e aplicação de filtros em dados do Cosmos DB.
    • Se você estiver usando disparadores do Azure Functions ou qualquer outra opção com feed de alterações e quiser capturar exclusões, alterações incrementais, aplicar transformações etc., recomendamos a captura de dados de alterações no repositório analítico.

Feed incremental para a plataforma analítica de sua escolha

A funcionalidade de captura de dados de alterações permite uma solução analítica de ponta a ponta que oferece a flexibilidade de usar dados do Azure Cosmos DB com qualquer um dos tipos de coletores suportados. Para obter mais informações sobre os tipos de coletores suportados, consulte tipos de coletor suportados pelo fluxo de dados. A captura de dados de alterações também permite que você leve dados do Azure Cosmos DB para um data lake centralizado e junte os dados com dados de outras fontes diversas. Você pode nivelar os dados, particioná-los e aplicar mais transformações no Azure Synapse Analytics ou no Azure Data Factory.

Captura de dados de alterações em contêineres do Azure Cosmos DB for MongoDB

A interface de serviço vinculado para a API para MongoDB ainda não está disponível nos fluxos de dados do Azure Data Factory. Você pode usar sua API para o ponto de extremidade de conta do MongoDB com a interface de serviço vinculado do Azure Cosmos DB for NoSQL como uma solução alternativa até que o serviço vinculado do Mongo tenha suporte direto.

Na interface de um novo serviço vinculado no NoSQL, selecione Inserir Manualmente para fornecer as informações da conta do Azure Cosmos DB. Aqui, use o ponto de extremidade do documento NoSQL da conta (Exemplo: https://<account-name>.documents.azure.com:443/) em vez do ponto de extremidade do Mongo DB (Exemplo: mongodb://<account-name>.mongo.cosmos.azure.com:10255/)

Próximas etapas