Los profesionistas de big data que trabajan procesando grandes volúmenes de información deben conocer el teorema de CAP porque les permitirá elegir la base de datos más adecuada para cada proyecto.
El hecho de que los usuarios de una web tengan un acceso rápido, correcto y sin errores a los resultados de las búsquedas que realizan dependerá en gran medida de la elección de bases de datos que se haya hecho. Para llevar a cabo esta selección resulta vital conocer el teorema de CAP, también conocido como teorema de Brewer, puesto que los conceptos de este postulado conforman los denominados requisitos de calidad que resultan fundamentales de definir al inicio de un proyecto.
El científico informático Eric Brewer, en lo que se conoció como conjetura de Brewer, afirmó que “a medida que las aplicaciones tienen más base en la web, hay que dejar de preocuparse por la consistencia de los datos, porque si se desea una alta disponibilidad en esas nuevas aplicaciones, no es posible garantizar esa coherencia de la información”. Dos años después de pronunciar estas palabras, en 2002, Seth Gilbert y Nancy Lynch del MIT demostraron formalmente que estaba en lo cierto y así nació el teorema de Brewer o teorema de CAP.
Los 3 factores que conforman el teorema CAP
CAP es un acrónimo de las palabras en inglés Consistency, Availability y Partition tolerance, y lo que defiende es que es imposible proporcionar simultáneamente más de dos de esos tres factores.
Por lo tanto, el teorema de CAP sostiene que en los sistemas distribuidos no es posible garantizar simultáneamente estas tres características:
Consistencia (consistency).
Cualidad que posibilita que cualquier lectura reciba como respuesta la escritura más reciente y nunca se proporcione un dato obsoleto. Es decir, todos los nodos deben proporcionar la misma información al mismo tiempo.
Disponibilidad (availability).
Propiedad por la que cualquier tipo de petición recibe una respuesta no errónea en un tiempo razonable, aunque no sea la escritura más reciente.
Tolerancia a las particiones (partition tolerance).
Atributo que permite que el sistema continúe funcionando incluso cuando existen fallos de comunicación o caídas parciales.
Principales combinaciones de atributos
Como resulta evidente, ningún sistema distribuido se salva de que pueda haber un fallo en la red y, teniendo en cuenta el teorema de CAP, existen tres posibles opciones de combinaciones de pares de atributos que pueden garantizarse a la vez:
CA: consistencia y disponibilidad
En este caso, el acceso a la información está asegurado, el valor de los datos es igual (consistente) para todas las peticiones atendidas y si existiesen cambios, se mostraría inmediatamente. Sin embargo, la partición de los nodos no es tolerada por el sistema simultáneamente y este debería fallar y presentar un mensaje al cliente del tipo: “Inténtelo más tarde, por favor”.
AP: disponibilidad y tolerancia a la partición
Aquí se asegura la disponibilidad de la información y el sistema es capaz de gestionar la partición de los nodos, pero se descuida la consistencia de los datos.
CP: consistencia y tolerancia a la partición
Se salvaguarda la consistencia de los datos y se tolera la partición de los nodos, pero en este caso se sacrifica la disponibilidad, con lo cual, el sistema puede fallar o tardar en ofrecer una respuesta a petición del usuario.
¿Cómo afecta el teorema de CAP a las bases de datos?
Resulta imprescindible tener en cuenta el teorema CAP a la hora de elegir la base de datos que mejor se adecúa al proyecto que se pretende desarrollar. Así, los profesionales podrán seleccionar aquellas bases de datos que posean los atributos más importantes que el sistema debe garantizar.
Los sistemas gestores de bases de datos pueden clasificarse en:
SQL
Son modelos de bases de datos relacionales tradicionales que, de los tres atributos del teorema de CAP, priorizan la consistencia y la disponibilidad, por eso se llaman de tipo CA.
Entre las principales bases de datos de estas características se pueden citar SQL, MariaDB, MySQL y Oracle.
NoSQL
En este caso, se trata de modelos de bases de datos no relacionales que tienen mejor rendimiento cuando se trata de procesar grandes volúmenes de datos que provienen de diferentes fuentes, como suele ser el caso de las bases de datos empleadas en Big Data. Aquí, la tolerancia a las particiones de la red es soportada, y después, dependiendo del sistema o el gestor escogido, se priorizará alguno de los otros dos atributos disponibles según el teorema de CAP: consistencia o disponibilidad. Serán, por tanto, modelos CP o AP.
Entre las bases de datos CP estarían BigTable, HBase, Redis o MongoDB y enfocadas al modelo AP serían Cassandra, Dynamo, KAI, CouchDB o Riak. Son los sistemas más adecuados para aplicaciones y datos no estructurados que involucran enormes volúmenes de información, por ejemplo, todo lo relacionado con el big data.
NewSQL
Este tipo de bases de datos son una versión renovada de los modelos de datos relacionales y podría decirse que combinan características de los gestores tradicionales y de las NoSQL. Ejemplos de este tipo de bases de datos serían Apache Trafodion, TokuDB, NuoDB, CockroachDB o ClustixDB.
Actualmente, el campo del big data ofrece infinidad de salidas laborales y formaciones como la Maestría en Big Data online de UNIR México preparan a los alumnos para desarrollar su carrera profesional en uno de los sectores con mayor proyección.