Bases de Datos NoSQL · Bases de Datos

Teorema CAP y consistencia

Razonar el reparto entre consistencia, disponibilidad y tolerancia a particiones para elegir el modo de una base de datos distribuida según el caso de uso.

Teorema CAP y consistencia

No se puede todo, siempre Consistencia, disponibilidad y tolerancia a particiones son tres deseos que la realidad de la red no permite cumplir a la vez sin margen. En cuanto un cable se parte o un nodo se queda mudo, hay que elegir entre responder igual con datos posiblemente viejos o negarse hasta reconciliarse.

Las tres letras

Consistencia significa que toda lectura ve lo último escrito, como si hubiera una única copia de la verdad. Disponibilidad promete que toda petición recibe respuesta, sin colgarse. Tolerancia a particiones admite que el enlace entre nodos falle y aun así el sistema siga operando.

Por qué el reparto

Una partición separa los nodos en islas que dejan de hablarse. Si insistes en consistencia, las islas no pueden confirmar escrituras y deben rechazar peticiones: pierdes disponibilidad. Si insistes en responder siempre, cada isla sigue aceptando cambios por su cuenta y divergen: pierdes consistencia.

CP frente a AP

Los sistemas CP priorizan la coherencia y se muestran reacios bajo partición; encajan en contabilidad o reservas donde un dato contradictorio es inaceptable. Los AP siguen sirviendo y reconcilian después; valen para comentarios o carritos donde perder una actualización molesta menos que un error en pantalla.

Un triángulo de tres nodos de colores unidos por aristas firmes; una grieta lo parte por la mitad y la arista que la cruza se dibuja punteada y desvaída.
Bajo una partición de red —la grieta— el triángulo no puede mantener sus tres promesas a la vez: una arista tiene que aflojarse y el diseñador decide cuál.

Consistencia eventual

Entre los extremos hay gradaciones. La consistencia eventual admite lecturas algo desfasadas que convergen cuando el sistema se estabiliza, y se refuerza con garantías intermedias según se necesite.

Qué elegir

El matiz del consenso

CAP habla del comportamiento bajo partición, no del rendimiento en el día a día: en condiciones normales la mayoría de sistemas ofrecen ambas cosas. La decisión real es qué promesa sostienes cuando la red falla, porque en ese instante no hay tercera vía.

Latencia y coherencia

Incluso sin partición, replicar lejos añade retardo: confirmar en todos los nodos cuesta tiempo. Muchas decisiones de consistencia son en el fondo decisiones de latencia aceptable para el usuario.

Errores frecuentes

Ejemplo resuelto: elegir modo para un carrito de compras

Un comercio electrónico reparte su catálogo y carritos en varios nodos y debe fijar su promesa. El razonamiento:

  1. Identificar la operación: añadir y leer artículos del carrito, con datos que admiten desfases breves.
  2. Valorar el riesgo: un carrito algo desactualizado molesta poco; una página que no responde, mucho.
  3. Sostener la promesa: disponibilidad por encima de consistencia fuerte durante una partición.
  4. Configurar el almacén como AP, con reconciliación posterior de los duplicados.
  5. Vigilar la excepción: el momento del pago sí exige comprobación consistente de stock.

¿Para qué sirve en la realidad?

Todo servicio con nodos en varias regiones —redes sociales, carritos, sesiones, cuotas de marcador— vive el dilema de CAP a diario: decidir por operación qué cede cuando la red parte evita sorpresas peores, del saldo duplicado al botón que no responde.

Durante una partición de red, un sistema que decide seguir aceptando lecturas y escrituras en cada isla aunque puedan divergir está priorizando:

CAP afirma que en ausencia de particiones es imposible tener a la vez consistencia y disponibilidad.

CAP

C significa que...
toda lectura ve lo último escrito
A promete que...
toda petición recibe respuesta
P admite que...
el enlace entre nodos puede fallar
Un sistema CP bajo partición tiende a...
rechazar peticiones
Perder consistencia y converger después se llama...
consistencia eventual

Ordena los pasos del razonamiento al elegir el modo de una base distribuida:

Contexto
Riesgo
Promesa
Modo

CAP theorem
Exposición clásica del trilema y de la demostración de la imposibilidad de los tres a la vez.

Une cada letra del trilema con su promesa.

No se puede todo, siempre

# Teorema CAP
## Consistencia
### una sola verdad
### rechazar si dudas
## Disponibilidad
### responder siempre
### aceptar desfase
## Partición
### la que dispara el dilema
### rara pero inevitable
## Decisión
### CP contabilidad
### AP carritos y likes

Qué es el teorema CAP
Explicación editorial en español del trilema con sus matices y ejemplos.

Un cajero reparte saldo entre dos oficinas que dejan de comunicarse y ambas permiten retirar. ¿CP o AP? ¿Qué decides y qué le explicas al cliente que se queda sin respuesta?