Selección del nivel de coherencia adecuado
Cada uno de los modelos de coherencia se puede usar para escenarios reales específicos. Cada uno de ellos ofrece un equilibrio preciso entre disponibilidad y rendimiento, respaldado por acuerdos de nivel de servicio completos. Las siguientes consideraciones sencillas le ayudan a tomar la decisión correcta en muchos escenarios comunes.
Configuración del nivel de coherencia predeterminado
Puede configurar el nivel de coherencia predeterminado de su cuenta de Azure Cosmos DB en cualquier momento. El nivel de coherencia predeterminado configurado en su cuenta se aplica a todas las bases de datos y contenedores de Azure Cosmos DB de esa cuenta. 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.
La coherencia de lectura se aplica a una sola operación de lectura limitada a una partición lógica. Un cliente remoto o un procedimiento almacenado pueden emitir la operación de lectura.
Garantías asociadas a los niveles de coherencia
Azure Cosmos DB garantiza que el 100 por ciento de las solicitudes de lectura cumplan con la garantía de coherencia del nivel de coherencia que elija. Las definiciones precisas de los cinco niveles de coherencia de Azure Cosmos DB que usan el lenguaje de especificación TLA+ se proporcionan en el repositorio azure-cosmos-tla de GitHub.
Coherencia fuerte
La coherencia fuerte ofrece una garantía de linearización. La linearización hace referencia a la capacidad de servir solicitudes simultáneamente. Se garantiza que las lecturas devuelven la versión más reciente de un elemento. Un cliente nunca ve una escritura no confirmada ni parcial. Se garantiza que los usuarios siempre leerán la escritura confirmada más reciente.
Coherencia de obsolescencia limitada
En la coherencia de obsolescencia limitada, el retraso de los datos entre dos regiones siempre es menor que una cantidad especificada. La cantidad puede ser de "K" versiones (es decir, "actualizaciones") de un elemento o de "T" intervalos de tiempo, lo que se alcance primero. En otras palabras, cuando se elige la obsolescencia limitada, la "caducidad" máxima de los datos en cualquier región puede configurarse de dos maneras:
- El número de versiones (K) del elemento
- El intervalo de tiempo (T) que las lecturas pueden retrasarse con respecto a las escrituras
La obsolescencia limitada es beneficiosa principalmente para las cuentas de escritura de una sola región con dos o más regiones. Si el retraso de datos en una región (determinado por partición física) excede el valor de obsolescencia configurado, las escrituras en esa partición se limitarán hasta que la obsolescencia vuelva a estar dentro del límite superior configurado.
En el caso de una cuenta de una sola región, la obsolescencia limitada proporciona las mismas garantías de coherencia de escritura que la coherencia posible y de sesión. Con la obsolescencia limitada, los datos se replican en una mayoría local (tres réplicas de un conjunto de cuatro) de la única región.
Coherencia de sesión
En la coherencia de sesión, en una sesión de cliente individual, se garantiza que las lecturas respeten las garantías de lectura de las escrituras y escritura tras las lecturas. Esta garantía da por hecho una sola sesión de "escritor" o el uso compartido del token de sesión entre varios escritores.
Al igual que todos los niveles de coherencia más débiles que los seguros, las escrituras se replican en un mínimo de tres réplicas (en un conjunto de cuatro réplicas) en la región local, con replicación asincrónica en todas las demás regiones.
Coherencia de prefijo coherente
En prefijo coherente, las actualizaciones hechas como escrituras de documentos únicos ven la coherencia final. Novedades hechas como un lote dentro de una transacción, se devuelven coherentes con la transacción en la que se confirmaron. Las operaciones de escritura dentro de una transacción de varios documentos siempre están visibles juntas.
Supongamos que se realizan dos operaciones de escritura en los documentos T1 y T2, dentro de las transacciones T1 y T2. Cuando el cliente realiza una lectura en cualquier réplica, el usuario ve "Doc 1 v1 y Doc 2 v1" o "Doc 1 v2 y Doc 2 v2", pero nunca "Doc 1 v1 y Doc 2 v2" o "Doc 1 v2 y Doc 2 v1" en la misma operación de lectura o consulta.
Coherencia final
En la coherencia final, no hay ninguna garantía de ordenación para las lecturas. En ausencia de escrituras adicionales, las réplicas terminarán por converger.
La coherencia final es la forma más débil de coherencia, ya que un cliente puede leer los valores que son más antiguos que los que había leído antes. La coherencia final es ideal cuando la aplicación no requiere ninguna garantía de ordenación. Algunos ejemplos son el recuento de retweets, el número de Me gusta o comentarios no encadenados.