Feed de alterações no Azure Cosmos DB

APLICA-SE AO: NoSQL MongoDB Cassandra Gremlin

O feed de alterações no Azure Cosmos DB é um registro persistente de alterações em um contêiner na ordem em que ocorrem. O suporte para feed de alterações no Azure Cosmos DB funciona ouvindo um contêiner do Azure Cosmos DB para quaisquer alterações. Ele gera a lista classificada de documentos que foram alterados na ordem em que eles foram modificados. As alterações mantidas podem ser processadas de maneira assíncrona e incremental, e a saída pode ser distribuída em um ou mais consumidores para processamento paralelo.

Saiba mais sobre padrões de design do feed de alterações.

SDKs do cliente e APIs com suporte

Atualmente, há suporte para o recurso feed de alterações nos SDKs do Azure Cosmos DB a seguir.

Drivers do cliente NoSQL Apache Cassandra MongoDB Apache Gremlin Tabela PostgreSQL
.NET Ícone indicando que há suporte para esse recurso no SDK do .NET para a API for NoSQL. Ícone indicando que há suporte para esse recurso no SDK do .NET para a API for Apache Cassandra. Ícone indicando que há suporte para esse recurso no SDK do .NET para a API for MongoDB. Ícone indicando que há suporte para esse recurso no SDK do .NET para a API for Apache Gremlin. Ícone indicando que não há suporte para esse recurso no SDK do .NET para a API for Table. Ícone indicando que não há suporte para esse recurso no SDK do .NET para a API for PostgreSQL.
Java Ícone indicando que há suporte para esse recurso no SDK do Java para a API for NoSQL. Ícone indicando que há suporte para esse recurso no SDK do Java para a API for Apache Cassandra. Ícone indicando que há suporte para esse recurso no SDK do Java para a API for MongoDB. Ícone indicando que há suporte para esse recurso no SDK do Java para a API for Apache Gremlin. Ícone indicando que não há suporte para esse recurso no SDK do Java para a API for Table. Ícone indicando que não há suporte para esse recurso no SDK do Java para a API for PostgreSQL.
Python Ícone indicando que há suporte para esse recurso no SDK do Python para a API for NoSQL. Ícone indicando que há suporte para esse recurso no SDK do Python para a API for Apache Cassandra. Ícone indicando que há suporte para esse recurso no SDK do Python para a API for MongoDB. Ícone indicando que há suporte para esse recurso no SDK do Python para a API for Apache Gremlin. Ícone indicando que não há suporte para esse recurso no SDK do Python para a API for Table. Ícone indicando que não há suporte para esse recurso no SDK do Python para a API for PostgreSQL.
Node/JavaScript Ícone indicando que há suporte para esse recurso no SDK do JavaScript para a API for NoSQL. Ícone indicando que há suporte para esse recurso no SDK do JavaScript para a API for Apache Cassandra. Ícone indicando que há suporte para esse recurso no SDK do JavaScript para a API for MongoDB. Ícone indicando que há suporte para esse recurso no SDK do JavaScript para a API for Apache Gremlin. Ícone indicando que não há suporte para esse recurso no SDK do JavaScript para a API for Table. Ícone indicando que não há suporte para esse recurso no SDK do JavaScript para a API for PostgreSQL.

Trabalhando com o feed de alterações

É possível trabalhar com o feed de alterações usando as seguintes opções:

O feed de alterações está disponível para intervalos de chaves de partição de um contêiner do Azure Cosmos DB. Dessa forma, ele pode ser distribuído entre um ou mais consumidores para processamento paralelo, conforme exibido na imagem abaixo.

Processamento distribuído do feed de alterações do Azure Cosmos DB

Observação

Os intervalos de chaves de partição são mapeados para partições físicas ao usar o processador do feed de alterações e FeedRanges ao usar o modelo de pull.

Recursos do feed de alterações

  • O feed de alterações é habilitado por padrão para todas as contas do Azure Cosmos DB.

  • Há vários modos de feed de alterações, alguns dos quais exigem configuração adicional para habilitação.

  • É possível usar a taxa de transferência provisionada para ler do feed de alterações, assim como qualquer outra operação do Azure Cosmos DB, em qualquer uma das regiões associadas à conta do Azure Cosmos DB.

  • O feed de alterações inclui inserções e operações de atualização feitas em itens dentro do contêiner. Se você estiver usando todas as versões e o modo de exclusões (versão prévia), também receberá alterações de operações de exclusão e expirações de TTL.

  • Cada alteração aparece exatamente uma vez no feed de alterações, sendo que os clientes devem gerenciar a lógica do ponto de verificação. Se desejar evitar a complexidade de gerenciar pontos de verificação, o processador do feed de alterações fornecerá um ponto de verificação automático e semântica "pelo menos uma vez". Para obter mais informações, consulte o artigo usando o feed de alterações com processador de feed de alterações.

  • As alterações estão disponíveis em paralelo para as faixas das chaves de partição de um contêiner do Azure Cosmos DB. Essa funcionalidade permite que vários consumidores processem as alterações de grandes contêineres em paralelo.

  • Os aplicativos podem solicitar vários feeds de alterações no mesmo contêiner simultaneamente.

  • O ponto de partida para o feed de alterações pode ser personalizado e opções diferentes estão disponíveis para cada modo.

