Está en la página 1de 15

UNIVERSIDAD EUROPEA DE MADRID

MÁSTER UNIVERSITARIO EN ANÁLISIS DE DATOS MASIVOS (BIG DATA)

BASES DE DATOS DE NUEVA GENERACIÓN

Profesor:
Samuel M. García Saboya

Actividad:
Actividad 07 - Cassandra

Alumno:
ILIANA TAYRI RAMOS CEVALLOS
Índice

1. Objetivo ....................................................................................................................... 3

2. Desarrollo .................................................................................................................... 4

a. Parte 1. ........................................................................................................................ 4

b. Parte 2. ...................................................................................................................... 11

2 Conclusiones.............................................................................................................. 14

3 Bibliografía................................................................................................................. 15

2
1. Objetivo

El documento que se entrega se ha desarrollado con la siguiente estructura parte teórica y parte
práctica sobre la base de datos NoSQL tipo Cassandra.

Con el objetivo de poder entender y comprender la información básica dicha base de datos, sus
características, las ventajas y desventajas de su uso, algunas herramientas para su gestión y
administración y además de los requisitos que debe tener el ordenador para poder instalar y hacer uso
de esta.

3
2. Desarrollo
La actividad se divide de la siguiente manera:

a. Parte 1.
En la parte 1 de la actividad se realiza la parte teórica.

1. Introducción.

1.1 ¿Qué es Cassandra? Definicición, quién la creó, tipo de base de datos. (Máximo 3 líneas)

Cassandra es una base de datos distribuida altamente escalable creada por Facebook en 2008.
Es una base de datos NoSQL diseñada para manejar grandes volúmenes de datos en un
entorno distribuido y tolerante a fallos.

1.2 Conceptos básicos, técnicos y patrones. (Máximo 2 folios)

Los conceptos básicos de Apache Cassandra se centran en su arquitectura distribuida y su


modelo de datos basado en columnas. Utiliza un enfoque descentralizado con una red de
nodos que se comunican de forma peer-to-peer, lo que proporciona escalabilidad horizontal y
alta disponibilidad. Cada nodo en el clúster es igualmente responsable de almacenar y servir
datos.

Técnicamente, Cassandra utiliza un protocolo de comunicación llamado Gossip para el


descubrimiento y la propagación del estado del clúster. Implementa un sistema de
particionamiento y replicación automática para garantizar la tolerancia a fallos y la distribución
uniforme de los datos. Además, utiliza un mecanismo de escritura optimista y un modelo de
consistencia basado en el teorema CAP (Consistency, Availability, Partition tolerance).

En cuanto a los patrones de uso, Cassandra es ideal para aplicaciones que requieren un alto
rendimiento de lectura y escritura, especialmente en entornos de Big Data y IoT. Se utiliza
comúnmente en casos de uso como análisis de registros, seguimiento de usuarios,
almacenamiento de datos de series temporales y aplicaciones en tiempo real donde la
escalabilidad y la disponibilidad son críticas. Los patrones de acceso típicos incluyen consultas
por clave primaria, rangos de claves, y consultas de índice secundario utilizando columnas
indexadas. Además, se emplean estrategias avanzadas de modelado de datos como la
denormalización y el uso de columnas estáticas y dinámicas para optimizar el rendimiento y
minimizar las consultas complejas.

2. Guía de instalación.

4
2.1 Requisitos técnicos para tu sistema operativo o el que elijas.

• Sistema Operativo: Windows 7 o posterior, preferiblemente una versión de 64 bits.

• Java Development Kit (JDK): Cassandra es una aplicación Java, por lo que necesitarás tener
instalado al menos el JDK 8 o una versión superior. Asegúrate de configurar correctamente
la variable de entorno JAVA_HOME.

• Memoria RAM: Se recomienda tener al menos 8 GB de RAM para un buen rendimiento,


aunque se puede ejecutar en sistemas con menos memoria, pero con limitaciones.

