Apache
Cassandra
|
http://cassandra.apache.org/
|
Descripción
|
Es un gestor de datos no-relacional y no SQL. Utiliza un estilo
denominado BigTable y está diseñada para guardar campos-valores, lo que
permite dinamismo en el diseño, pero pérdida para el paradigma relacional de
estricta tipificación. Es una base dee datos distribuida de código abierto
altamente escalable para manejar grandes cantidades de datos es un componente
clave en cloud computing.
|
S.O.
soportados
|
Soporta:
BSD
Linux
OS X
Windows
|
Aplicaciones
|
Cassandra nos proporciona
tolerancia a particiones y disponibilidad, pero a cambio de ser eventualmente
consistente, tal y como define el teorema CAP. El nivel de consistencia puede
ser configurado, según nos interese, incluso a nivel de query.
Es distribuida, lo quiere
decir que la información está repartida a lo largo de los nodos del cluster.
Además ofrece alta disponibilidad, de manera que si alguno de los nodos se
cae el servicio no se degradará.
Escala linealmente, lo que
quiere decir que el rendimiento de forma lineal respecto al número de nodos
que añadamos. Por ejemplo, si con 2 nodos soportamos 100.000 operaciones por
segundo, con 4 nodos soportaremos 200.000. Esto da mucha predictibilidad a
nuestros sistemas.
Escala de forma horizontal,
lo que quiere decir que podemos escalar nuestro sistema añadiendo nuevos
nodos basados en hardware commodity de bajo coste.
Implementa una arquitectura
Peer-to-Peer, lo que elimina los puntos de fallo único y no sigue patrones maestro-esclavo
como otros sistemas de almacenamiento. De esta manera cualquiera de los nodos
puede tomar el rol de coordinador de una query. Será el driver el que decida
qué nodo quiere que sea el coordinador.
Los datos son repartidos a
lo largo del cluster en base a un token único calculado para cada fila por
una función hash. Los nodos se reparten equitativamente el rango de tokens que va de -263 a 263, esto
define el nodo primario. Internamente Cassandra replicará los datos entre los
nodos con la política que le definamos, por ejemplo definiendo el factor de
replicación. Además soporta el concepto de data center para agrupar los nodos
lógicamente y tener los datos más cerca del usuario.
Permite integración con
otras soluciones de Big Data, como Hodoop, permitiendo su uso en clusters de
análisis de datos.
API para uso en
aplicaciones Cassandra posee el CQL (Cassandra Query Language) y posee
drivers que implementan la API de acceso a los datos del cluster.
Actualmente, existen varias implementaciones del driver para aplicaciones
escritas en Java, Python, C++, C#, entre otras.
La interfaz primaria y por
defecto para comunicarnos con Cassandra es CQL (Cassandra Query Language). Su
sintaxis es muy similar a SQL (Structured Query Language) con la principal diferencia
de que Cassandra no soporta joins o subqueries. Para ejecutar sentencias CQL,
Cassandra viene con una herramienta por consola llamada cqlsh.
|
Escalabilidad
|
Numero de usuarios concurrentes
Algunos de los mayores despliegues de
producción incluyen Apple, con más de 75.000 nodos almacenando más de 10 PB
de datos, Netflix (2.500 nodos, 420 TB, más de 1 billón de solicitudes por
día), Easou (270 nodos, 300 TB, más de 800 millones Solicitudes por día) y
eBay (más de 100 nodos, 250 TB).
Transacciones
no orientado a
transacciones este es le factor mas débil de esta tecnología.
El hecho de
tener los datos guardados columna a columna nos permite retornar las filas
mas rápidamente, pero al insertar, actualizar o borrar un registro, se deberá
hacer en mas de una ubicación
Herramientas de apoyo
- cqlsh: the CQL
shell
-Nodetool
-Usage
|
Soporte técnico
|
https://wiki.apache.org/cassandra/ThirdPartySupport
|
Costo y tipos de licencia
|
Apache Cassandra es un proyecto de Apache Software Foundation, por lo
que tiene una Apache License (version 2.0).
|
Ultima
actualización
|
3.10, febrero 2017
|
Clientes
importantes que la usan
|
Cisco
Cloudkick
Digg
Facebook
Rack
Twitter
|
Requisitos
de instalación
|
Sistema operativo, lo mejor un sistema operativo de 64bits, a mayor
estabilidad mejor rendimiento. Por supuesto, Unix o Linux, incluido Mac OSX y
Windows.
|
Requisitos
de hardware
|
1Gb. de mínimo de memoria RAM bajo entornos
virtualizados, si el hardware es dedicado debería ser superior a 4Gb. de
todas formas es habitual encontrarse cluster con 16 y 32 Gb. de memoria RAM.
A nivel de CPU Cassandra trabaja de forma
excelente con sistemas multi-núcleo así que a mayor número de cores, mayor
rendimiento. Así pues si precisas de un gran rendimiento, no te cortes y tira
por sistemas de cuatro u ocho núcleos.
|
Requisitos
de software
|
Java actualizado y con
path, Visual C + + 2008 Runtime (32 bits)
|
Requisitos
de almacenamiento
|
Capacidad de disco, ideal 2 discos por cada
cluster, en uno se almacena el llamado CommitLogDirectory o fichero de
registro de activicidad (log) y en el otro los datos o DataFileDirectories.
|
Lenguajes Soportados
|
C#
C++ Clojure Erlang Go Haskell Java JavaScript Perl PHP Python Ruby Scala |
Referencias:
http://cassandra.apache.org/
https://uvedobles.com/base-de-datos-cassandra/
https://wiki.apache.org/cassandra/ThirdPartySupport
http://www.psafe.com/es/blog/que-es-apache-cassandra/
https://es.wikipedia.org/wiki/Apache_Cassandra#Licenciamiento_y_Soporte
http://db-engines.com/en/system/Cassandra
Por: José Miguel Flores Romo
No hay comentarios:
Publicar un comentario