Cassandra - nosql
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 clúster de datos es idéntico a otros (y se evitan cuellos de botella). Eventualmente consistente. Modelo de datos ricos, más allá del mero par de clave/valor. Elástica, ya que el rendimiento de lectura y escritura crece linealmente al ir añadiendomá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 con 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 quehay 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 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. 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. 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 límite. Una instancia de Cassandra tiene una tabla que se constituye de una o másfamilias 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 comose 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 elegido sitios como Digg/Twitter? En Septiembre de 2009, Digg ya comentaba el inicio de su migración desde MySQL a Cassandra. Según palabras de Ian Eure: Después de considerar HBase, Hypertable, Cassandra, Tokyo...
Regístrate para leer el documento completo.