Niveles de coherencia en Azure Cosmos DBConsistency levels in Azure Cosmos DB

Las bases de datos distribuidas que dependen de la replicación para su alta disponibilidad, su baja latencia o ambas, constituyen el compromiso fundamental entre la coherencia de lectura y la disponibilidad, la latencia y el rendimiento.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. Muchas bases de datos distribuidas comercialmente disponibles pedir a los programadores elegir entre los dos modelos de coherencia extreme: seguro coherencia y eventual coherencia.Most commercially available distributed databases ask developers to choose between the two extreme consistency models: strong consistency and eventual consistency. El  linearización o el modelo de coherencia fuerte es el estándar de oro de programabilidad de datos.The  linearizability or the strong consistency model is the gold standard of data programmability. Pero se agrega a un precio de una latencia mayor (en estado estable) y una disponibilidad reducida (durante los errores).But it adds a price of higher latency (in steady state) and reduced availability (during failures). Por otro lado, la coherencia eventual ofrece una mayor disponibilidad y un mejor rendimiento, pero hace más difícil de programar aplicaciones.On the other hand, eventual consistency offers higher availability and better performance, but makes it hard to program applications.

Azure Cosmos DB se aproxima a la coherencia de datos como un espectro de opciones en lugar de como dos extremos.Azure Cosmos DB approaches data consistency as a spectrum of choices instead of two extremes. Coherencia y coherencia final se encuentran en los extremos del espectro, pero existen muchas opciones de coherencia a lo largo del espectro.Strong consistency and eventual consistency are at the ends of the spectrum, but there are many consistency choices along the spectrum. Los desarrolladores pueden usar estas opciones para realizar opciones precisas e inconvenientes granulares con respecto a la alta disponibilidad y rendimiento.Developers can use these options to make precise choices and granular tradeoffs with respect to high availability and performance.

Con Azure Cosmos DB, los desarrolladores pueden elegir entre cinco modelos de coherencia bien definidos en el espectro de coherencia.With Azure Cosmos DB, developers can choose from five well-defined consistency models on the consistency spectrum. De más seguro a más moderada, los modelos incluyen seguro, obsolescencia, sesión, prefijo coherentey eventual coherencia.From strongest to more relaxed, the models include strong, bounded staleness, session, consistent prefix, and eventual consistency. Los modelos están bien definidos e intuitivo y pueden utilizarse para escenarios específicos del mundo real.The models are well-defined and intuitive and can be used for specific real-world scenarios. Cada modelo proporciona contrapartidas entre disponibilidad y rendimiento y está respaldado por los SLA.Each model provides availability and performance tradeoffs and is backed by the SLAs. La siguiente imagen muestra los niveles de coherencia diferentes como un espectro.The following image shows the different consistency levels as a spectrum.

Coherencia como un espectro

Los niveles de coherencia son independientes de la región y se garantiza que todas las operaciones independientemente de la región desde la que las lecturas y escrituras se sirven, el número de regiones asociadas con su cuenta de Azure Cosmos, o si su cuenta está configurada con una sola o varias regiones de escritura.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 la coherencia de lecturaScope of the read consistency

La coherencia de lectura se aplica a una operación de lectura limitada a un intervalo de claves de partición o una partición lógica.Read consistency applies to a single read operation scoped within a partition-key range or a logical partition. Un cliente remoto o un procedimiento almacenado pueden emitir la operación de lectura.The read operation can be issued by a remote client or a stored procedure.

Configuración del nivel de coherencia predeterminadoConfigure the default consistency level

Puede configurar el nivel de coherencia predeterminado de su cuenta de Azure Cosmos en cualquier momento.You can configure the default consistency level on your Azure Cosmos account at any time. El nivel de coherencia predeterminado configurado en su cuenta se aplica a todas las bases de datos de Azure Cosmos y contenedores en esa cuenta.The default consistency level configured on your account applies to all Azure Cosmos databases and containers under that account. Todas las operaciones de lectura y consulta que se emitan con arreglo a un contenedor o una base de datos usan el nivel de coherencia especificado de forma predeterminada.All reads and queries issued against a container or a database use the specified consistency level by default. Para más información, consulte cómo configurar el nivel de coherencia predeterminado.To learn more, see how to configure the default consistency level.

Garantías asociadas a los niveles de coherenciaGuarantees associated with consistency levels

Los Acuerdos de Nivel de Servicio que proporciona Azure Cosmos DB garantizan que el 100 por ciento de las solicitudes de lectura cumplan con la garantía de coherencia en cualquier nivel de coherencia que elija.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. Una solicitud de lectura cumple el Acuerdo de Nivel de Servicio de coherencia si se satisfacen todas las garantías de coherencia asociadas al nivel de coherencia.A read request meets the consistency SLA if all the consistency guarantees associated with the consistency level are satisfied. Las definiciones precisas de los cinco niveles de coherencia en Azure Cosmos DB mediante el lenguaje de especificación de TLA + se proporcionan en el azure-cosmos-tla repositorio de GitHub.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.

