Un poco de Cassandra

Apache Cassandra es una Base de datos NoSQL de alto rendimiento, escalable y tolerante a fallos.

Cassandra combina los beneficios de Google Bigtable y Amazon Dynamo ofreciendo una serie de características que bases de datos relacionales no pueden dar.

Cassandra se usa en Netflix, Twitter, Urban Airship, Constant Contact, Reddit, Cisco, OpenX, Rackspace, Ooyala,… y muchas más empresas que un gran conjunto de datos.

El cluster más grande de Cassandra tiene 300 TB de datos distribuido en unas 400 máquinas.

Comparando Cassandra con una base de datos relacional típica:

Modelo de datos

El modelo de datos de Cassandra se compone de:

· Esquema (keyspace): es el equivalente a una BD. Es la unidad para el control de acceso

· Tablas (Column family): es un mapa de filas. Una tabla define los nombres de las columnas y los tipos de datos. La aplicación cliente suministrará filas que cumplan al esquema de la tabla.

· Tipos de datos:

· Filas: la primera columna en una clave compuesta se usa como la clave de partición.

· Columnas: una columna es una tripleta: clave, valor y timestamp. El timestamp es suministrado por el cliente.

Cassandra usa una Arquitectura de anillo, un anillo representa un rango cíclico de valores del token.

Cada nodo tiene asiganda una posición en el anillo según su token, un nodo es responsable de todos los tokens entre su token inicial y el toekn inicial del nodo anterior más cercano en el anillo.

Las claves se mapean en el espacio de token por un particionador. Los usuarios pueden definir sus propios particionadores o usar

uno de los particionadores nativos.

Donde OP respresenta el orden de preservación.

RandomPartitioner

Con este particionador se usa una función de hash MD5 para mapear claves entre tokens

Que en nuestro caso resultaría en esta distribución:

Con RandomPartitioner, las claves se distribuyen uniformemente a través del anillo utilizando hashes, pero se sacrifica el orden, lo que significa que cualquier consulta amplia debe consultar todos los nodos en el anillo.

Order Preserving Partitioners (OPP)

Preservan el orden de las claves de fila como que se mapean en el espacio de tokens.

Con OPP, las búsquedas por rangos se simplifican y una consulta puede no necesitar consultar a cada nodo en el anillo. Esto parece una ventaja, pero tiene un precio, ya que puede hacer que el anillo no esté equilibrado.

Replicación

Cassandra proporciona alta disponibilidad y tolerancia a fallos a través de replicación de datos.

La replicación utiliza el anillo para determinar los nodos utilizados para replicación.

Cada espacio de claves tiene un factor de replicación independiente, n.

Cuando se escribe información, los datos se escriben en el nodo de destino como se determina por el particionador y en los n-1 nodos posteriores a lo largo del anillo.

Hay dos estrategias de replicación: SimpleStrategy y NetworkTopologyStrategy.

SimpleStrategy

Es la estrategia por defecto, escribe los datos a los nodos posteriores a lo largo del anillo.

En el ejemplo anterior con un factor de replicación de 2, esto daría lugar a la asignación de almacenamiento siguiente.

NetworkTopologyStrategy

Es útil cuando se despliega a múltiples datacenters ya que asegura que los datos se replican en estos.

Niveles de consistencia

Los clientes pueden especificar el nivel de consistencia en la lectura y escritura balanceando entre la alta disponibilidad, consistencia y el rendimiento.

Nodetool Repair

Cassandra mantiene un registro de los valores borrados por algún tiempo para apoyar la consistencia eventual de eliminaciones distribuidas. Estos valores se llaman tombstones. Estas se purgan después de algún tiempo (GCGraceSeconds, que por defecto es de 10 días).

Incluso se puede garantizar la coherencia ejecutando: >$CASSANDRA_HOME/bin/nodetool repair

Este comando garantiza la coherencia en todo el clúster y evita los tombstones.

Monitorización

Cassandra tiene soporte para la monitorización a través de JMX, pero la forma más sencilla es mediante el uso de OpsCenter, que está diseñado para administrar y supervisar grupos de base de datos Cassandra. Hay una versión libre (Community Edition).

Copia de seguridad

OpsCenter facilita la copia de seguridad de datos, proporcionando instantáneas de los datos.

Una instantánea crea un enlace hard a cada nueva SSTable en vivo.

Cassandra también ofrece servicios en línea de copia de seguridad utilizando nodetool.

Para tomar una instantánea de los datos en el clúster >$CASSANDRA_HOME/bin/nodetool snapshot

LIBRERÍAS CLIENTE

Cassandra tiene una comunidad muy activa desarrollando librerías para diferentes lenguajes.

A %d blogueros les gusta esto: