Feed de alterações no Azure Cosmos DB

APLICA-SE A: 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 do feed de alterações no Azure Cosmos DB funciona através da escuta de alterações num contentor do Azure Cosmos DB. Em seguida, disponibiliza a lista ordenada dos documentos que foram alterados, pela ordem pela qual foram modificados. As alterações persistentes podem ser processadas de forma assíncrona e incremental, e a saída pode ser distribuída entre um ou mais consumidores para processamento paralelo.

Saiba mais sobre como alterar padrões de design de feed.

APIs suportadas e SDKs de cliente

O recurso de feed de alterações é atualmente suportado nos seguintes SDKs do Azure Cosmos DB.

Drivers de cliente NoSQL Apache Cassandra MongoDB Apache Gremlin Tabela PostgreSQL
.NET Ícone que indica que esse recurso é suportado no SDK do .NET para a API para NoSQL. Ícone que indica que esse recurso é suportado no SDK do .NET para a API do Apache Cassandra. Ícone que indica que esse recurso é suportado no SDK do .NET para a API do MongoDB. Ícone que indica que esse recurso é suportado no SDK do .NET para a API do Apache Gremlin. Ícone que indica que esse recurso não é suportado no SDK do .NET para a API para Tabela. Ícone que indica que esse recurso não é suportado no SDK do .NET para a API para PostgreSQL.
Java Ícone que indica que esse recurso é suportado no Java SDK para a API para NoSQL. Ícone indicando que esse recurso é suportado no Java SDK para a API do Apache Cassandra. Ícone que indica que esse recurso é suportado no Java SDK para a API do MongoDB. Ícone indicando que esse recurso é suportado no Java SDK para a API do Apache Gremlin. Ícone que indica que esse recurso não é suportado no Java SDK para a API for Table. Ícone que indica que esse recurso não é suportado no Java SDK para a API para PostgreSQL.
Python Ícone que indica que esse recurso é suportado no SDK do Python para a API para NoSQL. Ícone indicando que esse recurso é suportado no SDK do Python para a API do Apache Cassandra. Ícone que indica que esse recurso é suportado no SDK do Python para a API do MongoDB. Ícone indicando que esse recurso é suportado no SDK do Python para a API do Apache Gremlin. Ícone que indica que esse recurso não é suportado no SDK do Python para a API for Table. Ícone que indica que esse recurso não é suportado no SDK do Python para a API para PostgreSQL.
Nó/JavaScript Ícone que indica que esse recurso é suportado no SDK JavaScript para a API para NoSQL. Ícone indicando que esse recurso é suportado no SDK JavaScript para a API do Apache Cassandra. Ícone que indica que esse recurso é suportado no SDK JavaScript para a API do MongoDB. Ícone que indica que este recurso é suportado no SDK JavaScript para a API do Apache Gremlin. Ícone que indica que esse recurso não é suportado no SDK JavaScript para a API para Tabela. Ícone que indica que esse recurso não é suportado no SDK JavaScript para a API para PostgreSQL.

Trabalhar com 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, como mostra a imagem abaixo.

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

Nota

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

Características do feed de alterações

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

  • Existem vários modos de alimentação de alterações, alguns dos quais requerem configuração adicional para serem ativados.

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

  • O feed de alterações inclui operações de inserção e atualização feitas em itens dentro do contêiner. Se você estiver usando todas as versões e o modo de exclusão (visualização), também obterá 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, e os clientes devem gerenciar a lógica de ponto de verificação. Se você quiser evitar a complexidade do gerenciamento de pontos de verificação, o processador de alimentação de alterações fornece 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 o processador de feed de alterações.

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

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

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

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

Os itens de feed de alteração vêm na ordem de seu tempo de modificação. Essa ordem de classificação é garantida por chave de partição e não há ordem garantida nos valores da chave de partição.

Nota

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 escrito na região local. Isto é registado como _ts.
  • A época em que a ausência de um conflito foi confirmada, ou o conflito foi resolvido na região central para esse registro. Isto é registado como crts.

Os itens de feed de alteração vêm na ordem registrada por crts.

Alterar feed em contas do Azure Cosmos DB de 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 falhar, o feed de alterações funcionará em toda a operação manual de failover e será 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 recebidas no mesmo documento podem 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ão.

Alterar modos de alimentação

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

Modo de versão mais recente

No modo de alimentação de alteração de versão mais recente, 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 durante toda 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 momento, desde a origem do seu contentor. No entanto, se um item for excluído, ele será removido do feed de alterações. Consulte o artigo mais recente sobre o modo de alimentação de alteração de versão para saber mais.

Todas as versões e modo de exclusão (visualização)

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

Alterar feed em APIs para Cassandra e MongoDB

A funcionalidade de feed de alterações é apresentada como fluxo de alterações na API para MongoDB e Query com predicado na API para Cassandra. Para saber mais sobre os detalhes de implementação da API para MongoDB, consulte Change streams na API do Azure Cosmos DB para MongoDB.

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

Medição do consumo da unidade de solicitação de alimentação de mudança

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

Próximos passos

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