Ordem de classificação de itens no feed de alterações

Os itens do feed de alterações são organizados na ordem da hora de modificação. Essa ordem de classificação é garantida por chave de partição e não há ordens garantidas entre os valores de chave de partição.

Observação

Para contas de gravação de várias regiões, há dois carimbos de data/hora:

  • A época do servidor em que o registro foi gravado na região local. Isso é registrado como _ts.
  • A época em que a ausência de um conflito foi confirmada ou o conflito foi resolvido na região do hub para esse registro. Isso é registrado como crts.

Os itens do feed de alterações vêm na ordem registrada por crts.

Feed de alterações em contas do Azure Cosmos DB em várias regiões

Em uma conta do Azure Cosmos DB de várias regiões, as alterações em uma região estão disponíveis em todas as regiões. Se uma região de gravação faz failover, o feed de alterações funciona em toda a operação de failover manual e é contíguo. Para contas com várias regiões de gravação, não há garantia de quando as alterações estarão disponíveis. As alterações de entrada no mesmo documento poderão ser descartadas no modo de versão mais recente se houver uma alteração mais recente em outra região, e todas as alterações serão capturadas em todas as versões e no modo de exclusões.

Alterar modos de feed

Há dois modos de feed de alterações disponíveis: modo de versão mais recente e todas as versões e modo de exclusões. O modo no qual o feed de alterações é lido determina de quais alterações de operações são capturadas e os metadados disponíveis para cada alteração. É possível consumir o feed de alterações em modos diferentes em vários aplicativos para o mesmo contêiner do Azure Cosmos DB.

Modo de versão mais recente

No modo de versão mais recente do feed de alterações, você vê a alteração mais recente de uma inserção ou atualização para todos os itens no feed e o feed está disponível para a vida útil do contêiner. Não há indicação se uma determinada alteração é de uma inserção ou de uma operação de atualização e as exclusões não são capturadas. As alterações podem ser lidas a partir de qualquer ponto no tempo, desde a origem do contêiner. No entanto, se um item é excluído, ele é removido do feed de alterações. Confira o artigo sobre o modo de versão mais recente do feed de alterações para saber mais.

Modo de todas as versões e exclusões (versão prévia)

O modo de todas as versões e exclusões permite que você veja todas as alterações em itens de criações, atualizações e exclusões. Você obtém um registro de cada alteração em itens na ordem em que ocorreu, incluindo alterações intermediárias em um item entre as leituras do feed de alterações. Para ler o feed de alterações no modo de todas as versões e exclusões, você deve ter backups contínuos configurados para sua conta do Azure Cosmos DB, que cria o feed de alterações de todas as versões e exclusões do Azure Cosmos DBs. Nesse modo, você só pode ler as alterações que ocorreram dentro do período de backup contínuo configurado para a conta. Confira o artigo modo de todas as versões e exclusões do feed de alterações para saber mais, incluindo como se inscrever na versão prévia.

Feed de alterações em APIs para Cassandra e MongoDB

A funcionalidade do feed de alterações é transmitida como fluxos de alteração na API do MongoDB e consulta com predicado na API do Cassandra. Para saber mais sobre os detalhes de implementação para a API do MongoDB, consulte Fluxos de alteração na API do Azure Cosmos DB para MongoDB.

O Apache Cassandra nativo fornece a CDC (captura de dados de alterações), um mecanismo para sinalizar tabelas específicas para arquivamento e rejeição das gravações nessas tabelas assim que um tamanho configurável em disco para o log da CDC for atingido. O recurso do feed de alterações no Azure Cosmos DB for Apache Cassandra aprimora a capacidade de consultar as alterações com o predicado por meio de CQL. Para saber mais sobre os detalhes de implementação, consulte Feed de alterações no Azure Cosmos DB for Apache Cassandra.

Como medir o consumo da unidade de solicitação do feed de alterações

O feed de alterações está disponível em todos os contêineres, independentemente de ser utilizado. O único custo para o feed de alterações é a taxa de transferência provisionada do contêiner de concessão e as RUs para cada solicitação. Use o Azure Monitor para medir o consumo de RU (unidade de solicitação) do feed de alterações. Para mais informações, confira monitorar a taxa de transferência ou o uso da unidade de solicitação no Azure Cosmos DB.

Próximas etapas

Agora, você pode prosseguir para saber mais sobre o feed de alterações nos seguintes artigos: