Alterar modos de feed no Azure Cosmos DB

APLICA-SE A: NoSQL

O Azure Cosmos DB oferece dois modos de feed de alterações. Cada modo oferece a mesma funcionalidade principal. As diferenças incluem as operações capturadas no feed, os metadados disponíveis para cada alteração e o período de retenção das alterações. Você pode consumir o feed de alterações em modos diferentes em vários aplicativos para o mesmo contêiner do Azure Cosmos DB para atender aos requisitos de cada carga de trabalho. Cada aplicativo de feed de alterações individual só pode ser configurado para ler o feed de alterações em um modo. Consumir o feed de alterações em um modo não proíbe que você consuma o feed de alterações em outro modo em um aplicativo diferente.

Nota

Você tem algum feedback sobre alterar os modos de alimentação? Queremos ouvi-lo! Sinta-se à vontade para compartilhar comentários diretamente com a equipe de engenharia do Azure Cosmos DB: cosmoschangefeed@microsoft.com.

Modo de feed de alteração de versão mais recente

O modo de versão mais recente é um registro persistente de alterações feitas em itens de criações e atualizações. Você obtém a versão mais recente de cada item no contêiner. Por exemplo, se um item for criado e atualizado antes de ler o feed de alterações, somente a versão atualizada aparecerá no feed de alterações. As exclusões não são capturadas como alterações e, quando um item é excluído, ele não está mais disponível no feed. O modo de feed de alteração de versão mais recente é habilitado por padrão e é compatível com todas as contas do Azure Cosmos DB, exceto a API para Tabela e a API para PostgreSQL. Esse modo era anteriormente a maneira padrão de consumir o feed de alterações.

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

O modo Todas as versões e exclusões (visualização) é um registro persistente de todas as alterações nos itens das operações de criação, atualização e exclusão. 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. Por exemplo, se um item for criado e, em seguida, atualizado antes de ler o feed de alterações, as versões de criação e atualização do item aparecerão no feed de alterações. Para ler o 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. Ativar backups contínuos cria todas as versões e exclui o feed de alterações. Você só pode ler as alterações que ocorreram dentro do período de backup contínuo ao usar esse modo de feed de alterações. Este modo só é compatível com o Azure Cosmos DB para contas NoSQL. Saiba mais sobre como se inscrever na pré-visualização.

Alterar casos de uso de feed

O modo de versão mais recente fornece uma maneira fácil de processar alterações históricas e em tempo real para itens em um contêiner com a capacidade de voltar às alterações desde o início do contêiner.

Seguem-se cenários adequados a este modo:

  • Migrações de um contêiner inteiro para um local secundário.

  • Capacidade de reprocessar alterações desde o início do recipiente.

  • Processamento em tempo real de alterações em itens em um contêiner resultantes de operações de criação e atualização.

  • Cargas de trabalho que não precisam capturar exclusões ou alterações intermediárias entre leituras.

Características de cada modo

Além dos recursos comuns em todos os modos de alimentação de alterações, cada modo de alimentação de alterações tem as seguintes características:

  • O feed de alterações inclui operações de inserção e atualização feitas em itens no contêiner.

  • Este modo de alimentação de alterações não regista eliminações. Você pode capturar exclusões definindo um sinalizador de "exclusão suave" dentro de seus itens em vez de excluí-los diretamente. Por exemplo, você pode adicionar um atributo no item chamado deleted com o valor truee, em seguida, definir um tempo de vida (TTL) no item. O feed de alterações o captura como uma atualização e o item é excluído automaticamente quando o TTL expira. Como alternativa, você pode definir um período de expiração finito para seus itens usando o recurso TTL. Com esta solução, você tem que processar as alterações dentro de um intervalo de tempo mais curto do que o período de expiração TTL.

  • Apenas a alteração mais recente para um item específico é incluída no feed de alterações. Alterações intermediárias podem não estar disponíveis.

  • Quando um item é excluído, ele não está mais disponível no feed de alterações.

  • As alterações podem ser sincronizadas a partir de qualquer ponto no tempo, e não há um período fixo de retenção de dados para o qual as alterações estejam disponíveis.

  • Não é possível filtrar o feed de alterações para um tipo específico de operação. Uma alternativa possível é adicionar um "marcador suave" no item para atualizações e filtrar com base no marcador quando você processa itens no feed de alterações.

  • O ponto de partida para ler o feed de alterações pode ser desde o início do contêiner, de um ponto no tempo, de "agora" ou de um ponto de verificação específico. A precisão do tempo de início é de aproximadamente cinco segundos.

Trabalhar com o feed de alterações

Cada modo é compatível com diferentes métodos para ler o feed de alterações para cada idioma.

Você pode usar as seguintes maneiras de consumir as alterações do feed de alterações no modo de versão mais recente:

Método para ler o feed de alterações .NET Java Python Node.js
Alterar modelo de receção de alimentação Sim Sim Sim Sim
Alterar processador de alimentação Sim Sim No Não
Gatilho do Azure Functions Sim Sim Sim Sim

Analisar o objeto de resposta

No modo de versão mais recente, o objeto de resposta padrão é uma matriz de itens que foram alterados. Cada item contém os metadados padrão para qualquer item do Azure Cosmos DB, incluindo _etag e _ts, com a adição de uma nova propriedade, _lsn.

O _etag formato é interno e você não deve depender dele, porque ele pode mudar a qualquer momento. _ts é uma modificação ou um carimbo de data e hora de criação. Você pode usar _ts para comparação cronológica. _lsn é um ID de lote que é adicionado apenas para o feed de alterações que representa o ID da transação. Muitos itens podem ter o mesmo _lsn.

ETag on FeedResponse é diferente do que _etag você vê no item. _etag é um identificador interno e é usado para controle de simultaneidade. A _etag propriedade representa a versão do item, enquanto a ETag propriedade é usada para sequenciar o feed.

Próximos passos

Saiba mais sobre o feed de alterações nos seguintes artigos: