¿Qué es una base de datos distribuida?
Una base de datos distribuida distribuye los datos en múltiples servidores (nodos) en diferentes ubicaciones. El teorema CAP dice que solo puede garantizar dos de tres propiedades: consistencia (cada lectura ve la última escritura), disponibilidad (cada solicitud obtiene una respuesta) y tolerancia a particiones (el sistema funciona a pesar de las divisiones de red).
¿Por qué es importante? Cada servicio importante de Internet, desde Google hasta Netflix, depende de bases de datos distribuidas. Comprender las compensaciones entre consistencia y disponibilidad es esencial para construir sistemas confiables y escalables que sirvan a miles de millones de usuarios.
📖 Profundización
Analogía 1
Imagine un sistema de bibliotecas con sucursales en 5 ciudades, todas compartiendo el mismo catálogo. Cuando alguien saca un libro en préstamo en la sucursal A, todas las demás sucursales deben actualizar sus registros. Si la línea telefónica de la sucursal C se cae (una partición de red), es posible que la sucursal C aún muestre el libro como disponible; eso es un problema de coherencia. Puede bloquear todos los préstamos hasta que la sucursal C se vuelva a conectar (eligiendo coherencia) o dejar que cada sucursal siga prestando de forma independiente y conciliándolos más tarde (eligiendo disponibilidad).
Analogía 2
Piense en un chat grupal con amigos de diferentes países. Cuando envías un mensaje, todos deberían verlo en el mismo orden. Pero si alguien tiene una caída en Internet, pierde mensajes y puede responder a información desactualizada, creando hilos de conversación conflictivos. Las bases de datos distribuidas enfrentan exactamente este problema a escala masiva y utilizan técnicas como relojes vectoriales y CRDT para resolver el caos cuando todos se vuelven a conectar.
🎯 Consejos del simulador
Principiante
Comience con 5 nodos y factor de replicación 3; esto significa que cada dato se almacena en 3 de los 5 nodos.
Intermedio
Compare la coherencia de escritura TODOS frente a UNO: TODO es más lento pero garantiza que cada réplica tenga los datos más recientes
Experto
Deshabilite los relojes vectoriales y active escrituras simultáneas durante una partición para observar conflictos no resueltos
📚 Glosario
🏆 Figuras clave
Eric Brewer (2000)
Formuló el teorema CAP en UC Berkeley, dando forma fundamentalmente al diseño de bases de datos distribuidas al demostrar la imposibilidad de garantizar simultáneamente coherencia, disponibilidad y tolerancia a las particiones.
Leslie Lamport (1998)
Creó el algoritmo de consenso Paxos y fue pionero en la teoría de sistemas distribuidos con conceptos como relojes lógicos, marcas de tiempo Lamport y el problema de los generales bizantinos.
Diego Ongaro (2014)
Diseñó el algoritmo de consenso Raft en Stanford, haciendo que el consenso distribuido sea comprensible y práctico para sistemas del mundo real como etcd y CockroachDB.
Werner Vogels (2007)
Lideró el diseño de Dynamo de Amazon, que introdujo hash consistente, relojes vectoriales y quórums descuidados, inspirando a Cassandra, Riak y todo el movimiento NoSQL.
Jeff Dean & Wilson Hsieh (2012)
Co-diseño de Google Spanner, la primera base de datos distribuida globalmente con transacciones externamente consistentes utilizando TrueTime API y sincronización GPS/reloj atómico.
Marc Shapiro (2011)
Fue pionero en tipos de datos replicados libres de conflictos (CRDT) en INRIA, proporcionando bases matemáticas para una coherencia final sin coordinación.
🎓 Recursos de aprendizaje
- Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services [paper]
La prueba formal del teorema CAP, que establece el resultado de imposibilidad fundamental para sistemas distribuidos (ACM SIGACT News, 2002) - Dynamo: Amazon's Highly Available Key-value Store [paper]
El influyente artículo de Amazon sobre el almacenamiento distribuido eventualmente consistente utilizando hash consistente, relojes vectoriales y quórum descuidado (SOSP 2007) - Spanner: Google's Globally Distributed Database [paper]
Base de datos globalmente consistente basada en TrueTime de Google que logra consistencia externa a través de GPS y sincronización de reloj atómico (OSDI 2012) - In Search of an Understandable Consensus Algorithm (Raft) [paper]
El algoritmo de consenso Raft diseñado para facilitar la comprensión, ahora se utiliza en etcd, CockroachDB y TiKV (USENIX ATC 2014) - Designing Data-Intensive Applications [article]
Guía completa de Martin Kleppmann sobre los fundamentos, la replicación, la partición y los modelos de coherencia de los sistemas distribuidos - Jepsen.io [article]
Pruebas y análisis rigurosos de Kyle Kingsbury de las afirmaciones de corrección de bases de datos distribuidas en condiciones de falla reales - The Raft Consensus Algorithm Visualization [article]
Visualización interactiva del algoritmo de consenso Raft con elección de líder paso a paso y replicación de registros.