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 | ||||||
Java | ||||||
Python | ||||||
Nó/JavaScript |
Trabalhar com feed de alterações
Você pode trabalhar com o feed de alterações usando as seguintes opções:
- Usando o feed de alterações com o Azure Functions
- Usando o feed de alterações com o processador de alimentação de alterações
- Usando o feed de alterações com o modelo pull
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.
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: