Contenidos
Cap big data
Wikipedia
Esta es la quinta entrega de nuestra serie en curso sobre Big Data, cómo lo vemos y cómo construimos productos para ello. En este episodio, trataremos el teorema CAP. ¿Qué es? ¿Es correcto? ¿Y por qué es necesario para los ingenieros de datos?
La vida de un ingeniero de datos se basa básicamente en trabajar con sistemas distribuidos. Todos los sistemas con los que tienen que trabajar son distribuidos, ya sea el almacenamiento, el marco de cálculo o el motor de consulta. Definamos lo que entendemos por “distribuido”.
Llamamos a cualquier sistema “distribuido” cuando más de un proceso participa en la comunicación. No es importante cuántos ordenadores, o qué tipo de ordenadores, se necesitan para ejecutarlos. Puede ser una tetera “inteligente” o un cluster con miles de nodos de alta gama, ambos se consideran “distribuidos”.
En ACID, la consistencia es cuando los datos no rompen las restricciones como las claves foráneas en su base de datos. Por ejemplo, si hay un NULL en una columna NOT NULL después de terminar la transacción, significa que este almacenamiento no es consistente. Si está utilizando una base de datos sin soporte de claves foráneas (por ejemplo, MySQL con motor de almacenamiento MyISAM) sus datos son siempre consistentes (en términos de claves foráneas, por supuesto). Si tu RDBMS no soporta la tipificación fuerte de columnas (como SQLite) puedes poner datos de cualquier tipo en cualquier columna, y será consistente.
Diseño de sistemas según el teorema cap
El teorema CAP aplica un tipo de lógica similar a los sistemas distribuidos, es decir, que un sistema distribuido sólo puede ofrecer dos de las tres características deseadas: consistencia, disponibilidad y tolerancia a las particiones (la “C”, la “A” y la “P” de CAP).
Un sistema distribuido es una red que almacena datos en más de un nodo (máquinas físicas o virtuales) al mismo tiempo. Dado que todas las aplicaciones en la nube son sistemas distribuidos, es esencial entender el teorema CAP cuando se diseña 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 se denomina teorema de Brewer, porque fue adelantado por primera vez por el profesor Eric A. Brewer durante una charla que dio sobre computación distribuida en el año 2000. Dos años después, los profesores del MIT Seth Gilbert y Nancy Lynch publicaron una prueba de la “Conjetura de Brewer”.
La consistencia significa que todos los clientes ven los mismos datos al mismo tiempo, independientemente del nodo al que se conecten. Para que esto ocurra, cada vez que se escriben datos en un nodo, deben ser reenviados o replicados instantáneamente a todos los demás nodos del sistema antes de que la escritura se considere “exitosa”.
Tolerancia a las particiones frente a la disponibilidad
En informática teórica, el teorema CAP, también llamado teorema de Brewer en honor al informático Eric Brewer, afirma que cualquier almacén de datos distribuido sólo puede ofrecer dos de las tres garantías siguientes:[1][2][3]
Así, si hay una partición de la red, hay que elegir entre consistencia y disponibilidad. Obsérvese que la consistencia, tal y como se define en el teorema CAP, es bastante diferente de la consistencia garantizada en las transacciones de bases de datos ACID[4].
Eric Brewer argumenta que el concepto “dos de tres”, utilizado a menudo, puede ser algo engañoso porque los diseñadores de sistemas sólo necesitan sacrificar la consistencia o la disponibilidad en presencia de particiones, pero que en muchos sistemas las particiones son poco frecuentes[5][6].
Ningún sistema distribuido está a salvo de los fallos de la red, por lo que generalmente hay que tolerar la partición de la red[7][8] En presencia de una partición, quedan dos opciones: consistencia o disponibilidad. Si se opta por la consistencia en lugar de la disponibilidad, el sistema devolverá un error o un tiempo de espera si no se puede garantizar que la información esté actualizada debido a la partición de la red. Si se opta por la disponibilidad en lugar de la consistencia, el sistema siempre procesará la consulta e intentará devolver la versión más reciente disponible de la información, incluso si no puede garantizar que esté actualizada debido a la partición de la red.
Teorema de la disponibilidad en la tapa
Para hacer frente a la expansión de la información contamos con muchas tecnologías importantes en las bases de datos distribuidas. Nos ha permitido lidiar con el tráfico expandido con una menor latencia, ha permitido una extensión más simple del marco de la base de datos, y ha dado una mejor adaptación a la tolerancia a los fallos con respecto a la replicación. La base de datos NoSQL ha estado involuntariamente a la vanguardia del área de las bases de datos distribuidas. Le han proporcionado una gran adaptabilidad en cuanto a la salvaguarda de su información. La hipótesis del CAP le permite decidir cómo debe tratar sus marcos de bases de información distribuidas cuando un par de servidores de bases de datos no conversan entre sí debido a alguna deficiencia en el marco. Intentaremos comprender el teorema CAP y cómo ayuda a elegir el sistema de base de datos distribuida preciso. En este artículo, hablaremos de los sistemas de bases de datos distribuidas, de lo que es el teorema CAP, de lo que es el teorema CAP y de los tipos de bases de datos NoSQL del teorema CAP. Vamos a verlos en detalle.