Níveis de consistência no Azure Cosmos DBConsistency levels in Azure Cosmos DB

Bases de dados distribuídas que dependem de replicação para elevada disponibilidade, latência baixa ou ambos, tornam o compromisso fundamental entre a consistência de leitura versus disponibilidade, latência e débito.Distributed databases that rely 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. O transação atômica ou o modelo de consistência forte é o padrão ouro de programação de dados.The linearizability or the strong consistency model is the gold standard of data programmability. Mas ele adiciona um preço de latência mais alta (em estado estacionário) e disponibilidade reduzida (durante falhas).But it adds a price of higher latency (in steady state) and reduced availability (during failures). Por outro lado, a consistência eventual oferece maior disponibilidade e melhor desempenho, mas torna difícil programar aplicativos.On the other hand, eventual consistency offers higher availability and better performance, but makes it hard to program applications.

O Azure Cosmos DB se aproxima de consistência de dados como uma gama de opções em vez de dois extremos.Azure Cosmos DB approaches data consistency as a spectrum of choices instead of two extremes. A consistência forte e a consistência eventual estão nas extremidades do espectro, mas há muitas opções de consistência ao longo do espectro.Strong consistency and eventual consistency are at the ends of the spectrum, but there are many consistency choices along the spectrum. Os desenvolvedores podem usar essas opções para fazer compensações granulares e completas em relação à alta disponibilidade e ao desempenho.Developers can use these options to make precise choices and granular tradeoffs with respect to high availability and performance.

Com o Azure Cosmos DB, os desenvolvedores podem escolher entre cinco modelos de consistência bem definidos do espetro de consistência.With Azure Cosmos DB, developers can choose from five well-defined consistency models on the consistency spectrum. Do mais forte para o mais relaxado, os modelos incluem forte, desatualização limitada, sessão, prefixo consistentee consistência eventual .From strongest to more relaxed, the models include strong, bounded staleness, session, consistent prefix, and eventual consistency. Os modelos são bem definidos e intuitivos e podem ser usados para cenários do mundo real específicos.The models are well-defined and intuitive and can be used for specific real-world scenarios. Cada modelo fornece compensações de desempenho e disponibilidade e é apoiado pelos SLAs.Each model provides availability and performance tradeoffs and is backed by the SLAs. A imagem a seguir mostra os diferentes níveis de consistência como um espectro.The following image shows the different consistency levels as a spectrum.

Consistência como um espectro

Os níveis de consistência são independentes de região e são garantidos para todas as operações, independentemente da região da qual as leituras e gravações são atendidas, o número de regiões associadas à sua conta do Azure Cosmos ou se sua conta está configurada com um único ou várias regiões de gravação.The consistency levels are region-agnostic and are guaranteed for all operations regardless of the region from which the reads and writes are served, the number of regions associated with your Azure Cosmos account, or whether your account is configured with a single or multiple write regions.

Âmbito de consistência de leituraScope of the read consistency

Consistência de leitura aplica-se a uma única operação de leitura no âmbito dentro de um intervalo de chave de partição ou de uma partição lógica.Read consistency applies to a single read operation scoped within a partition-key range or a logical partition. A operação de leitura pode ser emitida por um cliente remoto ou um procedimento armazenado.The read operation can be issued by a remote client or a stored procedure.

Configurar o nível de consistência predefinidoConfigure the default consistency level

Pode configurar o nível predefinido de consistência na sua conta do Cosmos do Azure em qualquer altura.You can configure the default consistency level on your Azure Cosmos account at any time. O nível de consistência padrão configurado em sua conta se aplica a todos os bancos de dados e contêineres do Azure Cosmos sob essa conta.The default consistency level configured on your account applies to all Azure Cosmos databases and containers under that account. Todas as leituras e consultas emitidas relativamente de um contentor ou uma base de dados, utilize o nível de consistência especificado por predefinição.All reads and queries issued against a container or a database use the specified consistency level by default. Para obter mais informações, consulte como configurar o nível de consistência predefinido.To learn more, see how to configure the default consistency level.

Garantias de associadas com níveis de consistênciaGuarantees associated with consistency levels

