Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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.
• 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.
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)
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)
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)
• 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.
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 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.
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)
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.
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.
12
9. Actualiza la edad del primer empleado a 25 años
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