Aquí se describe la semántica de los cinco niveles de coherencia:The semantics of the five consistency levels are described here:

  • Alta: La coherencia fuerte ofrece una garantía de linealidad.Strong: Strong consistency offers a linearizability guarantee. Se garantiza que las lecturas devuelven la versión más reciente de un elemento.The reads are guaranteed to return the most recent committed version of an item. Un cliente nunca ve una escritura no confirmada ni parcial.A client never sees an uncommitted or partial write. Se garantiza que los usuarios siempre leerán la escritura confirmada más reciente.Users are always guaranteed to read the latest committed write.

  • De obsolescencia entrelazada: Se garantiza que las lecturas respetan la garantía de prefijo coherente.Bounded staleness: The reads are guaranteed to honor the consistent-prefix guarantee. Las lecturas podrían retrasarse hasta quedar respecto a las escrituras a lo sumo "K" versiones (es decir, "actualizaciones") de un elemento o por "T" intervalo de tiempo.The reads might lag behind writes by at most "K" versions (i.e., "updates") of an item or by "T" time interval. En otras palabras, cuando se elige la obsolescencia limitada, la "obsolescencia" puede configurarse de dos maneras:In other words, when you choose bounded staleness, the "staleness" can be configured in two ways:

    • El número de versiones (K) del elementoThe number of versions (K) of the item
    • El intervalo de tiempo (T) por las lecturas podrían retrasarse de las operaciones de escrituraThe time interval (T) by which the reads might lag behind the writes

    La obsolescencia limitada ofrece un orden global total, excepto dentro de la "ventana de obsolescencia".Bounded staleness offers total global order except within the "staleness window." La garantía de lectura monotónica existe dentro de una región, tanto dentro como fuera de la ventana de obsolescencia.The monotonic read guarantees exist within a region both inside and outside the staleness window. Coherencia fuerte tiene la misma semántica que ofrecen obsolescencia limitada.Strong consistency has the same semantics as the one offered by bounded staleness. La ventana de obsolescencia es igual a cero.The staleness window is equal to zero. La obsolescencia limitada también se conoce como linealidad retardada.Bounded staleness is also referred to as time-delayed linearizability. Cuando un cliente realiza las operaciones de lectura de una región que acepta escrituras, las garantías de coherencia de obsolescencia son idénticas a esas garantías por la coherencia fuerte.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.

  • Sesión: Se garantiza que las lecturas respetan las garantías de prefijo coherente (suponiendo que hay una sesión de "escritor" única), lecturas monotónicas, escrituras monotónicas, lectura de la escritura y escritura tras las lecturas.Session: The 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. La coherencia de sesión se limita a una sesión de cliente.Session consistency is scoped to a client session.

  • De prefijo coherente: Las actualizaciones que se devuelven contienen prefijos para todas las actualizaciones, sin espacios.Consistent prefix: Updates that are returned contain some prefix of all the updates, with no gaps. Nivel de coherencia de prefijo coherente garantiza que las lecturas nunca vean escrituras de desorden.Consistent prefix consistency level guarantees that reads never see out-of-order writes.

  • Ocasional: No hay ninguna garantía de ordenación para las lecturas.Eventual: There's no ordering guarantee for reads. En ausencia de escrituras adicionales, las réplicas terminarán por converger.In the absence of any further writes, the replicas eventually converge.

Niveles de coherencia explicados a través del béisbolConsistency levels explained through baseball

Tomemos como ejemplo un escenario de un juego de béisbol.Let's take a baseball game scenario as an example. Imagine una secuencia de escrituras que representa el marcador de un juego de béisbol.Imagine a sequence of writes that represent the score from a baseball game. El típico marcador de dos líneas con el resultado de cada entrada se describe en el documento Replicated data consistency through baseball (Descripción de la coherencia de datos mediante el béisbol).The inning-by-inning line score is described in the Replicated data consistency through baseball paper. Este juego de béisbol hipotético actualmente está en la mitad de la séptima entrada,This hypothetical baseball game is currently in the middle of the seventh inning. es decir, la entrada de la suerte.It's the seventh-inning stretch. Los visitantes están detrás de con una puntuación de 2 a 5 tal como se muestra a continuación:The visitors are behind with a score of 2 to 5 as shown below:

11 22 33 44 55 66 77 88 99 CarrerasRuns
VisitanteVisitors 00 00 11 00 11 00 00 22
LocalHome 11 00 11 11 00 22 55

Un contenedor de Cosmos Azure contiene los totales de ejecución para los equipos de inicio y los visitantes.An Azure Cosmos container holds the run totals for the visitors and home teams. Mientras el partido está en curso, las diferentes garantías de lectura pueden tener como resultado que los clientes lean diferentes marcadores.While the game is in progress, different read guarantees might result in clients reading different scores. En la siguiente tabla se enumera el conjunto completo de marcadores que se puede devolver con la lectura de los marcadores del equipo visitante y el equipo local con cada uno de los cinco niveles de garantía de coherencia.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. El marcador del equipo visitante aparece primero.The visitors' score is listed first. Los distintos valores devueltos posibles están separados por comas.Different possible return values are separated by commas.

Nivel de coherenciaConsistency level Puntúa (visitantes, principal)Scores (Visitors, Home)
FuerteStrong 2-52-5
Obsolescencia limitadaBounded staleness Loos marcadores van como máximo con una entrada de retraso: 2-3, 2-4, 2-5Scores that are at most one inning out of date: 2-3, 2-4, 2-5
De sesiónSession
  • Para el agente de escritura: 2-5For the writer: 2-5
  • Para cualquier otro que no sea el agente de escritura: 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-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
  • Después de la lectura de 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
De prefijo coherenteConsistent prefix 0-0, 0-1, 1-1, 1-2, 1-3, 2-3, 2-4, 2-50-0, 0-1, 1-1, 1-2, 1-3, 2-3, 2-4, 2-5
PosibleEventual 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-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

Lecturas adicionalesAdditional reading

Para más información sobre los conceptos de coherencia, lea los artículos siguientes:To learn more about consistency concepts, read the following articles:

Pasos siguientesNext steps

Para más información sobre los niveles de coherencia de Azure Cosmos DB, lea los artículos siguientes:To learn more about consistency levels in Azure Cosmos DB, read the following articles: