Escolher o nível de consistência certo

Concluído

A Azure Cosmos DB permite que os desenvolvedores escolham entre os cinco modelos de consistência: forte, limitado, sessão, prefixo consistente e eventual. Cada um destes modelos de consistência pode ser usado para cenários específicos do mundo real. Cada um fornece compensações precisas de disponibilidade e desempenho e são apoiados por SLAs abrangentes. As seguintes considerações simples irão ajudá-lo a fazer a escolha certa em muitos cenários comuns.

API SQL e API de Tabela

Considere os seguintes pontos se a sua aplicação for construída utilizando API SQL ou API de Tabela:

  • Para muitos cenários do mundo real, a consistência da sessão é ótima e é a opção recomendada.

  • Se a sua aplicação necessitar de uma forte consistência, recomenda-se que utilize um nível de consistência desliminado.

  • Se necessitar de garantias de consistência mais rigorosas do que as fornecidas pela consistência da sessão e latência de um dígito milissegundo para as escritas, recomenda-se que utilize um nível de consistência deslimitado.

  • Se a sua aplicação necessitar de uma eventual consistência, recomenda-se que utilize um nível de consistência prefixo consistente.

  • Se necessitar de garantias de consistência menos rigorosas do que as fornecidas pela consistência da sessão, recomenda-se que utilize um nível de consistência consistente do prefixo.

  • Se precisar da produção mais alta e da latência mais baixa, use um nível de consistência eventual.

  • Se precisar de uma durabilidade de dados ainda maior sem sacrificar o desempenho, pode criar um nível de consistência personalizado na camada de aplicação.

Cassandra, MongoDB e ApIs de Gremlin

A Azure Cosmos DB fornece suporte nativo para APIs compatíveis com protocolos de arame para bases de dados populares. Estes incluem MongoDB, Apache Cassandra e Gremlin. Ao utilizar a API Gremlin, é utilizado o nível de consistência padrão configurado na conta Azure Cosmos. Para detalhes sobre o mapeamento de nível de consistência entre Cassandra API ou a API para MongoDB e os níveis de consistência da Azure Cosmos DB ver, mapeamento de consistência cassandra API e API para mapeamento de consistência MongoDB.

Garantias de coerência na prática

Na prática, pode muitas vezes obter garantias de consistência mais fortes. As garantias de consistência para uma operação de leitura correspondem à frescura e ao pedido da base de dados que solicita. A consistência de leitura está ligada à ordem e propagação das operações de escrita/atualização.

  • Quando o nível de consistência é definido para a estagnação limitada, a Cosmos DB garante que os clientes sempre lêem o valor de uma escrita anterior, com um lag limitado pela janela de estagnação.

  • Quando o nível de consistência é definido para forte, a janela de estagnação é equivalente a zero, e os clientes são garantidos para ler o valor mais recente comprometido da operação de escrita.

  • Para os restantes três níveis de consistência, a janela de estagnação depende em grande parte da sua carga de trabalho. Por exemplo, se não houver operações de escrita na base de dados, uma operação de leitura com eventuaisníveis de consistênciado prefixo ou de prefixo é suscetível de produzir os mesmos resultados que uma operação de leitura com forte nível de consistência.

Se a sua conta Azure Cosmos estiver configurada com um nível de consistência diferente da forte consistência, pode descobrir a probabilidade de os seus clientes ficarem fortes e consistentes com leituras para as suas cargas de trabalho, olhando para a métrica Probabilisticamente Limitada ( PBS).

A estagnação deslimia-se probabilística mostra como a sua eventual consistência é eventual. Esta métrica fornece uma visão da frequência com que pode obter uma consistência mais forte do que o nível de consistência que configuraste atualmente na sua conta Azure Cosmos. Por outras palavras, pode-se ver a probabilidade (medida em milissegundos) de obter leituras fortemente consistentes para uma combinação de regiões de escrita e leitura.