Escolher nível certo de consistênciaChoose the right consistency level

Bancos de dados distribuídos que dependem de replicação para alta disponibilidade, baixa latência ou ambos realizam o equilíbrio fundamental entre a coerência de leitura versus a disponibilidade, a latência e a taxa de transferência.Distributed databases relying on replication for high availability, low latency or both, make the fundamental tradeoff between the read consistency vs. availability, latency, and throughput. A maioria dos bancos de dados distribuídos comercialmente disponíveis solicita que os desenvolvedores escolham entre os dois modelos de consistência extremos: consistência forte e consistência eventual .Most commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. Azure Cosmos DB permite que os desenvolvedores escolham entre os cinco modelos de consistência bem definidos: forte, desatualização limitada, sessão, prefixo consistente e eventual.Azure Cosmos DB allows developers to choose among the five well-defined consistency models: strong, bounded staleness, session, consistent prefix and eventual. Cada um desses modelos de coerência é bem definido, intuitivo e pode ser usado para cenários específicos do mundo real.Each of these consistency models is well-defined, intuitive and can be used for specific real-world scenarios. Cada um dos cinco modelos de consistência fornece compensações de desempenho e disponibilidade precisas e é apoiado por SLAs abrangentes.Each of the five consistency models provide precise availability and performance tradeoffs and are backed by comprehensive SLAs. As considerações simples a seguir lhe ajudarão a fazer a escolha certa em muitos cenários comuns.The following simple considerations will help you make the right choice in many common scenarios.

SQL API e a API de TabelaSQL API and Table API

Considere os seguintes pontos se seu aplicativo for criado usando a API do SQL ou API de Tabela:Consider the following points if your application is built using SQL API or Table API:

  • Para muitos cenários do mundo real, a coerência de sessão é ideal e é a opção recomendada.For many real-world scenarios, session consistency is optimal and it's the recommended option. Para obter mais informações, consulte Como gerenciar o token de sessão do seu aplicativo.For more information, see, How-to manage session token for your application.

  • Se o seu aplicativo exigir consistência forte, é recomendável que você use um nível de consistência de stality limitado.If your application requires strong consistency, it is recommended that you use bounded staleness consistency level.

  • Se você precisar de garantias de consistência mais rigorosas do que as fornecidas pela consistência da sessão e pela latência de um dígito de milissegundo para gravações, é recomendável usar o nível de consistência do stality limitado.If you need stricter consistency guarantees than the ones provided by session consistency and single-digit-millisecond latency for writes, it is recommended that you use bounded staleness consistency level.

  • Se o seu aplicativo exigir consistência eventual, é recomendável usar um nível consistente de consistência de prefixo.If your application requires eventual consistency, it is recommended that you use consistent prefix consistency level.

  • Se você precisar de garantias de consistência menos rígidas do que as fornecidas pela consistência da sessão, é recomendável usar um nível consistente de consistência de prefixo.If you need less strict consistency guarantees than the ones provided by session consistency, it is recommended that you use consistent prefix consistency level.

  • Se você precisar da maior disponibilidade e da menor latência, use o nível de consistência eventual.If you need the highest availability and the lowest latency, then use eventual consistency level.

  • Se você precisar de mais durabilidade de dados ainda sem perder desempenho, poderá criar um nível de consistência personalizado na camada de aplicativo.If you need even higher data durability without sacrificing performance, you can create a custom consistency level at the application layer. Para obter mais informações, confira Como implementar a sincronização personalizada em seus aplicativos.For more information see, How-to implement custom synchronization in your applications.

APIs Cassandra, MongoDB e GremlinCassandra, MongoDB, and Gremlin APIs

Garantias de consistência na práticaConsistency guarantees in practice

Na prática, muitas vezes você pode obter garantias de consistência mais fortes.In practice, you may often get stronger consistency guarantees. Garantias de consistência para uma operação de leitura correspondem à atualização e ordenação do estado do banco de dados que você solicita.Consistency guarantees for a read operation correspond to the freshness and ordering of the database state that you request. Consistência de leitura é vinculada ao pedido e a propagação das operações de gravação/atualização.Read-consistency is tied to the ordering and propagation of the write/update operations.

  • Quando o nível de coerência é definido como desatualização limitada, o Cosmos DB garante que os clientes sempre leiam o valor de uma gravação anterior, com um limitado pela janela de desatualização.When the consistency level is set to bounded staleness, Cosmos DB guarantees that the clients always read the value of a previous write, with a lag bounded by the staleness window.

  • Quando o nível de consistência é definido como strong, a janela de staleness é equivalente a zero e os clientes têm a garantia de ler o último valor confirmado da operação de gravação.When the consistency level is set to strong, the staleness window is equivalent to zero, and the clients are guaranteed to read the latest committed value of the write operation.

  • Para os três níveis de coerência restantes, a janela de desatualização limitada depende muito da carga de trabalho.For the remaining three consistency levels, the staleness window is largely dependent on your workload. Por exemplo, se não houver operações de gravação no banco de dados, é provável que uma operação de leitura com eventuais, sessão ou consistência consistente prefira resultados como uma operação de leitura com um nível de consistência forte.For example, if there are no write operations on the database, a read operation with eventual, session, or consistent prefix consistency levels is likely to yield the same results as a read operation with strong consistency level.

Se sua conta do Azure Cosmos estiver configurada com um nível de consistência diferente da consistência forte, você poderá descobrir a probabilidade de que os clientes possam obter leituras fortes e consistentes para suas cargas de trabalho examinando o Probabilistic limitado Métrica de desatualização (PBS).If your Azure Cosmos account is configured with a consistency level other than the strong consistency, you can find out the probability that your clients may get strong and consistent reads for your workloads by looking at the Probabilistically Bounded Staleness (PBS) metric. Essa métrica é exposta no portal do Azure, para obter mais informações, consulte métrica Monitor Probabilistic Bounded Staleness (PBS).This metric is exposed in the Azure portal, to learn more, see Monitor Probabilistically Bounded Staleness (PBS) metric.

A desatualização limitada probabilística mostra o quão eventual é a sua coerência eventual.Probabilistic bounded staleness shows how eventual is your eventual consistency. Essa métrica fornece uma percepção da frequência com que você pode obter uma consistência mais forte do que o nível de consistência configurado atualmente em sua conta do Azure Cosmos.This metric provides an insight into how often you can get a stronger consistency than the consistency level that you have currently configured on your Azure Cosmos account. Em outras palavras, você pode ver a probabilidade (medida em milissegundos) de obter leituras fortemente consistentes para uma combinação de regiões de gravação e leitura.In other words, you can see the probability (measured in milliseconds) of getting strongly consistent reads for a combination of write and read regions.

Próximas etapasNext steps

Leia mais sobre os níveis de coerência nos seguintes artigos:Read more about the consistency levels in the following articles: