Contenido del curso
Bases de Datos: De Cero a Experto

🎯 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:

  1. El cliente se conecta a un nodo del clúster (llamado coordinador).

  2. El nodo coordinador identifica la clave de partición que se busca.

  3. El coordinador consulta al nodo que tiene esa partición (o nodos, si hay réplicas).

  4. 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:

sql
CREATE TABLE ventas (
id_venta UUID,
fecha TEXT,
total INT,
PRIMARY KEY (id_venta)
);

Y tienes un clúster con 3 nodos:

  • Cada id_venta se asigna a un nodo según la clave de partición.

  • Cuando haces:

    sql
    SELECT * FROM ventas WHERE id_venta = 'abc-123';

    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):

python
session = cluster.connect()
session.default_consistency_level = ConsistencyLevel.QUORUM

🧩 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

  1. ¿Qué ventaja tiene hacer una lectura con nivel ONE frente a QUORUM?

  2. ¿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?

Scroll al inicio