Qué es el Teorema CAP y cómo afecta al elegir la base de datos

Generalmente, cuando realizamos algún tipo de consulta en una aplicación como un navegador web, como usuarios esperamos acceder a los resultados de forma breve (disponibilidad), correcta (consistencia) y sin ningún error (estabilidad ante fallos), pero lo que no siempre tenemos presente es que detrás de estas herramientas tecnológicas existen cientos de bases de datos localizadas en centros de datos de diferentes regiones geográficas (datacenters) y que al igual que nosotros, hay miles de usuarios más interactuando con el sistema.

La capacidad que tiene un sistema para gestionar la carga de todas estas transacciones ejecutadas simultáneamente, dependerá en gran medida del tipo de infraestructura y base de datos donde esté alojado. Por tal razón, la selección apropiada de estos componentes es uno de los principales proyectos que afrontan muchas organizaciones, y se ajustará a los recursos con los que dispone (dinero, tiempo, personal, etc.) y a las necesidades que debe satisfacer (volumen de datos, nivel de demanda, entre otros factores).

¿Es posible obtener y garantizar que un sistema ofrezca consistencia, disponibilidad y tolerancia a particiones durante el procesamiento de transacciones en todo momento? Veamos qué nos dice el Teorema CAP a continuación.

Domina la administración de bases de datos con MySQL
Mejora tus habilidades para diseñar y crear bases de datos eficientes, optimizando consultas y asegurando la integridad de los datos.
Comenzar gratis ahora

Qué es el Teorema CAP

El Teorema CAP nos sugiere que todo sistema distribuido de almacenamiento de datos es vulnerable a fallos de conectividad de la red, por lo que, frente al nivel de tolerancia de la partición de los nodos, tendrá que realizar algún tipo de concesión entre el acceso a la información o a su versión más reciente.

Este teorema fue presentado por Eric Brewer en el año 2000 y su nombre está basado en los siguientes tres atributos claves de los sistemas distribuidos:

  • C - Consistencia (Consistency): Se refiere a la lectura coherente del valor actual del dato desde cualquier instancia, es decir que los datos se encuentran sincronizados y replicados en todos los nodos a la vez.

  • A - Disponibilidad (Availability): Se refiere a obtener una respuesta válida y rápida para todas las solicitudes, aunque existan nodos inactivos, es decir el acceso a los datos sin interrupciones.

  • P - Tolerancia a particiones (Partition tolerance): Se refiere a la capacidad del sistema para permanecer estable y continuar procesando solicitudes a pesar de ocurrir una partición (interrupción) entre la comunicación de los nodos.

El Teorema CAP nos da tres opciones de combinaciones de pares de atributos que pueden garantizarse a la vez. Veamos cuáles son:

  • CA: Consistencia y Disponibilidad - Se garantiza el acceso a la información y el valor del dato es consistente (igual) para todas las peticiones atendidas; de haber cambios, se mostrarán inmediatamente. Sin embargo, la partición de los nodos no es tolerada por el sistema de forma simultánea.

  • AP: Disponibilidad y Tolerancia a la partición - Se garantiza el acceso a los datos y el sistema es capaz de tolerar (gestionar) la partición de los nodos, pero dejando 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.

  • CP: Consistencia y Tolerancia a la partición - Se garantiza la consistencia de los datos entre los diferentes nodos y la partición de los nodos se tolera, pero sacrificando la disponibilidad de los datos, con lo cual, el sistema puede fallar o tardar en ofrecer una respuesta a la petición del usuario.

Cómo elegir la base de datos

Seleccionar una base de datos entre las múltiples alternativas SQL, NoSQL y NewSQL disponibles, es por sí sola una tarea difícil que conlleva un análisis detallado de varios requerimientos. Para profundizar más sobre las bases de datos, no te pierdas nuestro Curso de Base de Datos.

Si bien es cierto que el procesamiento de altos volúmenes de datos y la flexibilidad para realizar la escalabilidad de los recursos, es muy habitual en los entornos de Big Data gracias a los servicios ofrecidos por las distintas nubes, al tomar en consideración el Teorema CAP para elegir una base de datos, se debe entender cuáles son los atributos más críticos que el sistema distribuido debe garantizar para soportar satisfactoriamente las actividades de la organización.

Por dar un ejemplo, si la base de datos de nuestro sistema distribuido procesa y almacena las transacciones de una entidad bancaria, seguramente la consistencia de los datos y la tolerancia a particiones (replicando de forma segura la información) sean las dos características principales a garantizar por sobre la disponibilidad de los datos (asumiendo los tiempos de espera para acceder al dato que esto conlleva).

Pero elegir entre uno u otro de estos atributos, puede no ser una elección fácil ni lógica en lo absoluto, por lo que es necesario conocer el funcionamiento de un sistema distribuido y los escenarios del teorema CAP.