• Espacio en Disco: Deberás disponer de suficiente espacio en disco para la instalación de


Cassandra y para el almacenamiento de datos. Asegúrate de tener al menos 1 GB para la
instalación y espacio adicional para los datos según tus necesidades.

2.2 Instalación en el sistema operativo elegido o algún sistema de virtualización.

5
3. Responde a las siguientes preguntas.

3.1 Según el teorema del CAP, ¿cuáles son las características principales de Cassandra? Breve
descripción. (Máximo 1 folio)

El teorema CAP establece que en un sistema distribuido, es imposible garantizar simultáneamente


Consistencia (C), Disponibilidad (A) y Tolerancia a particiones (P). En el contexto de Cassandra:

• Disponibilidad (Availability): Cassandra prioriza la disponibilidad y el acceso a los datos en


cualquier momento, incluso en condiciones adversas como fallas de red o de nodos. Esto
se logra mediante el diseño descentralizado de la arquitectura, donde cada nodo puede
atender las solicitudes de los clientes de manera independiente.

• Tolerancia a particiones (Partition tolerance): Cassandra es altamente tolerante a fallos y


particiones de red. Los datos están distribuidos entre múltiples nodos en el clúster, lo que
permite que el sistema continúe funcionando incluso si algunos nodos o partes de la red
fallan o se desconectan.

Cassandra sacrifica la consistencia fuerte para lograr disponibilidad y tolerancia a particiones, lo


que significa que puede haber casos en los que los datos no estén inmediatamente consistentes en
todos los nodos del clúster. Sin embargo, ofrece un nivel de consistencia configurable, permitiendo
a los usuarios elegir entre diferentes modelos de consistencia según las necesidades específicas de
sus aplicaciones. Esto hace que Cassandra sea ideal para aplicaciones que requieren alta
disponibilidad y escalabilidad en entornos distribuidos. (IBM, s.f.)

3.2 Enumera y define, 3 características de Cassandra que sea una ventaja sobre las bases de
datos SQL. (Máximo 3 líneas por cada característica)

• Escalabilidad horizontal: Cassandra es altamente escalable horizontalmente, lo que


significa que puede manejar grandes volúmenes de datos distribuyendo la carga entre
múltiples nodos en un clúster. Esto permite un crecimiento sin problemas de la capacidad
de almacenamiento y el rendimiento de la base de datos sin necesidad de
reconfiguraciones costosas.

6
• Alta disponibilidad: Debido a su arquitectura descentralizada y tolerante a fallos,
Cassandra ofrece alta disponibilidad incluso en el caso de fallos de nodos individuales o
particiones de red. Los datos se replican automáticamente entre los nodos, lo que
garantiza que siempre estén disponibles para las consultas, incluso en situaciones de fallo.

• Esquema flexible y dinámico: A diferencia de las bases de datos SQL tradicionales que
requieren un esquema fijo y predefinido, Cassandra permite un modelo de datos flexible y
dinámico. Los usuarios pueden agregar nuevas columnas o cambiar la estructura de la
tabla sin afectar el rendimiento ni interrumpir el servicio, lo que facilita la adaptación a
cambios en los requisitos de la aplicación.

3.3 Enumera y define, 3 características de Cassandra que sean una desventaja sobre las bases de
datos SQL. (Máximo 3 líneas por cada característica)

• Consistencia eventual: Aunque Cassandra ofrece varios niveles de consistencia, incluida la


consistencia eventual, esto puede resultar en la posibilidad de leer datos no actualizados o
inconsistentes en ciertos escenarios, lo que puede no ser adecuado para aplicaciones que
requieren coherencia inmediata de los datos.

• Complejidad de consultas: Cassandra no admite consultas complejas como JOINs o


agregaciones complejas fuera de las capacidades de la función de agregación incorporada.
Esto puede dificultar la realización de análisis complejos o consultas que involucren
múltiples tablas en comparación con las bases de datos SQL tradicionales.

