Es vital que conozcas el Teorema de CAP, también conocido como Teorema de Brewer, a la hora de diseñar aplicaciones distribuidas y cuando vas a seleccionar el tipo de base de datos que usarás, dado que los conceptos del Teorema de CAP hacen parte de lo que se conoce como requisitos de calidad o requerimientos no funcionales, atributos de calidad que es importante definir desde el comienzo del desarrollo del proyecto.
Dichos atributos de calidad del Teorema de CAP te permite que los usuarios tengan un acceso rápido (disponibilidad), correcto (consistencia) y sin ningún error (estabilidad ante fallos) a los resultados de las búsquedas que realizan. Pero, ¿esto qué tiene que ver con la selección de las bases de datos según el Teorema de CAP?
Detrás de los buscadores existen cientos de bases de datos localizadas en centros de datos de diferentes regiones geográficas (datacenters), las cuales determinarán la capacidad que tiene un sistema, para gestionar la carga de todas estas transacciones ejecutadas simultáneamente por sus usuarios.
Como dice Mario Hernández en el curso online de Fundamentos de Base de datos “las bases de datos son herramientas tecnológicas que permiten almacenar datos de manera confiable y supliendo diferentes tipos de necesidades, como seguridad, agilidad en consulta, resiliencia ante fallos y muchos más”.
Por medio del Teorema de CAP se decide qué atributos de calidad se cumplirán y, por medio de esto, se escoge la base de datos preferible para el proyecto.
¿Qué es el Teorema de CAP?
Según explica Carol Cupas en su artículo ‘Qué es el Teorema CAP y cómo afecta al elegir la base de datos’ de la plataforma OpenWebinars, en el Teorema CAP todo sistema distribuido de almacenamiento de datos es vulnerable a fallos de conectividad de la red, por lo que un sistema distribuido puede entregar sólo dos de las tres características deseadas: consistencia, disponibilidad y tolerancia a la partición (CAP, en inglés).
Pero, ¿qué son los sistemas distribuidos en el Teorema de CAP? Se trata de una red que almacena datos en más de un nodo (máquinas físicas o virtuales) al mismo tiempo. Por ejemplo, todas las aplicaciones en la nube son sistemas distribuidos.
Es por esto que es esencial entender el Teorema CAP al diseñar, por ejemplo, una aplicación en la nube, para que puedas elegir un sistema de gestión de datos que ofrezca las características que más necesita tu aplicación.
Recuerda que según el Teorema de CAP un sistema distribuido de almacenamiento de datos no puede garantizar consistencia, disponibilidad y tolerancia al particionamiento a la vez.
Atributos de calidad del Teorema CAP
El Teorema de CAP dice que en un sistema distribuido de almacenamiento de datos no se pueden garantizar a la vez las tres variantes que componen el acrónimo de CAP: Consistency (Consistencia), Availability (Disponibilidad) y Partition Tolerance (Tolerancia al Particionamiento), ¿a qué hacen referencia estos tres atributos de calidad del Teorema de CAP?
1. Consistencia Teorema de CAP
Cuando se cumple la consistencia del Teorema de CAP, todos los clientes ven los mismos datos al mismo tiempo, independientemente del nodo al que se conecten.
Este atributo de calidad del Teorema de CAP te garantiza que siempre que se haga alguna modificación, esta se vea reflejada en todos los nodos de la base de datos por el Teorema de CAP.
Por medio de este atributo de calidad del Teorema de CAP se permite a los usuarios una lectura coherente y satisfactoria del valor actual del dato desde cualquier instancia, porque los datos se encuentran sincronizados y replicados en todos los nodos a la vez.
2. Disponibilidad Teorema de CAP
Con el atributo de disponibilidad del Teorema de CAP cualquier cliente que realiza una solicitud de datos obtiene una respuesta razonable en un periodo razonable de tiempo, incluso si uno o más nodos están inactivos. También, se presenta cuando todos los nodos activos del sistema distribuido dan una respuesta válida para cualquier solicitud.
Al cumplirse este atributo de calidad del Teorema de CAP, los usuarios obtienen una respuesta válida y rápida para todas las solicitudes.
3. Tolerancia de partición Teorema de CAP
Cuando una base de datos con el Teorema de CAP cumple con el atributo de calidad de tolerancia de partición del Teorema de CAP, el sistema debe de funcionar, aunque algunos nodos no se encuentren disponibles.
El sistemas de datos compartidos en red debe tener la capacidad de permanecer estable y continuar procesando solicitudes, aunque ocurra una partición (interrupción) entre la comunicación de los nodos.
Cuando el sistema distribuido de almacenamiento de datos tiene buena tolerancia de particiones, el Teorema de CAP confirma que el sistema puede continuar trabajando a pesar de las interrupciones de comunicación que se produzcan entre los nodos del sistema.
Foto tomada de Pexels
¿Cómo escoger los atributos de calidad?
El Teorema CAP te da tres opciones de combinaciones, de pares de atributos de calidad que puedes garantizar a la vez. Tienes que tener claridad sobre lo que quieres ofrecer en tu página para escoger una base de datos siguiendo el Teorema de CAP.
CP (Consistencia y Tolerancia de particionamiento)
Cuando en el Teorema de CAP se cumple la consistencia y la tolerancia de partición, se le garantiza a los usuarios la consistencia de los datos entre los diferentes nodos y la partición (interrupción) de los nodos se tolera.
Con estos dos atributos de calidad del Teorema de CAP no se garantiza la disponibilidad, por lo que no será útil escogerla si tus clientes requieren, por ejemplo, que el sistema esté disponible 100% del tiempo o muy cerca, porque no será posible garantizarlo, ya que el sistema puede fallar o tardar en ofrecer una respuesta a la petición del usuario.
AP (Disponibilidad y Tolerancia al particionamiento)
Con esta dupla en el Teorema de CAP, se le garantiza a los usuarios que los datos sean iguales en todos los nodos todo el tiempo y que el sistema siempre esté disponible para las peticiones, aunque se pierda la comunicación entre los nodos, porque el sistema es capaz de tolerar (gestionar) la interrupción de los nodos.
Lo malo es que esta combinación de atributos de calidad del Teorema de CAP deja en segundo plano la consistencia de los datos, ya que no se conserva, y el valor de dato no estará replicado en los diferentes nodos al instante.
Foto tomada de Pexels
CA (Consistencia y disponibilidad)
En este caso, se garantiza la consistencia de los datos entre los diferentes nodos,de haber cambios, se mostrarán inmediatamente. También, la partición de los nodos es tolerada. Pero en este panorama del Teorema de CAP, la base de datos no tolera la partición de los nodos de forma simultánea en el sistema, por lo que el sistema puede fallar o tardar en ofrecer una respuesta a la petición del usuario.
Y después de saber esto, ¿cómo escoger la base de datos adecuada siguiendo las pautas del Teorema de CAP? Solo recuerda esto:
- Los sistemas de bases de datos relacionales (SQL) son CA: todas las escrituras y lecturas se hacen sobre la misma copia de los datos.
- Las bases de datos MongoDB o Redis son CP: brindan acceso a los mismos datos en cualquier momento y permite la disponibilidad de los datos en cercana al 100% del tiempo.
- La base de datos NoSQL es AP: ofrece disponibilidad y tolerancia de partición, pero no puede entregar consistencia todo el tiempo.
Esperamos que ahora sepas qué es el Teorema de CAP y cómo este ayuda a elegir la base de datos que se utilizará en un proyecto de creación de tu sitio web. Recuerda que solo se pueden cumplir dos atributos de calidad del Teorema de CAP por proyecto y que la selección de los mismos se debe fundamentar en el tipo de público al que aspires.
Si tras aprender sobre esto te llama la atención aprender un poco más sobre el desarrollo de sitios web, te invitamos a que revises nuestro catálogo de cursos online de Desarrollo web y tecnología, donde seguro encontrarás lo que necesitas para impulsar tus proyectos e ideas. ¡Nos vemos en la próxima!