En un sistema distribuido se tiene un conjunto de clústeres con al menos un nodo (máquinas físicas o virtuales) que comparten de forma distribuida el procesamiento de las peticiones que ejecutan los usuarios sobre la aplicación, y demás tareas de mantenimiento. En el caso de aumentar el volumen de peticiones, para no colapsar y poder procesar la nueva carga de peticiones, el sistema aumentará el número de nodos de trabajo, lo cual puede causar una partición de la red.

Dependiendo del entorno donde se encuentre el sistema, tendrá flexibilidad para escalar sus recursos de forma vertical u horizontal. Lee el artículo Qué es un sistema distribuido para aprender más.

Por otra parte, en un entorno distribuido, un sistema de gestión de bases de datos (DBMS: DataBase Management System) tendrá flexibilidad para gestionar los datos en diferentes sitios, lo cual significa que los datos están almacenados y distribuidos en una red de múltiples ordenadores, pero se administran como una sola base de datos.

Se pueden clasificar los gestores de bases de datos según varios criterios, pero en esta ocasión, utilizaré la siguiente clasificación:

  • SQL
  • NoSQL (Not Only SQL)
  • NewSQL

Las bases de datos SQL son modelos de bases de datos relacionales tradicionales que procesan las transacciones cumpliendo con las propiedades ACID (acrónimo en inglés traducido como Atomicidad, Consistencia, Aislamiento y Durabilidad), es decir, de los tres atributos del Teorema CAP otorgan mayor relevancia a la Consistencia y Disponibilidad de la información. Al ocurrir una interrupción de la comunicación de los nodos, el sistema no trabajará correctamente y generará errores del sistema al ejecutar una solicitud. Entre las principales bases de datos tipo CA según el teorema CAP, se encuentran:

  • SQL
  • Maria DB
  • MySql
  • Oracle

Por su parte, las bases de datos NoSQL, son modelos de bases de datos No relacionales y otorgan un mejor rendimiento en el procesamiento de grandes volúmenes de transacciones de distintas fuentes de datos, permitiendo la escalabilidad horizontal de los recursos del sistema de forma sencilla, por lo que la tolerancia a las particiones de la red es soportada. Luego, dependiendo del sistema y gestor escogido, se priorizará entre alguno de los otros dos atributos del teorema CAP, la consistencia o la disponibilidad de la información.

Entre las bases de datos CP de acuerdo al teorema CAP, enfocadas a proporcionar consistencia y tolerancia a la partición, están:

  • BigTable
  • Hbase
  • Redis
  • MongoDB

Al presentarse problemas de conexión entre los nodos, el sistema aún podrá dar respuestas a las peticiones de lectura de los datos, sin embargo, las peticiones de escritura no se completarán hasta que sea totalmente segura la comunicación de los nodos a fin de garantizar la coherencia de la información.

Como ejemplos de las bases de datos NoSQL enfocadas a proporcionar disponibilidad y tolerancia a la partición, encontramos:

  • Cassandra
  • Dynamo
  • KAI
  • CouchDB
  • Riak

En el momento que surja una partición de los nodos, el sistema atenderá a las peticiones de escritura del dato con alguno de los nodos activos. Pero si luego hacemos una petición de la lectura del dato, puede suceder que el sistema nos dé un resultado inconsistente porque provenga de un nodo donde aún no está replicado el último cambio. Una vez restablecida la comunicación de los nodos, los datos se replicarán al resto de los nodos.

Por último, las bases de datos NewSQL son una versión moderna de los modelos de datos relacionales que abarcan ciertas características de las NoSQL tales como la escalabilidad y el alto rendimiento, pero a su vez, conservan las propiedades ACID de los gestores tradicionales. Podríamos entonces pensar que las NewSQL combinan y ofrecen los mejores atributos que encontramos en las SQL y NoSQL, y por tanto ser capaces de cumplir con los 3 atributos del Teorema CAP. Algunos ejemplos son:

  • ClustrixDB
  • NuoDB
  • CockroachDB
  • TokuDB
  • Apache Trafodion
Mejora la gestión de las bases de datos de tu empresa con MySQL
Enseñamos a tu equipo las técnicas para diseñar, crear y optimizar bases de datos, asegurando la integridad de los sistemas.
Solicitar más información

Conclusiones

Conocer el Teorema CAP nos sirve como base para comprender la importancia de cada uno de los tres atributos esenciales de un sistema distribuido de base de datos y ser conscientes de cómo la ausencia de alguno de estos, puede afectar el procesamiento de las transacciones dentro del sistema.

Como mencioné al principio del artículo, la selección de una infraestructura y base de datos que se ajuste a las necesidades primordiales de una organización, no es una decisión que podemos tomar a la ligera.

Es recomendable conocer cuáles son los objetivos que deben cumplirse para que nuestro sistema gestione eficientemente los requerimientos imprescindibles de los procesos transaccionales. Partiendo de allí, podemos entonces analizar las características que nos ofrecen los diferentes tipos de gestores de base de datos comerciales y evaluar las opciones que a mediano y largo plazo generen un mayor beneficio a la organización.

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información