CASSANDRA-BASES DE DATOS SIN LÍMITES CASSANDRA-UNLIMITED DATABASES Edilberto Niño Niño* Introducción.
“El modelo de datos Cassandra es simple pero muy flexible”, Cada fila se identifica con una clave única, que es un string que no tiene tamaño límite. Una instancia de Cassandra tiene una tabla que se constituye de una o más familias de columnas definidas por el usuario. Cada familia de columnas puede contener una o dos estructuras: supercolumnas o columnas[2]. Esta base de datos tal vez nace debido el espíritu capitalista impulsa fuertemente el desarrollo de nuevas tecnologías, a fin de obtener mayores y mejores dividendos, lo cual es racional en una sociedad ávida de explorar nuevos pasatiempos y sobre todo dependiente de las tecnologías al servicio del ocio. Es precisamente las exigencias del ocio lo que atrae grandes masas de consumidores y allí donde se captan los abultados recursos y lo que llevó a grandes empresarios a pensar en una nueva solución para el manejo masivo de millones de datos. Cassandra se presenta como una solución a los problemas de escalabilidad que presentan las estructuras de bases de datos tradicionales. Y se augura un futuro prometedor ya que abordó una de las tendencias actuales en bases de datos como son las llamadas "bases de datos del tipo BigTable".
Resumen.
El modelo de datos Cassandra está diseñado para los datos distribuidos en una escala muy grande. No pretende reemplazar las tradicionales del tipo relacional, sino complementarlas en aplicaciones distintas para las cuales el modelo clásico simplemente se quedo rezagado. Esta base de datos, promete grandes ventajas como por ejemplo alta eficiencia en tolerante a fallos, ya que los datos se replican de forma automática en distintos nodos, o incluso en Hoja 1
distintos centros de datos, es una base de datos 100% descentralizada ya que cada nodo del cluster de datos es idéntico a otros y se evitan cuellos de botella, y se espera que se altamente consistente.
Palabras Clave:
Cassandra, Base de Datos, nodos, Clusters, replicación, escalabilidad,
consistencia, distribuida.
Abstract.
Cassandra data model is designed for distributed data on a large scale. Not intended to replace traditional relational type, but to complement them in different applications for which the classical model simply fell behind. This database, it promises great advantages such as high efficiency in fault-tolerant, since the data is automatically replicated on different nodes, or even in different data centers, a database is 100% decentralized and each data node cluster is identical to others and avoid bottlenecks, and is expected to be highly consistent.
Keywords:
Cassandra, Database, nodes, clusters, replication, scalability, consistency,
distributed
1. Que es Cassandra.
Es el nombre dado a un proyecto, generado por los ingenieros del portal social Facebook y mantenido por la fundación Apache, es el sistema de bases datos diseñada para escalar "naturalmente", es el más sofisticado del momento. La empresa Twitter anuncio recientemente que migrará toda su infraestructura a esta nueva plataforma de datos, adicionalmente otras empresas como Cisco apoyaran el proyecto.
2.
Características generales de Cassandra. Hoja 2
Respecto a la infraestructura ya existen instalaciones con más de 150 máquinas en paralelo y 100TB de datos en producción, lo que permitirá atender de manera eficiente a los millones de usuarios que tendrá este sistema. Algunas de las características relevantes que hacen de esta base de datos una de las mejores son:
− Tolerante a fallos, ya que los datos se replican de forma automática en distintos
nodos, o incluso en distintos centros de datos. − Descentralizada, ya que cada nodo del cluster de datos es idéntico a otros y se evitan
cuellos de botella. − Eventualmente consistente. − Modelo de datos robustos, más allá del mero par de clave/valor. − Elástica, ya que el rendimiento de lectura y escritura crece linealmente al ir
añadiendo máquinas. − Alta disponibilidad.
Como ya se mencionó es una base de datos diseñada para que escale "naturalmente" es decir basta con que se agreguen máquinas para que ésta se escale de manera lineal, y lo más importante todo se prevé que se hará de una manera sencilla. El diseño para le gestión de los datos en la base Cassandra, no es un sistema centralizado, ni gestionado de manera centralizada, es decir la gestión de los datos se realizará de manera distribuida
entre todos los nodos, lo que significa que no existe un sólo punto de
fallas en el sistema, ya que aun si se caen varios de los servidores del sistema, los otros continuarán operando. Se espera además que con los datos altamente distribuidos entre centenares de máquinas, el sistema pueda escalar en tiempo real sin generar un flujo masivo de tráfico en el proceso, por que el usuario puede manejar las especificaciones de las consultas en todo el clúster, desde simples lecturas sin bloqueo, hasta bloquear todos los nodos, mientras realiza Hoja 3
escritura. Adicionalmente al estar las Bases de Datos distribuidas en toda la red, permitirá una alta transparencia para el usuario[1]. El diseño también soporta replicación no sólo local en una red, sino que entre varios centros de datos remotos, todo de manera natural. Se cuenta también como ya se dijo con alta escalabilidad , y para escalar cientos de millones de usuarios se debe crear un balance entre disponibilidad de datos, los cuales deben estar siempre disponibles y utilizables en todo momento y en tiempo real, y adicionalmente presenta alta consistencia lo que significa que los cambios se van propagando poco a poco entre todos los nodos del clúster, y mientras tanto lo que sea que esté disponible para lectura se le ofrece al usuario mientras que lleguen las últimas actualizaciones, este tipo de modelo es eficiente para aplicaciones donde no se tenga que estar actualizando los datos en todo momento, pero no aplica para las de tipo financiero, las cuales deben confirmarse y estar 100% consistentes en todo momento. El modelo de Cassandra no utiliza el mismo concepto de tablas relacionadas, utiliza un conjuntos de datos basados en modelos de "variable + valor", similar a las hashtables en los lenguajes clásicos de programación. En las bases de datos del modelo Cassandra, cada fila se identifica con una clave única, que es un string y que no tiene un tamaño límite. Una instancia de Cassandra tiene una tabla que se constituye de una o más familias de columnas definidas por el usuario. Cada familia de columnas puede contener una o dos estructuras: supercolumnas o columnas. Las dos se crean de forma dinámica y no hay límite en cuanto al número que pueden ser almacenados en una familia de columnas[3]. Las columnas son construcciones que tienen un nombre, un valor y un timestamp (fecha y hora) asociado a las mismas. Se pueden almacenar tantas columnas como se quieran en una familia de columnas. Por otro lado, las supercolumnas son una construcción que tiene un nombre y un número infinito de columnas asociadas a la misma. Los documentos son almacenados en un directorio común de Red, y al ser accedidos desde Casandra, facilita y ordena el trabajo en grupo. Tiene un poderoso sistema de recuperación
Hoja 4
Full-Text se recuperan los documentos por cualquier palabra que contenga, que le permite hallar documentos de varias bases de datos en una sola búsqueda [2].
3. Grandes bases de datos están migrando a Cassandra.
En Septiembre de 2009 Digg 1, inicio su migración desde MySQL a Cassandra [3]. Facebook usa Cassandra porque ellos son los desarrolladores iniciales y lo han desarrollado de acuerdo con sus necesidades, asi se hacia el análisis de cómo resolver el problema de la ‘bandeja de entrada’[3]. El desafío se centraba en cómo almacenar índices inversos de los mensajes que los usuarios de Facebook envían y reciben entre ellos. La gran cantidad de datos almacenados, su ratio de crecimiento y los requerimientos para servir la información, hacían aparente la necesidad de una nueva solución de almacenamiento, que fuera capaz de escalar incrementalmente [4]. Las soluciones de almacenamiento de datos tradicionales simplemente no encajaban, así que tuvimos que diseñar una solución que fuera capaz de resolver el problema de la ‘bandeja de entrada’, pero que también proporcionaran una infraestructura de almacenamiento para muchos otros problemas de la misma naturaleza. Y con esto nació Cassandra[2]. Twitter migrará a Cassandra, entre otras razones por que maneja gran cantidad de datos, con un factor de crecimiento muy elevado. Twitter trabaja con mysql, el cual se vuelve cada vez más costoso. Por lo que se requiere un sistema que pueda crecer de una forma más automatizada y que presente alta disponibilidad. Las razones principales por las que Twitter migra a Cassandra son las siguientes: No tiene puntos de fallo, Las escrituras son altamente escalables y una comunidad open source saludable y productiva[4]. De otra parte además de sus características técnicas, la comunidad es algo muy favorable para Cassandra, porque ya de por sí con Facebook, Digg, Twitter y muchas otras empresas
1
Digg es un sitio web principalmente sobre noticias de ciencia y tecnología. Combina marcadores sociales, blogging y sindicación con una organización sin jerarquías, con control editorial democrático, lo cual permite que se publiquen artículos sobre una gran variedad de géneros.
Hoja 5
interesadas en el desarrollo de Cassandra, esto asegura la continuación y garantiza que a corto o mediano plazo Cassandra será una solución eficiente. [2]
Conclusiones
1) La imaginación del hombre hace que la tecnología avance, y esta a su vez incentiva a la imaginación humana, lo que permite el desarrollo vertiginoso de la ciencia de la electrónica y de la informática. 2) Se advierte sobre la fragilidad de los datos digitales, y la tecnología se defiende creando bases de datos altamente escalables, y con replicación eficiente. 3) Las bases de datos relacionales, se quedaran por un tiempo, pero para aplicaciones muy especificas, mientras que las bases de datos con modelo como el de cassandra se prevé que se afiancen en un futuro cercano.
Referencias Bibliográficas:
[1] http://www.eliax.com/index.cfm?post_id=7507. Por Jose Elias. Consultado (10/04/2011). [2] http://www.kabytes.com/programacion/mysql-vs-cassandra/. Consultado (09/04/2011). [3] http://wiki.apache.org/cassandra/DataModel. Consultado (09/04/2011). [4] http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=cassandra. Desarrollado por: Francisco Javier Martínez Páez . Consultado (09/04/2011).
* Autor Edilberto Niño Niño
Colombiano, Ingeniero Catastral y Geodesta de la Universidad Distrital Francisco José de Caldas, Bogotá (Colombia). Especialista en Astronomía, de la Universidad Nacional de Colombia, Bogotá (Colombia). Especialista en Sistemas de Información Geográfica, de la
Hoja 6
Universidad Distrital Francisco José de Caldas, Bogotá (Colombia). Docente tiempo completo de la Universidad Distrital Francisco José de Caldas, Bogotá (Colombia).
[email protected]
Hoja 7