🎯 Objetivo:
Entender cómo funcionan la replicación y el particionamiento para mejorar la escalabilidad, disponibilidad y rendimiento de bases de datos distribuidas.
📦 Particionamiento (Sharding)
-
¿Qué es?
División horizontal de los datos en fragmentos (shards) que se almacenan en diferentes nodos. -
¿Por qué?
Para escalar la base de datos, repartir la carga y reducir la latencia. -
Ejemplo:
Una tabla con millones de usuarios se divide en varias partes: usuarios con ID 1-1000 en nodo 1, 1001-2000 en nodo 2, etc. -
Tipos comunes de particionamiento:
-
Particionamiento por rango: cada nodo almacena un rango continuo de datos.
-
Particionamiento por hash: la clave se pasa por una función hash que asigna el dato a un nodo.
-
Particionamiento por lista: los datos se asignan según una lista predefinida de valores.
-
🔄 Replicación
-
¿Qué es?
Copiar datos en múltiples nodos para garantizar disponibilidad y tolerancia a fallos. -
¿Por qué?
Si un nodo falla, otro nodo con la réplica puede responder la consulta. -
Tipos de replicación:
-
Replicación síncrona: todas las copias se actualizan al mismo tiempo (más consistente, pero más lento).
-
Replicación asíncrona: las copias se actualizan con retraso (más rápido, posible inconsistencia temporal).
-
-
Ejemplo:
En Cassandra, un dato puede tener un Replication Factor = 3, es decir, está en 3 nodos diferentes.
⚙️ ¿Cómo trabajan juntos particionamiento y replicación?
-
Primero, el dato se asigna a una partición (shard).
-
Luego, esa partición se duplica en varios nodos según el factor de replicación.
Esto asegura que los datos estén balanceados y seguros.
🚧 Retos comunes
| Reto | Descripción |
|---|---|
| Consistencia | Asegurar que todas las copias tengan los mismos datos. |
| Latencia | Replicación síncrona puede ser lenta. |
| Rebalanceo de shards | Cuando se añaden o quitan nodos, repartir datos sin interrupción. |
📝 Actividad práctica
-
En Cassandra, si tienes un Replication Factor de 3 y 5 nodos, ¿qué pasa si cae un nodo?
-
¿Qué ventaja tiene el particionamiento por hash sobre el particionamiento por rango?
-
Investiga cómo MongoDB maneja la replicación.
✅ Revisión rápida
-
¿Qué es un shard?
-
¿Cuál es la diferencia entre replicación síncrona y asíncrona?
-
¿Por qué combinamos particionamiento y replicación?