Qué es el Teorema CAP y Cómo afecta a Bases de Datos — AprenderBigData.com
Si queremos entender las garantías de diseño que ofrecen las bases de datos deberemos estudiar el teorema CAP. Este teorema nos ayudará a clasificar los sistemas distribuidos y las bases de datos para tomar mejores decisiones al elegir la solución que mejor se adapta a nuestro problema.
¿Qué es el Teorema CAP?
El teorema CAP o Conjetura de Brewer formulado en el año 2000 describe tres características que puede tener cualquier sistema distribuido como las bases de datos:
- Consistencia ©: Es la capacidad del sistema que garantiza devolver el último valor que ha sido escrito a cualquier operación de lectura. Por ejemplo, si actualizamos un registro con valor 2 a valor 3, las bases de datos y sistemas consistentes deberán devolver a todos los lectores el nuevo valor 3 a partir de ese momento. Cualquier otro resultado es considerado como una violación de la consistencia.
- Disponibilidad (A): Capacidad del sistema de garantizar el procesamiento de cualquier operación de lectura sin producir ningún error.
- Tolerancia a la partición (P): Capacidad del sistema de garantizar su funcionamiento en caso de partición de la red o incomunicación entre sus nodos. Para ello, el retraso o la pérdida de mensajes de comunicación no deberán impedir que el sistema funcione y responda a las peticiones.El sistema es tolerante a las particiones si los mensajes que se pierden o se retrasan no impiden su funcionamiento.
El teorema usa estas definiciones para afirmar que no es posible ofrecer las tres garantías de forma simultánea. O lo que es lo mismo, en cada instante se debe sacrificar alguna de ellas para garantizar las otras dos.
Como aplicación práctica, todos los sistemas distribuidos como las bases de datos sufren fallos e interrupciones de red y es necesario que sigan funcionando. Por esta razón, los sistemas deben elegir entre ser consistentes o disponibles y balancear estas dos garantías.
Si un sistema favorece la consistencia frente a la disponibilidad en el caso de una partición de red, será CP, mientras que si favorece la disponibilidad en este caso será AP. Los sistemas ACID como las bases de datos relacionales, eligen la consistencia sobre disponibilidad, mientras que los sistemas BASE eligen la disponibilidad.
Ejemplos de sistemas CP
Los sistemas CP pasarán a un estado de indisponibilidad en el caso de sufrir una caída de red. Cuando un cliente pida realizar una lectura de un valor, no devolverá ninguno y mostrará un error de no disponible.
Ejemplos de sistemas AP
Los sistemas AP en el ejemplo anterior podrán devolver algún valor que consideren el más reciente. El cliente debe asumir que el sistema no garantiza la consistencia y por tanto actuar en consecuencia, sin asumir que este valor es consistente con la última escritura.
Del Teorema CAP a PACELC
Las críticas al teorema CAP explican que además de los factores anteriores, se debe tener en cuenta la latencia. Si un sistema sufre una partición en la red, debemos valorar cómo compensar la disponibilidad y consistencia, pero en el caso de que no exista esta partición, lo que deberemos analizar es la latencia frente a la consistencia.
Esta extensión del teorema CAP se denomina PACELC y puede aplicarse a numerosos sistemas distribuidos como bases de datos actuales. Cuando estos sistemas eligen garantizar la disponibilidad en el caso de partición de red, también la suelen garantizar en el caso de partición.
Cassandra y DynamoDB son ejemplos de PA/EL: En el caso de partición de red eligen disponibilidad. En el caso de que no exista partición de red eligen una menor latencia frente a la consistencia.
Las bases de datos ACID son PC/EC. En todo caso garantizan la consistencia frente a disponibilidad y latencia.
Originally published at https://aprenderbigdata.com on May 17, 2022.