Os SLAs abrangentes fornecidos pela garantia do Azure Cosmos DB que 100 por cento de pedidos de leitura cumprem a garantia de consistência para qualquer nível de consistência que escolher.The comprehensive SLAs provided by Azure Cosmos DB guarantee that 100 percent of read requests meet the consistency guarantee for any consistency level you choose. Uma solicitação de leitura cumpre a SLA de consistência se todas as garantias de consistência associadas com o nível de consistência são cumpridas.A read request meets the consistency SLA if all the consistency guarantees associated with the consistency level are satisfied. As definições precisas dos cinco níveis de consistência no Azure Cosmos DB usando a linguagem de especificação TLA + são fornecidas no repositório GitHub Azure-Cosmos-TLA .The precise definitions of the five consistency levels in Azure Cosmos DB using the TLA+ specification language are provided in the azure-cosmos-tla GitHub repo.

A semântica dos níveis de cinco consistência é descrita aqui:The semantics of the five consistency levels are described here:

  • Forte: A consistência forte oferece uma garantia transação atômica.Strong: Strong consistency offers a linearizability guarantee. Transação atômica refere-se ao fornecimento de solicitações simultaneamente.Linearizability refers to serving requests concurrently. As leituras são garantidas para devolver a versão mais recente de compromisso de um item.The reads are guaranteed to return the most recent committed version of an item. Um cliente nunca vê uma gravação não consolidada ou parcial.A client never sees an uncommitted or partial write. Os utilizadores garantidos para ler a escrita mais recente confirmada.Users are always guaranteed to read the latest committed write.

  • Desatualização limitada: As leituras são garantidas de honrar a garantia de prefixo consistente.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. As leituras podem atrasar por trás das gravações por no máximo "K" versões (ou seja, "Atualizações") de um item ou por um intervalo de tempo "T" .The reads might lag behind writes by at most "K" versions (i.e., "updates") of an item or by "T" time interval. Em outras palavras, quando você escolhe a desatualização limitada, a "desatualização" pode ser configurada de duas maneiras:In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

    • O número de versões (K) do itemThe number of versions (K) of the item
    • O intervalo de tempo (T) pelo qual as leituras podem atrasar por trás das gravaçõesThe time interval (T) by which the reads might lag behind the writes

    Estagnação limitada ofertas total global do pedido, exceto dentro da "janela limitada".Bounded staleness offers total global order except within the "staleness window." As garantias de leitura monotónica existem dentro de uma região dentro e fora da janela de limitada.The monotonic read guarantees exist within a region both inside and outside the staleness window. A consistência forte tem a mesma semântica que aquela oferecida pela desatualização limitada.Strong consistency has the same semantics as the one offered by bounded staleness. A janela de envelhecimento é igual a zero.The staleness window is equal to zero. Estagnação limitada é também referida como o atraso de tempo de transação atómica.Bounded staleness is also referred to as time-delayed linearizability. Quando um cliente executa operações de leitura em uma região que aceita gravações, as garantias fornecidas pela consistência de desatualização limitada são idênticas às garantias pela consistência forte.When a client performs read operations within a region that accepts writes, the guarantees provided by bounded staleness consistency are identical to those guarantees by the strong consistency.

  • Sessão: Em uma única sessão de cliente, as leituras têm a garantia de honrar o prefixo consistente (supondo uma única sessão de "gravador"), leituras de monotônico, gravações de monotônico, leitura-gravação-gravações e garantias de gravação a seguir-leituras.Session: Within a single client session reads are guaranteed to honor the consistent-prefix (assuming a single “writer” session), monotonic reads, monotonic writes, read-your-writes, and write-follows-reads guarantees. Os clientes fora da sessão que executam gravações verão a consistência eventual.Clients outside of the session performing writes will see eventual consistency.

  • Prefixo consistente: As atualizações que são retornadas contêm algum prefixo de todas as atualizações, sem intervalos.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. O nível de consistência de prefixo consistente garante que as leituras nunca vejam gravações fora de ordem.Consistent prefix consistency level guarantees that reads never see out-of-order writes.

  • Eventual: Não há garantia de classificação para leituras.Eventual: There's no ordering guarantee for reads. Na ausência de qualquer escrita adicional, as réplicas no final de convergência.In the absence of any further writes, the replicas eventually converge.

