Compreender as políticas de resolução de conflitos

Concluído

Pronto para uso, o recurso de gravação em várias regiões do Azure Cosmos DB tem o gerenciamento automático de conflitos integrado. Os conflitos podem ocorrer quando os clientes atualizam simultaneamente o mesmo item em várias regiões. Existem três tipos de conflitos:

Tipo Descrição
Inserir Esse conflito ocorre quando mais de um item é inserido simultaneamente com o mesmo identificador exclusivo em várias regiões
Replace Os conflitos de substituição ocorrem quando vários aplicativos cliente atualizam o mesmo item simultaneamente em regiões separadas
Eliminar Conflitos de exclusão ocorrem quando um cliente está tentando atualizar um item que foi excluído em outra região ao mesmo tempo

A política de resolução de conflitos padrão no Azure Cosmos DB é Last Write Wins. Esta política usa o carimbo de data/hora (_ts) para determinar qual item foi escrito por último. Em termos simples, se vários itens estiverem em conflito, o item com o maior valor para a propriedade _ts vencerá. No caso de um conflito de exclusão, a operação para excluir um item sempre vencerá outras operações.

Embora a propriedade _ts seja o padrão para a política Last Write Wins, você pode configurar qualquer propriedade numérica para essa política configurando um caminho de resolução de conflitos. Você pode usar o SDK do .NET para Azure Cosmos DB para NoSQL para configurar o caminho de resolução de conflitos personalizado.

Neste exemplo, um novo contêiner chamado products é criado com um caminho de resolução de conflitos personalizado de /sortableTimestamp.

Database database = client.GetDatabase("cosmicworks");

ContainerProperties properties = new("products", "/categoryId")
{
    ConflictResolutionPolicy = new ConflictResolutionPolicy()
    {
        Mode = ConflictResolutionMode.LastWriterWins,
        ResolutionPath = "/sortableTimestamp",
    }
};

Container container = database.CreateContainerIfNotExistsAsync(properties);

Nota

Você só pode definir uma política de resolução de conflitos em contêineres recém-criados.