🎯 Objetivo:
Comprender cómo Cassandra realiza la lectura distribuida de datos, cómo se comporta un clúster al consultar información y qué factores influyen en el rendimiento y la consistencia.
🌐 Cassandra: base de datos distribuida
En Cassandra, los datos están repartidos entre varios nodos (servidores). Cada nodo contiene una porción del total y trabaja de forma cooperativa con los demás.
Esto permite:
-
Alta disponibilidad (si uno cae, otro responde).
-
Escalabilidad horizontal (más nodos = más potencia).
-
Lecturas y escrituras en paralelo.
🔁 ¿Cómo funciona una lectura?
Cuando haces una consulta en Cassandra:
-
El cliente se conecta a un nodo del clúster (llamado coordinador).
-
El nodo coordinador identifica la clave de partición que se busca.
-
El coordinador consulta al nodo que tiene esa partición (o nodos, si hay réplicas).
-
El resultado se reconstruye y se devuelve al cliente.
👉 Todo esto ocurre en milisegundos gracias a la arquitectura distribuida.
📦 Ejemplo práctico
Supongamos esta tabla:
Y tienes un clúster con 3 nodos:
-
Cada
id_ventase asigna a un nodo según la clave de partición. -
Cuando haces:
Cassandra busca directamente en el nodo que tiene esa partición, sin escanear toda la base.
🧪 ¿Qué pasa si hay réplicas?
Cassandra puede tener copias (réplicas) del mismo dato en varios nodos.
| Replication Factor | ¿Qué significa? |
|---|---|
| 1 | Cada dato existe en 1 solo nodo. |
| 2 o más | Hay copias en 2 o más nodos distintos. |
Esto ayuda a:
-
Asegurar disponibilidad si un nodo cae.
-
Permitir lecturas más rápidas (el nodo coordinador elige el más cercano o menos cargado).
⚙️ Nivel de consistencia
Cuando haces una lectura, puedes definir el nivel de consistencia, como:
| Nivel | Qué exige |
|---|---|
| ONE | Basta con que un nodo responda. |
| QUORUM | La mayoría de los nodos deben coincidir. |
| ALL | Todos los nodos con copia deben estar de acuerdo. |
Ejemplo en código (usando driver Python, por ejemplo):
🧩 Balanceador de carga interno
Cassandra reparte las particiones de forma automática para evitar que un nodo se sature.
👉 Por eso es clave elegir bien las claves de partición, como vimos en la lección anterior.
🚧 Problemas comunes
| Problema | Causa |
|---|---|
| 🐢 Lecturas lentas | Particiones mal distribuidas. |
| 🔥 Nodo sobrecargado | Demasiadas lecturas en una sola partición. |
| ❌ Datos inconsistentes | Se leyó desde un nodo desactualizado (nivel de consistencia muy bajo). |
📝 Actividad práctica
-
¿Qué ventaja tiene hacer una lectura con nivel
ONEfrente aQUORUM? -
¿Qué pasa si consulto por un campo que no es la clave de partición sin usar un índice?
✅ Revisión rápida
-
¿Qué es un nodo coordinador?
-
¿Qué determina a qué nodo se le pide un dato?
-
¿Qué hace Cassandra si un nodo con los datos está caído?