Echando un vistazo a las grandes compañías que manejan en sus aplicaciones un enorme número de registros, tales como Google1, Amazon2 o Facebook3, podemos rápidamente darnos cuenta que sus sistemas de datos no están basados en bases de datos relacionales. Google utiliza BigTable4, Amazon usa Dynamo5, HBase6 es la tecnología usada por Apache7 y Facebook y Digg8 gestionan sus datos con Cassandra9. Actualmente, Twitter10
se encuentra destinando recursos para migrar sus datos a esta
tecnología. Todas estos sistemas se basan básicamente en pares
clave/valor para almacenar los datos.
¿Por
qué las compañías más relevantes del mundo de la tecnología abandonan
las bases de datos relacionales? Principalmente, porque son muy costosas
y lentas cuando manejan tal cantidad de datos. Poniendo un ejemplo,
Cassandra es capaz de escribir en disco 50GB de datos en tan sólo 0.12
milisegundos, 2500 veces más rápido que MySQL11, una de las bases de datos relacionales más utilizadas.
Dentro
de estos sistemas de almacenamiento de datos, Cassandra se erige como
una seria garantía ya que aúna ventajas de varias de las alternativas.
Sus características son:
– Dispone de consistencia eventual, al igual que el sistema Dynamo de Amazon.
–
Proporciona un modelo de datos basados en ColumnFamily, más rico que el
tradicional modelo de clave/valor, al igual que el modelo BigTable de
Google.
–
Es altamente escalable y distribuida. Normalmente se ejecutan en
clusters de servidores formados por ordenadores baratos, por lo que la
expansión del sistema es realmente sencilla.
– Es rápida ya que elimina el cuello de botella que supone el tener que traducir las consultas a lenguaje SQL.
La
historia de Cassandra nace directamente de la experiencia que supuso
Dynamo para Amazon. Facebook contrató a uno de sus autores y le encargó
diseñar un nuevo sistema para sus datos. Este ingeniero desarrolló
Cassandra y, en 2008, Facebook liberó su código.
En
2009 nació un movimiento en contra de las bases de datos relacionales,
llamado NoSQL, que agrupa a todos estos sistemas alternativos.