Dynamo es un conjunto de técnicas que juntas pueden formar un sistema de almacenamiento estructurado de valor clave de alta disponibilidad [1] o un almacén de datos distribuido . [1] Tiene propiedades tanto de bases de datos como de tablas hash distribuidas (DHT). Fue creado para ayudar a abordar algunos problemas de escalabilidad que experimentó el sitio web de Amazon.com durante la temporada navideña de 2004. [2] En 2007, se utilizó en Amazon Web Services, como su Simple Storage Service (S3). [1]
Relación con DynamoDB
Amazon DynamoDB está "construido sobre los principios de Dynamo" [3] y es un servicio alojado dentro de la infraestructura de AWS. Sin embargo, mientras que Dynamo se basa en la replicación sin líder, DynamoDB usa la replicación de un solo líder. [4]
Principios
- Escalabilidad incremental: Dynamo debería poder escalar un host de almacenamiento (o "nodo") a la vez, con un impacto mínimo tanto en los operadores del sistema como en el propio sistema.
- Simetría: todos los nodos de Dynamo deben tener el mismo conjunto de responsabilidades que sus pares; no debe haber un nodo distinguido o nodos que asuman roles especiales o un conjunto adicional de responsabilidades.
- Descentralización: una extensión de la simetría, el diseño debe favorecer las técnicas descentralizadas de igual a igual sobre el control centralizado.
- Heterogeneidad: el sistema debe poder aprovechar la heterogeneidad en la infraestructura en la que se ejecuta. Por ejemplo, la distribución del trabajo debe ser proporcional a las capacidades de los servidores individuales. Esto es esencial para agregar nuevos nodos con mayor capacidad sin tener que actualizar todos los hosts a la vez.
Técnicas
Problema | Técnica | Ventaja |
---|---|---|
Particionamiento de conjuntos de datos | Hashing consistente | Escalabilidad incremental, posiblemente lineal, en proporción al número de nodos colaboradores. |
Escrituras altamente disponibles | Vector Clock o Dotted-Version-Vector Sets , reconciliación durante las lecturas | El tamaño de la versión está desacoplado de las tasas de actualización. |
Manejo de fallas temporales | Quórum descuidado y traspaso insinuado | Proporciona alta disponibilidad y garantía de durabilidad cuando algunas de las réplicas no están disponibles. |
Recuperarse de fallas permanentes | Anti-entropía usando el árbol Merkle | Se puede utilizar para identificar diferencias entre propietarios de réplicas y sincronizar réplicas divergentes de forma proactiva. |
Detección de membresía y fallas | Protocolo de membresía basado en chismes y detección de fallas | Evita tener un registro centralizado para almacenar información de membresía y actividad de los nodos, preservando la simetría. |
Implementaciones
Amazon publicó el artículo sobre Dynamo, pero nunca dio a conocer su implementación. La capa de índice de Amazon S3 implementa y amplía muchas funciones principales de Dynamo. Desde entonces, se han creado varias implementaciones basadas en el documento. El documento también inspiró muchas otras implementaciones de bases de datos NoSQL , como Apache Cassandra , Project Voldemort y Riak . [2]
Ver también
Referencias
- ^ a b c Decandia, G .; Hastorun, D .; Jampani, M .; Kakulapati, G .; Lakshman, A .; Pilchin, A .; Sivasubramanian, S .; Vosshall, P .; Vogels, W. (2007). "Dynamo: Tienda de valor clave de alta disponibilidad de Amazon". Actas del vigésimo primer simposio ACM SIGOPS sobre principios de sistemas operativos - SOSP '07 . pag. 205. doi : 10.1145 / 1294261.1294281 . ISBN 9781595935915. S2CID 221033483 .
- ^ a b Amazon da otro paso en NoSQL con DynamoDB
- ^ Amazon DynamoDB: un servicio de base de datos NoSQL rápido y escalable diseñado para aplicaciones de escala de Internet
- ^ Kleppmann, Martin (2 de abril de 2017). Diseño de aplicaciones intensivas en datos (1 ed.). O'Reilly Media. pag. 177. ISBN 978-1449373320.
Dynamo no está disponible para usuarios fuera de Amazon. De manera confusa, AWS ofrece un producto de base de datos alojada llamado DynamoDB, que utiliza una arquitectura completamente diferente: se basa en la replicación de un solo líder.
enlaces externos
- El dínamo de Amazon (2007)
- Amazon revela su almacenamiento distribuido: Dynamo (2007)