Cassandra – nosql

Cassandra – nosql gy krlzl 02, 2010 S pagos Cassandra: Tecnología con mayor impacto en el movimiento NOSQL, adoptada por Facebook y Twitter Uno de los aspectos más positivos del movimiento NoSQL es que al no estar amparadas bajo un mismo funcionamiento (relacional) y un lenguaje de acceso a los datos (SQL), existe una mayor diversidad de acercamientos y, con ello, distintas soluciones, cada cual más adaptada a un problema o situación concreto. Por lo que no acaba de tener sentido el decir cuál es el mejor acercamiento hablando desde una perspectiva genérica.

Teniendo claro l comentario anterior, si que merece la pena estudiar el posicionamiento de las grandes empresas de Internet, al menos aquellas que manejan más cantidad de datos, para estudiar sus elecciones. A este respecto, estos días se habla mucho de que Twitter abandona MyS L ara em ezar a utilizar Cassandra como base de datos, y no e idido por Cassandra, ors ya que tanto Facebo (q! C andra inicialmente), Digg, Cisco, y muhos os gr a gestión de datos, cua se han decidido por rece Cassandra?

Algunas de las caract s de Cassandra son: Tolerante a fallos, ya que los datos se replican de forma utomática en di Swpeto page distintos nodos, o incluso en distintos centros de datos. Descentralizada, ya que cada nodo del clúster de datos es idéntico a otros (y se evitan cuellos de botella). Eventualmente consistente. Modelo de datos ncos, 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. ¿Por qué la desarrolló Facebook?

El por qué Facebook usa Cassandra es una cuestión simple de responder, ya que ellos son los desarrolladores iniciales y lo han desarrollado de acuerdo on sus necesidades. Aun as(, merece la pena leerse algunos de los posts que ingenieros de Facebook han escrito con respecto a Casandra para hacerse una idea de los conceptos e ideas que hay detrás de Cassandra. Avinash Lakshman, uno de los ingenieros de Facebook, comentaba en su día la motivación para el desarrollo inicial de Cassandra: Prashant Malik, del equipo de búsqueda, estaba pensando cómo resolver el problema de la ‘bandeja de entrada’.

El desaffo se centraba en cómo almacenar Índices inversos de los mensajes que los usuarios de Facebook envían y reciben ntre 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 RI_IFS información, hacían aparente la necesidad de una nueva solución de almacenamiento, que fuera capaz de escalar incrementalmente.

Las soluciones de almacenamiento de datos tradicionales simplemente no encajaban, asi 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 nfraestructura de almacenamiento para muchos otros problemas de la misma naturaleza. Y con esto nació Cassandra. El modelo de datos de Cassandra es simple pero muy flexible. Cada fila se identifica con una clave única, que es un string que no tiene un tamaño limite.

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. Las columnas son construcciones que tienen un nombre, un valor y un ‘timestamp’ 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. ¿Por qué la han elegldo Sltios como Dlgg/Twitter? En Septiembre de 2009, 31_1fS a la misma. ¿Por qué la han elegido sitios como DiggfTwitter? En Septiembre de 2009, Digg ya comentaba el inicio de su migración desde MySQL a Cassandra. Según palabras de lan Eure: Después e considerar HBase, Hypertable, Cassandra, Tokyo Cabinet/ Tyrant, Voldemort y Dynomite, nos quedamos con Cassandra.

Cada sistema tiene sus puntos fuertes y sus debilidades, pero Cassandra es una buena mezcla de todo. Ofrece almacenamiento orientado a columnas, por lo que tienes algo más de estructura que los acercamientos de clave/valor. Opera en un clúster distribuido, de alto rendimiento y peer-to-peer. Y aunque le faltan algunas características necesarias, nos deja más cerca de dónde queremos llegar que otras soluciones. El problema fundamental es algo endemico a la mentalidad de bases de datos elacionales, que establecen un mayor peso de computación en las lecturas en lugar de en las escrituras.

Esto es algo totalmente equívoco cuando estamos hablando de aplicaciones web a gran escala, donde el tiempo de respuesta es crítico. Cada componente de la página bloquea las lecturas del almacén de datos. Las bases de datos no relacionales le dan la vuelta a este modelo, ya que no ejecutan operaciones complejas de lectura mediante SQL. El modelo te fuerza a cambiar el esfuerzo de computación a las escrituras, mientras que las lecturas 406 S modelo te fuerza a cambiar el esfuerzo de computación a las scrituras, mientras que las lecturas se reducen a las operaciones más simples posibles.

Por su parte, Ryan King de Twitter, comentaba algunas de las razones por las que Twitter migra a Cassandra: Tenemos una gran cantidad de datos, y con un factor de crecimiento muy elevado y encima acelerándose. Tenemos un sistema con mysql + memcache pero se está convirtiendo en algo costosamente prohibitivo en términos de esfuerzo (personal trabajando para el sistema). Necesitamos un sistema que pueda crecer de una forma más automatizada y que presente alta disponibilidad. [… ]

Las principales razones por las que migramos a Cassandra se resumen en: 1) No tiene puntos de fallo, 2) las escrituras son altamente escalables y 3) una comunidad open source saludable y productiva. Y la verdad que además de sus características técnicas, el tema de la comunidad es algo muy favorable para Cassandra, porque ya de por si con Facebook, Digg, Twitter y muchas otras empresas interesadas en el desarrollo de Cassandra (y con gente dedicada a integrar, mejorar, etc. ), esto asegura una cierta continuación y una cierta garantía de que a corto/medio plazo Cassandra será una solución más que completa SÜFS