Contenido del curso
Bases de Datos: De Cero a Experto

🎯 Objetivo:

Comprender cómo funcionan las claves primarias en Cassandra y cómo influyen en el particionamiento y la distribución de datos en un clúster.


🔑 ¿Qué es una clave primaria en Cassandra?

En Cassandra, la clave primaria es fundamental porque:

  • Identifica de forma única cada fila (igual que en SQL).

  • Determina cómo se distribuyen los datos entre los nodos del sistema.


📦 Estructura de la clave primaria

sql
PRIMARY KEY (clave_de_particion [, clave_de_ordenamiento])
  • Clave de partición: Decide en qué nodo se guarda el dato.

  • Clave de ordenamiento (opcional): Ordena los datos dentro de la partición.


📌 Ejemplo 1: solo clave de partición

sql
CREATE TABLE clientes (
rut TEXT PRIMARY KEY,
nombre TEXT,
edad INT
);
  • Aquí rut es la clave primaria y también la clave de partición.

  • Cada cliente se guarda en una partición distinta.


📌 Ejemplo 2: clave de partición + clave de ordenamiento

sql
CREATE TABLE compras (
cliente_id TEXT,
fecha TEXT,
producto TEXT,
PRIMARY KEY (cliente_id, fecha)
);
  • cliente_id: clave de partición → determina dónde se guarda.

  • fecha: clave de ordenamiento → ordena las compras por cliente.

👉 Así, todas las compras de un mismo cliente se agrupan juntas, ordenadas por fecha.


⚙️ ¿Qué es el particionamiento?

El particionamiento es cómo Cassandra divide los datos entre los distintos nodos del clúster.

  • Se calcula a partir de la clave de partición.

  • Cassandra usa una función hash para decidir en qué nodo guardar la fila.

  • Permite que cada nodo almacene parte de la tabla (ideal para escalar horizontalmente).


🎯 ¿Por qué es importante elegir bien la clave?

Un mal diseño de clave puede causar:

Problema Qué ocurre
🔥 Partición caliente Todos los datos se van al mismo nodo → sobrecarga.
🐌 Mala distribución Algunos nodos se llenan y otros están vacíos.
🧩 Dificultad para consultar Si no usas bien las claves, tus consultas serán lentas.

✅ Buen diseño: distribución balanceada

Ejemplo recomendado:

sql
CREATE TABLE likes (
post_id UUID,
usuario_id UUID,
fecha TEXT,
PRIMARY KEY ((post_id), usuario_id)
);

Aquí:

  • post_id: clave de partición → todos los «likes» de un post van juntos.

  • usuario_id: ordena los likes dentro del post.

Esto balancea bien la carga si hay muchos posts con muchos likes.


📝 Actividad práctica

  1. Crea una tabla comentarios donde cada comentario esté asociado a una publicación.
    ¿Qué clave usarías para que los comentarios de un mismo post estén juntos?

  2. ¿Qué pasa si todos los registros de una tabla usan la misma clave de partición?


✅ Revisión rápida

  • ¿Qué define la clave de partición en Cassandra?

  • ¿Cuál es el efecto de la clave de ordenamiento?

  • ¿Qué es una «partición caliente»?

Scroll al inicio