Teorema CAP

El teorema CAP establece que un sistema distribuido solo puede ofrecer dos de las tres características deseadas: consistencia, disponibilidad y tolerancia a particiones (CAP).

Teorema CAP

Consistencia

La consistencia significa que todos los clientes ven los mismos datos al mismo tiempo, sin importar a qué nodo se conecten. Para que esto suceda, cada vez que se escriben datos en un nodo, estos deben ser reenviados o replicados instantáneamente en todos los nodos del sistema antes de que la escritura se considere "exitosa".

Disponibilidad

La disponibilidad significa que cualquier cliente que realice una solicitud de datos obtiene una respuesta, incluso si uno o más nodos están fuera de servicio.

Tolerancia a particiones

La tolerancia a particiones significa que el sistema sigue funcionando a pesar de la pérdida de mensajes o fallos parciales. Un sistema tolerante a particiones puede soportar cualquier cantidad de fallos en la red que no resulten en un fallo total del sistema. Los datos se replican suficientemente en diferentes nodos y redes para mantener el sistema operativo durante interrupciones intermitentes.

Compromiso entre consistencia y disponibilidad

En el mundo físico, no se puede garantizar la estabilidad de una red, por lo que las bases de datos distribuidas deben elegir la tolerancia a particiones (P). Esto implica un compromiso entre consistencia (C) y disponibilidad (A).

Base de datos CA

Una base de datos CA proporciona consistencia y disponibilidad en todos los nodos. No puede hacerlo si hay una partición entre dos nodos del sistema, y por lo tanto no ofrece tolerancia a fallos.

Ejemplo: PostgreSQL, MariaDB.

Base de datos CP

Una base de datos CP proporciona consistencia y tolerancia a particiones a costa de la disponibilidad. Cuando ocurre una partición entre dos nodos, el sistema debe desconectar el nodo no consistente hasta que se resuelva la partición.

Ejemplo: MongoDB, Apache HBase.

Base de datos AP

Una base de datos AP ofrece disponibilidad y tolerancia a particiones a costa de la consistencia. Cuando ocurre una partición, todos los nodos permanecen disponibles, pero los nodos en el extremo incorrecto de la partición pueden devolver una versión más antigua de los datos. Cuando se resuelve la partición, las bases de datos AP generalmente sincronizan los nodos para reparar las inconsistencias.

Ejemplo: Apache Cassandra, CouchDB.

Teorema PACELC

El teorema PACELC es una extensión del teorema CAP. El teorema CAP establece que, en caso de partición de red (P) en un sistema distribuido, se debe elegir entre disponibilidad (A) y consistencia (C).

PACELC amplía el teorema CAP introduciendo la latencia (L) como un atributo adicional de un sistema distribuido. El teorema establece que, incluso cuando el sistema funciona normalmente en ausencia de particiones, se debe elegir entre latencia (L) y consistencia (C).

El teorema PACELC fue descrito por primera vez por Daniel J. Abadi.

Teorema PACELC

El teorema PACELC se desarrolló para abordar una limitación clave del teorema CAP, ya que este no contempla el rendimiento o la latencia.

Por ejemplo, según el teorema CAP, una base de datos se puede considerar disponible si una consulta devuelve una respuesta después de 30 días. Evidentemente, tal latencia sería inaceptable en cualquier aplicación del mundo real.