¿Recuerda haber visto alguna vez un anuncio de un paisajista, pintor de casas u otro comerciante que empezara con el siguiente titular: "Barato, rápido y de buena calidad: seleccione dos criterios cualquiera"?
El teorema CAP aplica una lógica similar a los sistemas distribuidos, a saber, que un sistema distribuido solo puede proporcionar dos de las tres características deseadas: coherencia, disponibilidad y tolerancia a la partición (en inglés, la ‘C,’ ‘A’ y ‘P’ de CAP).
Un sistema distribuido es una red que almacena datos en varios nodos (máquinas virtuales o físicas) al mismo tiempo.Como todas las aplicaciones en la nube son sistemas distribuidos, es esencial comprender el teorema CAP a la hora de diseñar una aplicación en la nube para poder elegir un sistema de gestión de datos que ofrezca las características que más necesita su aplicación.
El teorema CAP también recibe el nombre de teorema de Brewer, porque fue expuesto por primera vez por el profesor Eric A. Brewer durante una charla que dio sobre informática distribuida en 2000.Dos años después, los profesores del MIT Seth Gilbert y Nancy Lynch publicaron una prueba de la "Conjetura de Brewer".
Cloudant
DataStax
IBM Cloud Databases for MongoDB
Vamos a ver de manera detallada las tres características del sistema distribuido al que se refiere el teorema CAP.
Consistencia
Consistencia significa que todos los clientes ven los mismos datos al mismo tiempo, independientemente del nodo al que se conecten. Para que esto suceda, siempre que se escriban datos en un nodo, se debe reenviar o replicar al instante a todos los demás nodos del sistema antes de que la escritura se considere 'satisfactoria'.
Disponibilidad
Disponibilidad significa que cualquier cliente que realiza una solicitud de datos obtiene una respuesta, incluso si uno o más nodos están inactivos. Otra forma de indicar esto: todos los nodos activos del sistema distribuido devuelven una respuesta válida para cualquier solicitud, sin excepción.
Tolerancia de partición
Una partición es un quiebre de las comunicaciones dentro de un sistema distribuido: una conexión perdida o temporalmente retardada entre dos nodos. La tolerancia de las particiones significa que el clúster debe continuar trabajando a pesar de las interrupciones de comunicación que se produzcan entre los nodos del sistema.
Las bases de datos NoSQL son ideales para aplicaciones de redes distribuidas. A diferencia de sus homólogas SQL (relacionales), escalables verticalmente, las bases de datos NoSQL son escalables horizontalmente y distribuidas por diseño, pueden ampliarse rápidamente a través de una red en crecimiento formada por múltiples nodos interconectados.(Consulte "Bases de datos SQL vs. NoSQL: ¿Cuál es la diferencia?" para obtener más información.)
Hoy en día, las bases de datos NoSQL se clasifican en función de las dos características CAP que soportan:
Las bases de datos CA se mencionan en último lugar por una razón: en un sistema distribuido, la partición es inevitable.Por lo tanto, aunque en teoría podemos hablar de una base de datos distribuida CA, a efectos prácticos no puede existir una base de datos distribuida CA.Esto no significa que no puedas tener una base de datos CA para tu aplicación distribuida si la necesitas.Muchas bases de datos relacionales, como PostgreSQL, ofrecen coherencia y disponibilidad y se pueden implementar en varios nodos mediante replicación.
MongoDB es un popular sistema de gestión de bases de datos NoSQL que almacena datos como documentos BSON (JSON binario). Se utiliza con frecuencia para aplicaciones de big data y en tiempo real que se ejecutan en varias ubicaciones diferentes.En relación con el teorema CAP, MongoDB es un almacén de datos CP, resuelve las particiones de red manteniendo la coherencia, pero comprometiendo la disponibilidad.
MongoDB es un sistema de maestro único. Cada conjunto de réplicas (enlace externo) puede tener solo un nodo primario que recibe todas las operaciones de escritura.. Todos los demás nodos del mismo conjunto de réplicas son nodos secundarios que replican el registro de operaciones del nodo primario y lo aplican a su propio conjunto de datos.Por defecto, los clientes también leen del nodo primario, pero también pueden especificar una preferencia de lectura (enlace externo) que les permite leer de los nodos secundarios.
Cuando el nodo primario deja de estar disponible, el nodo secundario con el registro de operaciones más reciente será elegido como nuevo nodo primario.Una vez que todos los demás nodos secundarios se ponen al día con el nuevo maestro, el clúster vuelve a estar disponible.Como los clientes no pueden hacer ninguna petición de escritura durante este intervalo, los datos permanecen coherentes en toda la red.
Apache Cassandra es una base de datos NoSQL de código abierto mantenida por Apache Software Foundation. Es una base de datos de amplia columna que permite almacenar datos en una red distribuida. Sin embargo, a diferencia de MongoDB, Cassandra tiene una arquitectura sin maestría y, como resultado, tiene múltiples puntos de falla, en lugar de una sola.
En relación con el teorema CAP, Cassandra es una base de datos de AP que ofrece disponibilidad y tolerancia de partición, pero no puede entregar consistencia todo el tiempo. Puesto que Cassandra no tiene un nodo maestro, todos los nodos deben estar disponibles continuamente. Sin embargo, Cassandra proporciona consistencia eventual permitiendo a los clientes escribir en cualquier nodo en cualquier momento y reconciliar las inconsistencias lo más rápido posible.
Dado que los datos sólo se vuelven inconsistentes en el caso de una partición de red, y las inconsistencias se solucionan rápidamente, Cassandra ofrece una función de "reparación" para ayudar a los nodos a ponerse al día con sus compañeros. Sin embargo, la disponibilidad constante resulta en un sistema de alto rendimiento que podría valer el equilibrio en muchos casos.
Los microservicios son componentes de aplicación enlazados de forma flexible que pueden desplegarse independientemente. Integran su propia pila, incluida su propia base de datos y modelo de base de datos, y se comunican entre sí a través de una red.Como se pueden ejecutar microservicios tanto en servidores en la nube como en centros de datos locales, se han hecho muy populares para aplicaciones híbridas y multinube.
Comprender el teorema CAP puede ayudarle a elegir la mejor base de datos cuando diseñe una aplicación basada en microservicios que se ejecute desde varias ubicaciones.Por ejemplo, si la capacidad de iterar rápidamente el modelo de datos y escalar horizontalmente es esencial para su aplicación, pero puede tolerar una coherencia eventual (en lugar de estricta), una base de datos AP como Cassandra o Apache CouchDB puede satisfacer sus requisitos y simplificar su despliegue.Por otro lado, si su aplicación depende en gran medida de la coherencia de los datos, como en una aplicación de comercio electrónico o un servicio de pago, podría optar por una base de datos relacional como PostgreSQL.
IBM ofrece una amplia gama de servicios de base de datos totalmente gestionados . En IBM Cloud puede ejecutar sistemas de gestión de bases de datos relacionales, así como
Para ver toda nuestra selección de bases de datos, regístrese para obtener un IBMid y cree su cuenta de IBM Cloud.
Conozca las diversas bases de datos en la nube que ofrece IBM, las cuales ofrecen servicio a una variedad de casos de uso de cargas de trabajo fundamentales, desde aplicaciones móviles y web, hasta la analítica.
IBM Cloudant es una base de datos en la nube distribuida y escalable basada en Apache CouchDB que se puede utilizar para aplicaciones web, móviles, de IoT y sin servidor.
Obtenga esta base de datos NoSQL nativa de la nube, escalable y de alta disponibilidad construida sobre Apache Cassandra de IBM, su única fuente de compra, implementación y soporte.
MongoDB como un servicio, desarrollado para la empresa y con integración nativa en IBM Cloud
Obtenga más información sobre las bases de datos para Elasticsearch, una poderosa herramienta para datos enriquecidos con un motor de búsqueda de texto completo e indexación de bases de datos de documentos JSON.
Descubra más acerca de IBM Cloud Databases for etcd, que ofrece un almacén de valor clave totalmente gestionado y listo para la empresa para almacenar los datos y gestionar su clúster de servidores.