Níveis de consistência explicadas através do basebolConsistency levels explained through baseball

Por exemplo, vejamos um cenário de jogo de beisebol.Let's take a baseball game scenario as an example. Imagine uma sequência de escritas que representam a pontuação de um jogo de beisebol.Imagine a sequence of writes that represent the score from a baseball game. A pontuação de linha de inning por inning está descrita com o replicados a consistência dos dados através do basebol paper.The inning-by-inning line score is described in the Replicated data consistency through baseball paper. Este jogo de beisebol hipotético é atualmente no meio o sétimo inning.This hypothetical baseball game is currently in the middle of the seventh inning. É a stretch do sétima – inning.It's the seventh-inning stretch. Os visitantes estão por trás com uma pontuação de 2 a 5, conforme mostrado abaixo:The visitors are behind with a score of 2 to 5 as shown below:

11 22 33 44 55 66 77 88 99 ExecuçõesRuns
VisitantesVisitors 00 00 11 00 11 00 00 22
página inicialHome 11 00 11 11 00 22 55

Um contêiner Cosmos do Azure contém os totais de execução para os visitantes e as equipes residenciais.An Azure Cosmos container holds the run totals for the visitors and home teams. Enquanto o jogo estiver em curso, o diferentes ler de garantias podem resultar em leitura pontuações diferentes de clientes.While the game is in progress, different read guarantees might result in clients reading different scores. A tabela seguinte lista o conjunto completo de classificações que pode ser retornado ao ler dos visitantes e pontuações principais com cada um das garantias de consistência de cinco.The following table lists the complete set of scores that might be returned by reading the visitors' and home scores with each of the five consistency guarantees. Classificação dos visitantes é listada em primeiro lugar.The visitors' score is listed first. Diferentes possíveis valores de retorno são separados por vírgulas.Different possible return values are separated by commas.

Nível de consistênciaConsistency level Pontuações (visitantes, início)Scores (Visitors, Home)
ForteStrong 2 a 52-5
Estagnação limitadaBounded staleness Pontuações que estão no máximo um inning desatualizado: 2-3, 2-4, 2-5Scores that are at most one inning out of date: 2-3, 2-4, 2-5
SessãoSession
  • Para o gravador: 2 a 5For the writer: 2-5
  • Para qualquer outra pessoa que não seja o gravador: 0 de 0, 0-1, 0-2, 0 a 3, 4 de 0, 0-5, 1-0, 1-1, 1 a 2, 1 a 3, 1 a 4, 1 a 5, 2-0, 2-1, 2 de 2, 2 e 3, 2 a 4, 2 a 5For anyone other than the writer: 0-0, 0-1, 0-2, 0-3, 0-4, 0-5, 1-0, 1-1, 1-2, 1-3, 1-4, 1-5, 2-0, 2-1, 2-2, 2-3, 2-4, 2-5
  • Depois de ler 1-3: 1-3, 1-4, 1-5, 2-3, 2-4, 2-5After reading 1-3: 1-3, 1-4, 1-5, 2-3, 2-4, 2-5
Prefixo consistenteConsistent prefix 0 de 0, 0-1, 1-1, 1 a 2, 1 a 3, 2 e 3, 2 a 4, 2 a 50-0, 0-1, 1-1, 1-2, 1-3, 2-3, 2-4, 2-5
EventualEventual 0 de 0, 0-1, 0-2, 0 a 3, 4 de 0, 0-5, 1-0, 1-1, 1 a 2, 1 a 3, 1 a 4, 1 a 5, 2-0, 2-1, 2 de 2, 2 e 3, 2 a 4, 2 a 50-0, 0-1, 0-2, 0-3, 0-4, 0-5, 1-0, 1-1, 1-2, 1-3, 1-4, 1-5, 2-0, 2-1, 2-2, 2-3, 2-4, 2-5

Leitura adicionalAdditional reading

Para saber mais sobre os conceitos de consistência, leia os artigos seguintes:To learn more about consistency concepts, read the following articles:

Passos SeguintesNext steps

Para saber mais sobre os níveis de consistência no Azure Cosmos DB, leia os artigos seguintes:To learn more about consistency levels in Azure Cosmos DB, read the following articles: