Compartilhar via


Feed de alterações no Azure Cosmos DB

O feed de alterações no Azure Cosmos DB é um registro persistente de alterações em um contêiner na ordem em que as alterações 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.

Para saber mais, veja Padrões de design do feed de alterações no Azure Cosmos DB.

APIs com suporte e SDKs de cliente

Atualmente, o recurso de feed de alterações tem suporte nos seguintes SDKs do Azure Cosmos DB.

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.

Trabalhar com o feed de alterações

Você pode 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. Isso permite que ele seja distribuído entre um ou mais consumidores para processamento paralelo, conforme mostrado na imagem a seguir.

Diagrama mostrando o 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 extra para habilitar.

  • É 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 processador de feed de alterações no Azure Cosmos DB.

  • 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 usando qualquer modo 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. Itens gravados no escopo de um lote transacional, procedimento armazenado ou solicitação de modo de execução em massa têm o mesmo horário de modificação, e as alterações dentro desse escopo podem ser entregues em qualquer ordem.

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.
  • O marco temporal 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 serão 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.

Modos do feed de alterações

Há dois modos de feed de alterações disponíveis: modo versão mais recente e modo todas as versões e exclusões. O modo como o feed de alterações é lido determina de quais operações as mudanças são capturadas e os metadados disponíveis para cada mudança. É 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 for excluído, ele será removido do feed de alterações. Para saber mais, confira o modo mais recente de fluxo de alterações de versão.

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 o feed de alterações no Azure Cosmos DB para Apache Cassandra.

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 (unidades de solicitação) de cada solicitação. Use o Azure Monitor para medir o consumo de RU do feed de alterações. Para obter mais informações, consulte Como monitorar a taxa de transferência ou solicitar o uso da unidade de uma operação.

Próximas etapas

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