2. Cassandra: es una base de datos NoSQL, hoy en día es
un proyecto de Apache. Cassandra fue desarrollado por
Facebook (la versión original fue escrita por un ex
empleado de Amazon y otro de Microsoft), en el 2008
fue liberado como un proyecto open source en Google
code, en el 2009 se convirtió en un proyecto “Apache
Incubator“, y finalmente en el 2010 se convirtió en un
proyecto TOP-LEVEL.
3. Es un sistema gestor de base de datos, NoSQL y
descentralizada.
4.
Una tabla de datos por cada instancia de Cassandra.
Cada familia de columnas puede contener o bien
columnas o bien supercolumnas. Las supercolumnas
son columnas son la agrupación de n-columnas.
Cada columna contiene elementos de la forma “ClaveValor-Tiempo”, donde el valor del campo tiempo es
definible por el usuario.
Cada fila de una tabla puede tomar valores en columnas
distintas de una familia de columnas que otra fila, es
decir, si se dispone de una familia de 5 columnas (A, B,
C, D, E), la fila R1 puede tener valores en A y B mientras
que la fila R2 puede tenerlos en A, C, D y E.
5. Column: Es la unidad mas básica de la representación en el
modelo de datos Cassandra. Una column es un triplete de un
key (un nombre) un value (un valor) y un timestamp. Los
valores son todos suministrados por el cliente. El tipo de dato
del key y el value son Matrices de bytes de Java, el tipo de
dato del timestamp es un long primitive. Las column son
inmutables para evitar problemas de multithreading. Las
columns se organizan dentro de las columns families.
6. Las columns se ordenan por un tipo:
AsciiType
BytesType
LexicalUUIDType
LongType
TimeUUIDType
UTF8Type
7. Super Column: Es una column cuyos values no son
strings, sino una o mas columns, que en este
contexto se llamaran subcolumns. Las subcolumns
están ordenadas, y el numero de columnas que se
puede definir es ilimitada. las Super columns, a
diferencias de las columns, no tienen un timestamp
definido. No son recursivas, es decir, solamente
tienen un nivel de profanidad.
8. Column Family: Es mas o menos análogo a una tabla
en un modelo relacional. Se trata de un contenedor para
una colección ordenada de columns. Debido a que cada
column family se almacena en un archivo separado,
asegúrese de definir las columns que sea probable que
acceda juntas en la misma column family. Tenemos que
definir las column family de la aplicación en el archivo
de configuración.
9. Keyspace: Es el contenedor para un column family. Es
mas o menos análogo a una base de datos en un
modelo relacional, usado en Cassandra para separar
aplicaciones. Cuando una base de datos relacional es
una colección de tablas, un keyspace es una colección
ordenada de columns family. Tenemos que definir los
keyspace de la aplicación en el archivo de configuración
o usando métodos definidos en la API
10. Algunos usuarios famosos de Cassandra son:
–Digg
–Facebook
–Twitter
–Rackspace
–SimpleGEO
11.
Escalabilidad horizontal (añade nuevo hardware cuando sea preciso)
Rápidas respuestas aunque la demanda crezca
Elevadas velocidades de escritura para gestionar volúmenes de datos
incrementales
Almacenamiento distribuido
Capacidad de cambiar la estructura de datos cuando los usuarios
demandan más funcionalidad
Una API sencilla y limpia para tu lenguaje de programación favorito
Detección automática de fallos
No hay un punto de fallo único (cada nodo conoce de los otros)
Descentralizada
Tolerante a fallos
Permite el uso de Hadoop para implementar Map Reduce
Hinted hand off
12.
Hay algunas desventajas que un sistema de
almacenamiento tan escalable ofrece en
contrapartida:
–No hay joins (a cambio de más velocidad)
–No permite ordenar resultados en tiempo de
consulta
–No tiene SQL
•Pero desde la versión 0.8 tenemos CQL