Teorema CAP

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

En Ciencias de la computación, el teorema CAP, también llamado Conjetura de Brewer, enuncia que es imposible para un sistema de cómputo distribuido garantizar simultáneamente:[1][2]

  • La consistencia (Consistency), es decir, que todos los nodos vean la misma información al mismo tiempo.
  • La disponibilidad (Availability), es decir, la garantía de que cada petición a un nodo reciba una confirmación de si ha sido o no resuelta satisfactoriamente.
  • La tolerancia al particionado (Partition Tolerance), es decir, el sistema sigue funcionado incluso si algunos nodos fallan.

Según el teorema, un sistema no puede asegurar más de dos de estas tres características simultáneamente.[3]

Historia[editar]

El teorema comenzó como una conjetura, presentada por Eric Brewer, de la Universidad de Berkeley en el año 2000 durante el Simposio de Principios de Computación Distribuida (PODC, en inglés).[4]​ En 2002, Seth Gilbert y Nancy Lynch, del MIT, publicaron una demostración formal de la conjetura, convirtiéndola en un teorema.[1]

Explicación[editar]

Ningún sistema distribuido está a salvo de las fallas de la red, por lo tanto , la partición de la red generalmente tiene que ser tolerada. En presencia de una partición, una se queda con dos opciones: consistencia o disponibilidad . Al elegir la consistencia sobre la disponibilidad, el sistema devolverá un error o un tiempo de espera si no se puede garantizar que la información particular esté actualizada debido a la partición de la red. Al elegir la disponibilidad por coherencia, el sistema siempre procesará la consulta e intentará devolver la versión disponible más reciente de la información, incluso si no puede garantizar que esté actualizada debido a la partición de la red.

En ausencia de falla de la red, es decir, cuando el sistema distribuido se está ejecutando normalmente, se puede satisfacer tanto la disponibilidad como la consistencia.

Con frecuencia, la CAP se malinterpreta como si uno tuviera que elegir abandonar una de las tres garantías en todo momento. De hecho, la elección es realmente entre la consistencia y la disponibilidad solo cuando ocurre una partición de red o falla; en cualquier otro momento, no hay que hacer concesiones.

Los sistemas de base de datos diseñados teniendo en cuenta las garantías tradicionales de ACID , como RDBMS, eligen la consistencia sobre la disponibilidad, mientras que los sistemas diseñados en torno a la filosofía BASE , comunes en el movimiento NoSQL , por ejemplo, eligen la disponibilidad sobre la consistencia.

El teorema de CAPELC se basa en CAP al afirmar que, incluso en ausencia de partición, se produce otra compensación entre la latencia y la consistencia.

Ejemplos[editar]

Según satisfagan unos criterios u otros, podemos encontrar:

Referencias[editar]

  1. a b Nancy Lynch and Seth Gilbert, “Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services”, ACM SIGACT News, Volume 33 Issue 2 (2002), pg. 51-59.
  2. "Brewer's CAP Theorem", julianbrowne.com, Retrieved 02-Mar-2010
  3. "Brewers CAP theorem on distributed systems", royans.net
  4. Eric Brewer, "Towards Robust Distributed Systems"

Enlaces externos[editar]