• Modelado de datos desnormalizado: Aunque la flexibilidad del modelo de datos de


Cassandra es una ventaja, puede resultar en la necesidad de desnormalizar los datos para
optimizar el rendimiento, lo que puede aumentar la complejidad del diseño de la base de
datos y la gestión de la consistencia de los datos redundantes.

3.4 Enumera y define 3 herramientas para la gestión y administración de Cassandra. (Máximo 3


líneas por cada herramienta)

• DataStax OpsCenter: Una plataforma de gestión y monitorización integral para clústeres de


Cassandra. Proporciona una interfaz gráfica para realizar tareas administrativas como la
configuración, el monitoreo del rendimiento y la resolución de problemas de manera
centralizada.

• Cassandra Reaper: Una herramienta de código abierto desarrollada por Spotify para la
gestión automatizada de reparación y mantenimiento de clústeres de Cassandra. Ayuda a
prevenir la degradación del rendimiento al identificar y solucionar automáticamente
inconsistencias de datos y problemas de replicación.

7
• cqlsh (Cassandra Query Language Shell): Una utilidad de línea de comandos incluida con la
instalación de Cassandra que permite interactuar con los clústeres de Cassandra utilizando
CQL. Permite ejecutar consultas, administrar esquemas de bases de datos y realizar tareas
de administración básicas directamente desde la línea de comandos.

3.5 Explica el sistema de lenguaje de programación de Cassandra. (Máximo 1 folio)

El sistema de lenguaje de programación de Cassandra se basa principalmente en CQL (Cassandra


Query Language), que es un lenguaje similar a SQL diseñado específicamente para interactuar con
bases de datos Cassandra. CQL proporciona una sintaxis familiar para los desarrolladores que están
acostumbrados a trabajar con SQL, pero con algunas diferencias importantes para adaptarse al
modelo de datos de Cassandra y sus capacidades distribuidas.

CQL permite a los desarrolladores realizar una variedad de operaciones en una base de datos
Cassandra, incluyendo la creación y gestión de tablas, la inserción, actualización, eliminación y
consulta de datos, así como la creación y gestión de índices y usuarios.

Una característica clave del sistema de lenguaje de programación de Cassandra es su soporte para
consultas flexibles y potentes. CQL permite a los usuarios realizar consultas por clave primaria,
rangos de claves y columnas, así como consultas de índices secundarios. Además, ofrece funciones
agregadas y de transformación de datos para realizar cálculos complejos en los resultados de las
consultas.

Además de CQL, los desarrolladores también pueden interactuar con Cassandra a través de varios
controladores de clientes disponibles en diferentes lenguajes de programación, como Java, Python,
C#, entre otros. Estos controladores proporcionan interfaces programáticas para conectar y
comunicarse con clústeres de Cassandra, lo que permite a los desarrolladores integrar fácilmente
Cassandra en sus aplicaciones utilizando su lenguaje de programación preferido.

En resumen, el sistema de lenguaje de programación de Cassandra se centra en CQL como el


lenguaje principal para interactuar con la base de datos, proporcionando una sintaxis familiar y
potente para realizar una amplia gama de operaciones de gestión y consulta de datos en un
entorno distribuido.

3.6 Explica el sistema de lenguaje de programación de Cassandra. (Máximo 1 folio)

En una base de datos como Cassandra, donde la disponibilidad y la tolerancia a fallos son
fundamentales, la seguridad juega un papel crucial para evitar el fallo único del sistema. Para lograr
esto, Cassandra implementa varios mecanismos de seguridad que protegen los datos y los recursos
del sistema contra accesos no autorizados y posibles vulnerabilidades. Algunas de las
características y prácticas clave en este sentido son:

8
1. Autenticación: Cassandra ofrece varios mecanismos de autenticación, incluyendo autenticación
basada en contraseña y autenticación basada en certificados SSL/TLS. Los usuarios deben
autenticarse antes de acceder a la base de datos, lo que garantiza que solo aquellos con
credenciales válidas puedan realizar operaciones.

