INTRODUCCIÓN
Cassandra es un sistema de gestión de base de datos NoSQL distribuida de código abierto creada para hacerse cargo de grandes cantidades de datos a través de muchos servidores de producto, permitiendo contar con una alta disponibilidad sin existir punto único de fallo. Cassandra brinda soporte robusto para múltiples centros de datos, con la replicación asíncrona sin tener que contar con un servidor maestro aprobando operaciones de baja latencia para todos los clientes.Base de datos distribuida
En el lenguaje de Cassandra se
traduce en que los datos son distribuidos a través de múltiples máquinas. Es
decir, no existe un único nodo que gestione todos los datos, aunque sí que se
ocupa de parte de ellos. Por consiguiente, no estamos limitados por la
capacidad de almacenamiento y procesamiento de una única máquina. En el caso de
que los datos crezcan sustancialmente, basta con agregar más máquinas. Esto
viene a decir que la caída de un nodo no implica que todos los datos se
pierdan.
Siempre que un mecanismo
distribuido esté bien diseñado, éste escalará con un número de nodos. Un claro
exponente de un sistema de este tipo es Cassandra. Escala de manera casi lineal
en relación al rendimiento cuando se añaden nuevos nodos. Esto se traduce en
que Cassandra es capaz de hacerse cargo de una cantidad enorme de datos sin
suponerle un problema.
Alta disponibilidad
Un sistema de alta disponibilidad es el que está listo para atender cualquier petición en cualquier momento. La alta disponibilidad se logra habitualmente mediante la incorporación de redundancias. Por consiguiente, si una parte deja de funcionar, la otra parte del sistema es capaz de servir la petición. Desde el punto de vista del cliente, esto se traduce en que todo sigue funcionando correctamente.
Cassandra puede hacerse resistente a fallos mediante unos ajustes previos adecuados. Esto se traduce en que si algunos de los servidores fallan, la pérdida de datos será nula. Por este motivo, se puede desplegar Cassandra sobre hardware básico barato o en un entorno de nube, donde fallos de hardware o infraestructura podrían tener lugar.
Replicación
Cassandra tiene un gran mecanismo de replicación. Cassandra trata a cada nodo de la misma manera. Los datos no tienen que ser escritos en un servidor específico y no es necesario esperar hasta que los datos se escriban en todos los nodos que los replican.
Por consiguiente, no existe maestro o esclavo en Cassandra y la replicación sucede de manera asíncrona. Esto se traduce en que se puede devolver al cliente con éxito como una respuesta tan pronto como el dato sea escrito en al menos un servidor.
Como disponemos de la capacidad de poder decidir el número de nodos desde donde leer o en los que escribir, podemos cambiarlos para poder obtener una latencia muy baja.
Por consiguiente, no existe maestro o esclavo en Cassandra y la replicación sucede de manera asíncrona. Esto se traduce en que se puede devolver al cliente con éxito como una respuesta tan pronto como el dato sea escrito en al menos un servidor.
Como disponemos de la capacidad de poder decidir el número de nodos desde donde leer o en los que escribir, podemos cambiarlos para poder obtener una latencia muy baja.
Múltiples centros de datos
Con Cassandra podemos hacer uso de cada centro de datos para llevar a cabo distintas actividades sin sobrecargar los otros centros de datos. De tal manera que no haya que preocuparse de si los usuarios en un determinado país con un centro de datos en una determinada ciudad y los usuarios en otro país con un centro de datos en otra determinada ciudad estén sincronizados o no.
Cassandra es una base de datos por filas. La arquitectura de Cassandra permite a cualquier usuario autorizado conectarse a cualquier nodo en cualquier centro de datos y acceder a los datos mediante el uso del lenguaje CQL. Para facilidad de uso, CQL utiliza una sintaxis similar a SQL. Desde la perspectiva de CQL, la base de datos consta de tablas. Por lo general, un clúster tiene un espacio de claves por aplicación. Los desarrolladores pueden acceder a CQL mediante ‘cqlsh’.
Las solicitudes de escritura o lectura de cliente pueden ser enviadas a cualquier nodo del clúster. Cuando un cliente se conecta a un nodo con una petición, ese nodo sirve como nodo coordinador de esa operación de cliente en particular. El coordinador actúa como un proxy entre la aplicación de cliente y los nodos que son dueños de los datos que están siendo solicitados. El coordinador determina qué nodos en el anillo deberían hacerse cargo de la solicitud en función de cómo esté configurado el clúster.
A continuación, se indican una serie de puntos que definen el modelo de datos de Cassandra:
ARQUITECTURA CASSANDRA
Cassandra está diseñada para hacerse cargo de grandes cargas de trabajo de datos a través de múltiples nodos sin existir punto único de fallo. Su arquitectura está basada en el entendimiento de que fallos de sistema y hardware suceden. Cassandra maneja el problema de los fallos mediante el empleo de un sistema distribuido peer-to-peer entre nodos homogéneos, donde los datos se distribuyen entre todos los nodos del clúster. Cada nodo intercambia información a través del clúster cada segundo. Un registro escrito secuencialmente en cada nodo capta la actividad escrita para asegurar la durabilidad de los datos. Los datos son entonces indexados y escritos en una estructura en memoria, conocida como “memtable”, que se asemeja a una caché de escritura diferida.Cassandra es una base de datos por filas. La arquitectura de Cassandra permite a cualquier usuario autorizado conectarse a cualquier nodo en cualquier centro de datos y acceder a los datos mediante el uso del lenguaje CQL. Para facilidad de uso, CQL utiliza una sintaxis similar a SQL. Desde la perspectiva de CQL, la base de datos consta de tablas. Por lo general, un clúster tiene un espacio de claves por aplicación. Los desarrolladores pueden acceder a CQL mediante ‘cqlsh’.
Las solicitudes de escritura o lectura de cliente pueden ser enviadas a cualquier nodo del clúster. Cuando un cliente se conecta a un nodo con una petición, ese nodo sirve como nodo coordinador de esa operación de cliente en particular. El coordinador actúa como un proxy entre la aplicación de cliente y los nodos que son dueños de los datos que están siendo solicitados. El coordinador determina qué nodos en el anillo deberían hacerse cargo de la solicitud en función de cómo esté configurado el clúster.
Representación de la arquitectura de Apache Cassandra |
MODELO DE DATOS
La base de datos de Cassandra se distribuye en varias máquinas que trabajan juntas. El contenedor más externo es conocido como Clúster. Para el control de fallos, cada nodo dispone de una réplica y, en caso de producirse un fallo, la réplica se ocupa de éste. Además, Cassandra dispone los nodos de un cluster en forma de anillo y les asigna los datos.A continuación, se indican una serie de puntos que definen el modelo de datos de Cassandra:
- Cassandra se ocupa de datos no estructurados.
- Cassandra tiene un esquema flexible.
- En Cassandra una tabla es una lista de pares de clave-valor anidados.
- Keyspace es el contenedor más externo que contiene datos correspondientes a una aplicación.
- Las tablas o familias de columna son la entidad de un keyspace.
- La fila es una unidad de replicación en Cassandra.
- La columna es una unidad de almacenamiento en Cassandra.
- Las relaciones se representan mediante colecciones.
CONSOLA CQLSH
Apache Cassandra dispone de una consola (cqlsh) para poder ejecutar sentencias de su lenguaje (Cassandra Query Language). A continuación, se van a dar algunas pinceladas sobre esta consola (cqlsh) de Cassandra.
Opciones de la consola cqlsh
- cqlsh --help: muestra ayuda para las opciones de los comandos de la consola cqlsh.
- cqlsh --version: versión del cqlsh que se está utilizando.
- cqlsh --color: para usar salida coloreada.
- cqlsh --debug: muestra información adicional del debug.
- cqlsh --execute sentencia_cql: para aceptar y ejecutar un comando CQL.
- cqlsh --file nombre_archivo: Cassandra ejecuta el comando en el archivo dado.
- cqlsh --no-color: para no usar salida coloreada.
- cqlsh -u nombre_usuario: para autenticar un usuario.
- cqlsh -p clave_usuario: para autenticar un usuario con una clave.
Comandos de la consola cqlsh
Siguiendo con las pinceladas sobre la consola cqlsh de Cassandra que se están dando, se van a indicar los comandos de la consola documentados:
- Capture: captura la salida de un comando.
- Consistency: muestra/establece el nivel actual de consistencia.
- Copy: copia los datos desde/hacia Cassandra.
- Describe: describe el clúster actual y sus objetos.
- Expand: expande la salida de una consulta verticalmente.
- Exit: para salir de cqlsh.
- Help: muestra los temas de ayuda para todos los comandos cqlsh.
- Paging: habilita/deshabilita la paginación de la consulta.
- Show: muestra detalles sobre la sesión actual de cqlsh.
- Source: ejecuta un fichero que contiene sentencias CQL.
- Tracing: activa/desactiva el request tracing.
¿POR QUÉ USAR APACHE CASSANDRA?
Se han identificado 5 motivos principales por los que se recomienda usar Apache Cassandra:- Su aprendizaje es sencillo.
- Tiene una gran tolerancia a los fallos.
- Lecturas rápidas y escrituras aún más rápidas.
- Decrementa los costes de administración y los gastos generales para aquellas tareas que no son esenciales.
- Facilita soluciones simples ante problemas complejos.
BIBLIOGRAFÍA
- Neeraj, Nishant (25 de Octubre de 2013). Mastering Apache Cassandra (Primera Edición). Packt Publishing Ltd. p. 340. ISBN 978-1782162681.
- Quintero, Dino; de Souza Casali, Daniel; Correia Lima, Marcelo; Gabor Szabo, Istvan; Olejniczak, Maciej; Rodrigues de Mello, Tiago; Nilton dos Santos, Carlos (19 de Junio de 2015). IBM Platform Computing Solutions for High Performance and Technical Computing Workloads (Primera Edición). IBM Redbooks. p. 176. ISBN-13 9780738440750.
- Deepak Vohra (13 de Enero de 2015). NoSQL Web Development with Apache Cassandra (Primera Edición). Cengage Learning. p. 464. ISBN-13: 9781305576766.
ENLACES RECOMENDADOS
- Apache Cassandra. Wikipedia. https://es.wikipedia.org/wiki/Apache_Cassandra.
- Cassandra Tutorial. Tutorialspoint. http://www.tutorialspoint.com/cassandra.
- The Apache Cassandra Project. Apache Cassandra. https://cassandra.apache.org.
No hay comentarios:
Publicar un comentario