Sistemas de Almacenamiento Escalables
Los sistemas de almacenamiento escalables distribuyen los datos entre muchas máquinas para proporcionar capacidad, rendimiento y disponibilidad más allá de un solo servidor, al tiempo que enmascaran las fallas de los nodos individuales.
Definition
Un sistema de almacenamiento escalable almacena datos en un clúster de máquinas, particionándolos para capacidad y rendimiento y replicándolos para durabilidad y disponibilidad, de modo que el sistema agregado escala con el número de nodos mientras tolera fallas de nodos individuales.
Scope
Este tema abarca los sistemas de archivos distribuidos diseñados para clústeres de productos básicos, los almacenes distribuidos de clave-valor y de columnas anchas, y las técnicas de superposición estructurada —hashing consistente y tablas hash distribuidas— utilizadas para particionar y localizar datos a escala. Cubre el particionamiento de datos (sharding), la replicación para la durabilidad y las compensaciones de consistencia y disponibilidad que distinguen los almacenes fuertemente consistentes de los altamente disponibles.
Core questions
- ¿Cómo se particionan y localizan los datos en un conjunto grande y cambiante de nodos?
- ¿Cómo se logra la durabilidad y la disponibilidad a pesar de las frecuentes fallas de los nodos?
- ¿Qué garantías de consistencia puede proporcionar un almacén escalable y a qué costo?
Key theories
- Sistemas de archivos en clúster
- Sistemas como el Sistema de Archivos de Google almacenan archivos enormes como fragmentos replicados en servidores de productos básicos, optimizando el acceso secuencial grande y tratando las fallas como la norma en lugar de la excepción.
- Almacenes estructurados distribuidos
- Los almacenes de columnas anchas y clave-valor como Bigtable y Dynamo particionan los datos por clave entre los nodos y los replican, intercambiando la expresividad de las consultas y la consistencia por la escalabilidad horizontal y la disponibilidad.
- Hashing consistente y tablas hash distribuidas
- El hashing consistente mapea claves y nodos en un anillo de modo que añadir o eliminar un nodo mueve solo una pequeña fracción de claves, y las tablas hash distribuidas como Chord proporcionan una búsqueda de claves escalable y descentralizada con enrutamiento logarítmico.
Clinical relevance
El almacenamiento escalable es la base duradera de las plataformas en la nube y los grandes servicios web: los almacenes de objetos, las bases de datos y los pipelines de análisis se basan en sistemas de archivos distribuidos y almacenes de clave-valor cuyas elecciones de particionamiento y replicación establecen las garantías de durabilidad y consistencia del sistema.
History
Las tablas hash distribuidas peer-to-peer como Chord (2001) mostraron una búsqueda descentralizada escalable; el Sistema de Archivos de Google (2003) y Bigtable (2006-2008) demostraron almacenamiento a escala de clúster para datos estructurados; y Dynamo de Amazon (2007) popularizó el almacenamiento de clave-valor altamente disponible, sentando juntos las bases del panorama moderno de almacenamiento escalable y NoSQL.
Debates
- Consistencia fuerte versus alta disponibilidad en el almacenamiento
- Los almacenes fuertemente consistentes simplifican la lógica de la aplicación, pero deben sacrificar la disponibilidad bajo particiones, mientras que los almacenes altamente disponibles como Dynamo aceptan divergencias temporales y trasladan la resolución de conflictos a la aplicación; la elección correcta depende de la tolerancia de los datos a la obsolescencia.
Key figures
- Sanjay Ghemawat
- Werner Vogels
- Ion Stoica
- Hari Balakrishnan
Related topics
Seminal works
- ghemawat2003
- decandia2007
- stoica2001
Frequently asked questions
- ¿Qué problema resuelve el hashing consistente?
- Cuando los datos se particionan entre nodos mediante el hashing de claves, el hashing ingenuo reorganiza casi todo cuando se añade o elimina un nodo. El hashing consistente organiza las claves y los nodos en un anillo de modo que dicho cambio reubica solo una pequeña y limitada fracción de claves, lo cual es esencial para clústeres elásticos y cambiantes.