martes, 28 de febrero de 2017

7.- Apache Cassandra







Apache Cassandra
Resultado de imagen para 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