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 confirmada más reciente de un elemento. Un cliente nunca ve una escritura no confirmada o parcial. Siempre se garantiza que los usuarios lean la última escritura confirmada.
Coherencia de obsolescencia limitada
En la coherencia de obsolescencia limitada, el desfase de datos entre dos regiones cualesquiera es siempre inferior a 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) de las lecturas puede ir por detrás de las escrituras
La inmovilización limitada es beneficiosa sobre todo 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.
Para una cuenta de una sola región, la Obsolescencia limitada ofrece las mismas garantías de coherencia de escritura que una Coherencia de sesión y eventual. Con la Obsolescencia limitada, los datos se replican a una mayoría local (tres réplicas en un conjunto de cuatro réplicas) en la región única.
Coherencia de sesión
En la coherencia de sesión, dentro de una única sesión de cliente, se garantiza que las lecturas respeten las garantías de leer tus propias escrituras y la escritura sigue a la lectura. Esta garantía supone una única sesión de "escritor" o compartir el testigo de sesión para varios escritores.
Como en todos los niveles de coherencia inferiores a Fuerte, las escrituras se replican a un mínimo de tres réplicas (en un conjunto de cuatro réplicas) en la región local, con replicación asíncrona a todas las demás regiones.
Coherencia de prefijo coherente
En el prefijo coherente, las actualizaciones realizadas como escrituras de un solo documento ven la coherencia eventual. Las actualizaciones realizadas por lotes 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 1v2 y Doc 2 v2 ", pero nunca "Doc 1 v1 y Doc 2 v2 " o "Doc 1v2 y Doc 2 v1" para la misma operación de lectura o consulta.
Coherencia final
En la Coherencia eventual, no hay garantía de orden para las lecturas. En ausencia de más operaciones de escritura, las réplicas finalmente convergen.
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.