2. Autorización: Una vez autenticados, los usuarios deben ser autorizados para realizar
operaciones específicas en la base de datos. Cassandra utiliza un sistema de roles y permisos
para controlar el acceso a los datos y las operaciones. Los administradores pueden asignar
roles a los usuarios y definir permisos granulares a nivel de tabla o clave para restringir el
acceso según sea necesario.

3. Seguridad en la comunicación: Cassandra utiliza cifrado SSL/TLS para garantizar la seguridad de


la comunicación entre clientes y nodos de la base de datos, lo que protege los datos contra
posibles ataques de escucha pasiva o manipulación de datos durante la transferencia.

4. Auditoría y registro de eventos: Cassandra ofrece capacidades de auditoría y registro de


eventos para rastrear y registrar las actividades de los usuarios en la base de datos. Esto
permite a los administradores monitorear el acceso y las operaciones realizadas en la base de
datos, lo que facilita la detección y el seguimiento de posibles amenazas o actividades
sospechosas.

5. Seguridad a nivel de red: Además de los controles de acceso y autenticación, es importante


implementar medidas de seguridad a nivel de red para proteger los nodos de la base de datos
contra posibles ataques externos. Esto puede incluir el uso de firewalls, filtrado de direcciones
IP y otros mecanismos de seguridad de red para limitar el acceso a los nodos de Cassandra
desde fuentes confiables.

En conjunto, estos mecanismos de seguridad ayudan a garantizar que Cassandra pueda resistir
fallos únicos del sistema al proteger los datos y los recursos del sistema contra accesos no
autorizados, garantizando la integridad, confidencialidad y disponibilidad de los datos almacenados
en la base de datos.

3.7 ¿Es lo mismo la replicación que la partición? Pon un ejemplo. ¿La partición mejora la
tolerancia a fallos de Cassandra o la empeora? (Máximo 1 folio)

Replicación: En Cassandra, la replicación se refiere al proceso de copiar datos entre múltiples


nodos en el clúster. Esto se hace para garantizar la disponibilidad y la redundancia de los datos, así
como para mejorar el rendimiento al distribuir la carga de lectura entre varios nodos. Cada
partición de datos tiene una o más réplicas distribuidas en diferentes nodos en el clúster, lo que
garantiza que los datos estén disponibles incluso en caso de fallo de un nodo o de una partición de
red.

9
Por ejemplo, si tenemos un clúster de Cassandra con tres nodos y una replicación de factor tres,
cada partición de datos se replicará en tres nodos diferentes. Si un nodo falla, los datos todavía
estarán disponibles en los nodos restantes que contienen las réplicas.

Partición: La partición se refiere al proceso de dividir los datos en secciones más pequeñas y
distribuirlos entre los nodos del clúster. Cada partición se asigna a un nodo específico utilizando
una función de particionamiento, que determina el nodo responsable de almacenar y servir los
datos para una clave dada. Esto permite que Cassandra escale horizontalmente, ya que cada nodo
es responsable de un subconjunto de datos en lugar de tener que manejar todos los datos en el
clúster.

La partición mejora la tolerancia a fallos de Cassandra al distribuir los datos entre múltiples nodos,
lo que reduce la probabilidad de pérdida de datos en caso de fallo de un nodo o de una partición
de red. Sin embargo, la partición también introduce un riesgo potencial: si un nodo o partición de
red específica falla, los datos que se encuentran en esa partición pueden volverse inaccesibles
hasta que se restaure la disponibilidad. Por lo tanto, si bien la partición mejora la tolerancia a fallos
en general, puede haber casos en los que la indisponibilidad de una partición específica afecte
temporalmente la disponibilidad de los datos. Sin embargo, este riesgo se mitiga mediante la
replicación, ya que las réplicas de los datos están distribuidas en varios nodos para garantizar la
disponibilidad en caso de fallo.

3.8 ¿Cómo sabe Cassandra si al leer devuelve la versión más actual de los datos leídos? (Máximo
1 folio)

Cassandra utiliza un mecanismo llamado "reloj vectorial" (vector clock) para determinar la versión
más actual de los datos durante una lectura. El reloj vectorial es una estructura de metadatos
asociada a cada versión de un objeto en Cassandra que lleva un registro de las versiones anteriores
y la procedencia de cada actualización.

Cuando se realiza una lectura en Cassandra, se consulta a múltiples nodos para recuperar los datos
solicitados. Cada nodo devuelve la versión de los datos junto con su correspondiente reloj
vectorial. El coordinador de la consulta luego compara los relojes vectoriales recibidos para
determinar la versión más reciente de los datos. Si hay múltiples versiones con el mismo
timestamp, se utiliza una estrategia de resolución de conflictos basada en políticas de consistencia
configuradas.

Si el reloj vectorial indica que la versión de los datos es más reciente que cualquier otra versión
conocida por el cliente, se devuelve esa versión como la más actual. En caso de que haya conflictos
o inconsistencias en los relojes vectoriales, se pueden aplicar políticas de consistencia configuradas
para resolverlos, como el uso de la consistencia local o la consistencia de quórum.

10
b. Parte 2.
En la parte 2 de la actividad se realiza la parte práctica.

1. Crea un Keyspace llamado "firstkeyspace", no hace falta que sea ordenable.

2. Selecciona este Keyspace que acabas de crear.

3. Crea una tabla llamada "employee", con los siguientes atributos "emp_id" de tipo entero,
"emp_name" de tipo texto, "emp_age" de tipo entero, siendo la Primary Key el atributo
“emp_id".

11
4. ¿Qué me devuelve el comando "describe tables"?

El comando DESCRIBE TABLES; en el cliente de CQL (cqlsh) de Cassandra devuelve una lista de
todas las tablas existentes en el Keyspace activo. Esta lista incluirá el nombre de cada tabla en el
Keyspace, así como cualquier información adicional relevante, como las columnas y restricciones
de cada tabla como lo mostramos anteriormente.

5. ¿Qué me devuelve el comando "describe employee"?

El comando DESCRIBE employee; en el cliente de CQL (cqlsh) de Cassandra devuelve información


detallada sobre la estructura de la tabla llamada "employee". Esta información incluirá los nombres
de las columnas, los tipos de datos de las columnas y cualquier restricción aplicada, como la clave
primaria.

6. Inserta al empleado llamado Juan de 20 años, al empleado llamado Pedro de 21 años y a la


empleada María de 22 años.

7. Muestra por pantalla el primer empleado introducido.

8. Muestra al empleado con nombre "Pedro". Explica lo que ha ocurrido.

12
9. Actualiza la edad del primer empleado a 25 años

10. Actualiza la edad de Pedro a 27 años

11. Borra al primer empleado de la tabla.

12. Borra todos los elementos de la tabla con un solo comando.

13. Elimina la tabla

14. Borra el Keyspace.

13
2 Conclusiones
El realizar esta actividad me ha permitido entender los conceptos básicos de la base de datos NoSQL
CASSANDRA, me ha resultado interesante realizar esta actividad porque pude poner en practica con los
ejercicios los comandos básicos de esta base de datos.

Considero que la parte más difícil o he encontrado problemas a la hora de realizar la instalación del
Docker, pero con la guía pude realizarla.

14
3 Bibliografía
IBM. (s.f.). IBM. Obtenido de https://www.ibm.com/es-es/topics/cap-
theorem#:~:text=En%20relaci%C3%B3n%20con%20el%20teorema%20CAP%2C%20Cassandra
%20es%20una%20base,nodos%20deben%20estar%20disponibles%20continuamente.

15

También podría gustarte