SlideShare una empresa de Scribd logo
1 de 33
DynamoDB
José A. San Miguel Carrillo
Javier de la Rosa Fernández
Alexandra Conde Hermo
Manuel Bazaga
Carmen Alonso Martínez
Introducción
● Requisitos operativos en términos de:
rendimiento, fiabilidad y eficiencia.
● Altamente escalable.
● Almacenamiento siempre disponibles
(Amazon S3)
● Acceso con primary-key
Introducción
● Data es particionada y replicada usando
hashing consistente y object versioning
(consistencia: técnica de quórum similar y
un protocolo de sincronización de réplica
descentralizado)
● Almacenamiento eventualmente consistente
Trasfondo
¿Qué es?
BD no relacional Uso de recursos eficiente
Interfaz (k,v) Escalable
Alta disponibilidad
¿Para quién?
● Para Amazon
● Para aquellos con problemas similares:
o No requieren querys ni manejo complejo
o Prefieren disponibilidad sobre consistencia
Requisitos
Query Model:
R/W simple. Objetos identificados por clave única
Las operaciones no afectan a más de un objeto
Objetos<1MB
ACID:
Sacrifica consistencia por disponibilidad.
No garantiza aislamiento y permite sólo
actualizaciones por clave única
Eficiencia:
Sacrifica rendimiento, disponibilidad y eficiencia
en coste para alcanzar latencias muy bajas y
consistentes.
Supuestos
“Dynamo sólo es usado
por Amazon”
● Se asume un ambiente no
hostil.
● No se tienen en cuenta
requisitos de seguridad.
● El primer dimensionamiento
se hace acorde a las
necesidades de Amazon.
SLA - service level agreement
● Medido en el percentil 99.9, no en la media.
● tr,tw<300ms
● Enfocado a mejorar la experiencia de todos
los usuarios, no de la mayoría.
Consideraciones del diseño
Eventualmente consistente - las actualizaciones llegan a
las réplicas eventualmente… ¿cuándo? ¿R/W?
Siempre podremos escribir.
Otros principios del diseño
Escalabilidad
Simetría
Descentralización
Heterogeneidad
Trabajo relacionado
Peer to Peer Systems
Freenet y Gnutella
Structured P2P Networks (Pastry y Chord) DHT
Oceanstore y PAST (Sistemas de almacenamiento)
Trabajo relacionado
Distributed File Systems and Databases
Ficus y Coda
Farsite - NFS (Network File System)
Google File System
GFS (Global Forecast System)
Trabajo relacionado
Distributed File Systems and Databases
Bayou
Antiquity (Byzantine para asegurar consistencia)
Big Table
Trabajo relacionado
Discusión
● Always writeable.
● Infraestructura dentro de un dominio administrativo
único.
● No requieren soporte para espacios de nombres
jerárquicos
● Se construye para aplicaciones sensibles a la latencia
Arquitectura
● Interfaz
● Particionado
● Alta disponibilidad en Escrituras
● Gestion de fallos
● Detección y recuperación ante fallos
Interfaz
● Almacenamiento <clave,valor>
● Operaciones:
o get(key): Devuelve un objeto (o una lista) de objetos (incluidos
los conflictos)
o put(key,context,object): Localiza donde escribir un objeto (y
sus réplicas) a partir de una clave
 Context contiene metainformación tal como versionado,
validaciones, etc.
● Se generan identificadores de 128-bits aplicando
MD5 a las claves
Particionado
● Diseñado para un escalado incremental mediante nodos
● Esquema de particionado distribuido mediante “Consistent
hashing”
o Claves distribuidas en estructura de anillo en varios nodos
o Cada nodo es responsable de gestionar un rango de claves
o Nodos virtuales para gestionar la carga y repartición de las claves
● Cada nodo acepta una carga equivalente a las de sus
vecinos.
Replicacion
● Cada clave (k) es asignada a un coordinador (i)
● Cada valor (v) se replica en los nodos (lógicos) (N-
1) segun el sentido horario
● El coordinador (i) es responsable de actualizar el
resto de nodos para las claves que posee.
● Cada clave (k) sabe los nodos físicos responsables
de mantener y acceder a los valores.
Replicacion
Versionado
● Consistencia Eventual
● Los datos son actualizados de forma asincrona
o put() se devuelve el dato antes de actualizar todas
las replicas
o get() puede devolver versiones (no actualizadas) del
mismo valor
● “Siempre escribe”
o Carrito de la compra
● “Vector de tiempo” para el versionado
http://cloudacademy.com/blog/data-versioning-with-dynamodb-an-inside-look-into-nosql-part-5/
http://www.slideshare.net/advaitdeo/dynamodb-presentation-
31000206
Resolución de conflictos
● Sintáctica (interna)
o Resolucion automatica
● Semántica (cliente)
o Es el cliente quien decide cómo resolver el conflicto
o Ejemplo: Carrito de la compra
 Siempre se mantienen los items añadidos
 Pueden “volver a aparecer” elementos borrados
http://www.slideshare.net/advaitdeo/dynamodb-presentation-
31000206
put() & get()
● 2 estrategias para seleccionar un nodo
o En función de la carga (Generic load-balancer)
o Partition aware client-library
● Operaciones de lectura y escritura a través de un nodo Coordinador
● Quorum como protocolo de consistencia
o Operación de escritura se realizará en (N/2) +1 nodos
● Para mantener la consistencia se utilizan 3 variables
o N – Numero de nodos
o W – Número de nodos para escribir
o R – Número de nodos para leer
put()
● Ante una escritura, el coordinador genera el Vector de
tiempo y escribe localmente
● El coordinador réplica hacia los N nodos de su lista
● Si al menos W-1 nodos responden, la escritura es
correcta
get()
● El coordinador pide todas las versiones del objeto a los
N nodos de su lista
● Espera al menos a que R nodos respondan con el dato
● Si hay diferentes versiones, delega en el cliente su
resolución
● El cliente resuelve el conflicto y actualiza el dato
Hinted Handoff
● Asumiendo N=3, un fallo en una operacion
put() en el node A is administrado
temporalmente por B.
● Después de que A se recupere, B envia el
resultado de la operación put() a A.
● Ventaja: Los fallos temporales tienen un
mínimo efecto en la aplicación.
Escalabilidad
● Para añadir o quitar nodos se necesita
interacción directa
● Protocolo “Gossip”
o Detección de fallos
o Propagaciones en el cluster
● La sincronización de las replicas se realiza
mediante un Merkel hash tree
Implementación
Persistencia local, solicitud de coordinación y detección
de fallos
Persistencia local: diferentes motores (BDB, MySQL etc) - depende del tamaño
del objeto.
Solicitud de coordinación:
Petición R -> State machine -> enviar petición a nodos -> esperar y recibir
respuestas (si se reciben pocas la petición es fallida) -> decidir la versión de los
datos a devolver -> actualizar nodos a la última versión (read repair)
Petición W -> puede ser coordinada por cualquiera de los “top N nodes”
Generalmente el que antes respondió al read, para mantener la consistencia.
Estrategias seguidas con Dynamo
● Reconciliación lógica del negocio
● Reconciliación basada en Timestamp
● Alto rendimiento en lecturas
o N (Nodes) W (Writes) R(Read)
Dynamo es personalizable
● El poder cambiar los valores de N, W y R nos permite
adaptar Dynamo a nuestras necesidades.
o Bajos valores de W y R dan posibles riesgos de
inconsistencia
o Incrementando W se dotará de mayor durabilidad
o La configuración estándar es (3,2,2)
Equilibrio rendimiento-durabilidad
● El típico SLA ofrecido por Dynamo es 99.9% de
lecturas y escrituras a 300ms de latencia.
● Para algunos clientes esto no es aceptable y prefieren
intercambiar garantías de durabilidad por rendimiento.
○ Buffer en memoria
Distribución uniforme de la carga
● Un nodo está fuera de equilibrio si supera un cierto
umbral (por ejemplo un 15%) con respecto a la media
de peticiones en un determinado periodo de tiempo.
● Los tokens son nodos virtuales que se podrán distribuir
según las siguientes estrategias
○ ESTRATEGIA 1: T Tokens aleatorios por nodo
○ ESTRATEGIA 2: T Tokens del mismo tamaño
○ ESTRATEGIAS 3: Q/S Tokens por nodo y particionado del mismo
tamaño.
Conclusiones
Durante el tiempo de vida de Dynamo se ha
contrastado:
● El 99.9995% de peticiones de datos se han producido sin pérdida
● Configurable (N,R,W)
● Altamente disponible, es posible el manejo de los fallos e inconsistencias.
Bibliografia
● http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
● http://cloudacademy.com/blog/dynamodb-replication-and-partitioning-part-
4/
● http://cloudacademy.com/blog/data-versioning-with-dynamodb-an-inside-
look-into-nosql-part-5/

Más contenido relacionado

La actualidad más candente

Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS by Namik Hrle ...
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS  by  Namik Hrle ...Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS  by  Namik Hrle ...
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS by Namik Hrle ...Surekha Parekh
 
How to Speak Intel DPDK KNI for Web Services.
How to Speak Intel DPDK KNI for Web Services.How to Speak Intel DPDK KNI for Web Services.
How to Speak Intel DPDK KNI for Web Services.Naoto MATSUMOTO
 
What's New In MQ 9.2 on z/OS
What's New In MQ 9.2 on z/OSWhat's New In MQ 9.2 on z/OS
What's New In MQ 9.2 on z/OSMatt Leming
 
S108283 svc-storwize-lagos-v1905d
S108283 svc-storwize-lagos-v1905dS108283 svc-storwize-lagos-v1905d
S108283 svc-storwize-lagos-v1905dTony Pearson
 
Kafka and Avro with Confluent Schema Registry
Kafka and Avro with Confluent Schema RegistryKafka and Avro with Confluent Schema Registry
Kafka and Avro with Confluent Schema RegistryJean-Paul Azar
 
Spectrum Scale Memory Usage
Spectrum Scale Memory UsageSpectrum Scale Memory Usage
Spectrum Scale Memory UsageTomer Perry
 
Fluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellFluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellN Masahiro
 
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)zOSCommserver
 
Improving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at UberImproving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at UberYing Zheng
 
IBM Spectrum scale object deep dive training
IBM Spectrum scale object  deep dive trainingIBM Spectrum scale object  deep dive training
IBM Spectrum scale object deep dive trainingSmita Raut
 
Taking advantage of Prometheus relabeling
Taking advantage of Prometheus relabelingTaking advantage of Prometheus relabeling
Taking advantage of Prometheus relabelingJulien Pivotto
 
Disaster Recovery Options Running Apache Kafka in Kubernetes with Rema Subra...
 Disaster Recovery Options Running Apache Kafka in Kubernetes with Rema Subra... Disaster Recovery Options Running Apache Kafka in Kubernetes with Rema Subra...
Disaster Recovery Options Running Apache Kafka in Kubernetes with Rema Subra...HostedbyConfluent
 
Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14panagenda
 
Db2 for z/OS and FlashCopy - Practical use cases (June 2019 Edition)
Db2 for z/OS and FlashCopy - Practical use cases (June 2019 Edition)Db2 for z/OS and FlashCopy - Practical use cases (June 2019 Edition)
Db2 for z/OS and FlashCopy - Practical use cases (June 2019 Edition)Florence Dubois
 
IBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryIBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryMarkTaylorIBM
 
Ibm aspera full product overview april 2019
Ibm aspera full product overview april 2019Ibm aspera full product overview april 2019
Ibm aspera full product overview april 2019Morten Bjørklund
 
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LMESet your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LMEconfluent
 
RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...NTT Software Innovation Center
 
Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...HostedbyConfluent
 

La actualidad más candente (20)

Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS by Namik Hrle ...
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS  by  Namik Hrle ...Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS  by  Namik Hrle ...
Efficient Monitoring & Tuning of Dynamic SQL in DB2 for z/OS by Namik Hrle ...
 
How to Speak Intel DPDK KNI for Web Services.
How to Speak Intel DPDK KNI for Web Services.How to Speak Intel DPDK KNI for Web Services.
How to Speak Intel DPDK KNI for Web Services.
 
What's New In MQ 9.2 on z/OS
What's New In MQ 9.2 on z/OSWhat's New In MQ 9.2 on z/OS
What's New In MQ 9.2 on z/OS
 
S108283 svc-storwize-lagos-v1905d
S108283 svc-storwize-lagos-v1905dS108283 svc-storwize-lagos-v1905d
S108283 svc-storwize-lagos-v1905d
 
Kafka and Avro with Confluent Schema Registry
Kafka and Avro with Confluent Schema RegistryKafka and Avro with Confluent Schema Registry
Kafka and Avro with Confluent Schema Registry
 
Spectrum Scale Memory Usage
Spectrum Scale Memory UsageSpectrum Scale Memory Usage
Spectrum Scale Memory Usage
 
Fluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshellFluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshell
 
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
IBM z/OS Communications Server z/OS Encryption Readiness Technology (zERT)
 
Improving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at UberImproving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at Uber
 
IBM Spectrum scale object deep dive training
IBM Spectrum scale object  deep dive trainingIBM Spectrum scale object  deep dive training
IBM Spectrum scale object deep dive training
 
Taking advantage of Prometheus relabeling
Taking advantage of Prometheus relabelingTaking advantage of Prometheus relabeling
Taking advantage of Prometheus relabeling
 
Disaster Recovery Options Running Apache Kafka in Kubernetes with Rema Subra...
 Disaster Recovery Options Running Apache Kafka in Kubernetes with Rema Subra... Disaster Recovery Options Running Apache Kafka in Kubernetes with Rema Subra...
Disaster Recovery Options Running Apache Kafka in Kubernetes with Rema Subra...
 
Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14
 
Db2 for z/OS and FlashCopy - Practical use cases (June 2019 Edition)
Db2 for z/OS and FlashCopy - Practical use cases (June 2019 Edition)Db2 for z/OS and FlashCopy - Practical use cases (June 2019 Edition)
Db2 for z/OS and FlashCopy - Practical use cases (June 2019 Edition)
 
IBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryIBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster Recovery
 
Ibm aspera full product overview april 2019
Ibm aspera full product overview april 2019Ibm aspera full product overview april 2019
Ibm aspera full product overview april 2019
 
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LMESet your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
 
IBM Utilities
IBM UtilitiesIBM Utilities
IBM Utilities
 
RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...RDMA programming design and case studies – for better performance distributed...
RDMA programming design and case studies – for better performance distributed...
 
Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...
 

Destacado

Bases de datos avanzado NOSQL
Bases de datos avanzado NOSQLBases de datos avanzado NOSQL
Bases de datos avanzado NOSQLjosecuartas
 
Graph database & neo4j
Graph database & neo4jGraph database & neo4j
Graph database & neo4jSandip Jadhav
 
Transparencia en el Gobierno: Portal Estadístico de la Delegación del Gobier...
Transparencia en el Gobierno: Portal Estadístico de la  Delegación del Gobier...Transparencia en el Gobierno: Portal Estadístico de la  Delegación del Gobier...
Transparencia en el Gobierno: Portal Estadístico de la Delegación del Gobier...David Fombella Pombal
 
ETL Metadata Injection with Pentaho Data Integration
ETL Metadata Injection with Pentaho Data IntegrationETL Metadata Injection with Pentaho Data Integration
ETL Metadata Injection with Pentaho Data IntegrationDavid Fombella Pombal
 
Neo4j Introduction (Basics, Cypher, RDBMS to GRAPH)
Neo4j Introduction (Basics, Cypher, RDBMS to GRAPH) Neo4j Introduction (Basics, Cypher, RDBMS to GRAPH)
Neo4j Introduction (Basics, Cypher, RDBMS to GRAPH) David Fombella Pombal
 
Dynamo: Tienda de Amazon de alta disponibilidad de llaves y valores
Dynamo: Tienda de Amazon de alta disponibilidad de llaves y valoresDynamo: Tienda de Amazon de alta disponibilidad de llaves y valores
Dynamo: Tienda de Amazon de alta disponibilidad de llaves y valorespaooro
 

Destacado (13)

Neo4j - A Graph Database
Neo4j - A Graph DatabaseNeo4j - A Graph Database
Neo4j - A Graph Database
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
CV Dynamo One
CV Dynamo OneCV Dynamo One
CV Dynamo One
 
Bases de datos avanzado NOSQL
Bases de datos avanzado NOSQLBases de datos avanzado NOSQL
Bases de datos avanzado NOSQL
 
Graph database & neo4j
Graph database & neo4jGraph database & neo4j
Graph database & neo4j
 
Presentacion BD NoSQL
Presentacion  BD NoSQLPresentacion  BD NoSQL
Presentacion BD NoSQL
 
Resilient Distributed Dataset - Analisis paper
Resilient  Distributed Dataset - Analisis paper Resilient  Distributed Dataset - Analisis paper
Resilient Distributed Dataset - Analisis paper
 
Evitando el fraude a través de la presentación de la información en grafos
Evitando el fraude a través de la presentación de la información en grafosEvitando el fraude a través de la presentación de la información en grafos
Evitando el fraude a través de la presentación de la información en grafos
 
Transparencia en el Gobierno: Portal Estadístico de la Delegación del Gobier...
Transparencia en el Gobierno: Portal Estadístico de la  Delegación del Gobier...Transparencia en el Gobierno: Portal Estadístico de la  Delegación del Gobier...
Transparencia en el Gobierno: Portal Estadístico de la Delegación del Gobier...
 
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
 
ETL Metadata Injection with Pentaho Data Integration
ETL Metadata Injection with Pentaho Data IntegrationETL Metadata Injection with Pentaho Data Integration
ETL Metadata Injection with Pentaho Data Integration
 
Neo4j Introduction (Basics, Cypher, RDBMS to GRAPH)
Neo4j Introduction (Basics, Cypher, RDBMS to GRAPH) Neo4j Introduction (Basics, Cypher, RDBMS to GRAPH)
Neo4j Introduction (Basics, Cypher, RDBMS to GRAPH)
 
Dynamo: Tienda de Amazon de alta disponibilidad de llaves y valores
Dynamo: Tienda de Amazon de alta disponibilidad de llaves y valoresDynamo: Tienda de Amazon de alta disponibilidad de llaves y valores
Dynamo: Tienda de Amazon de alta disponibilidad de llaves y valores
 

Similar a DynamoDB, análisis del paper.

Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLCarlos Gustavo Ruiz
 
DENALI: Disponibilidad
DENALI: Disponibilidad DENALI: Disponibilidad
DENALI: Disponibilidad SolidQ
 
Bases de Datos Analiticas-Columnares
Bases de Datos Analiticas-ColumnaresBases de Datos Analiticas-Columnares
Bases de Datos Analiticas-ColumnaresStratebi
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadÓscar De Arriba González
 
SQL11: Replicación
SQL11: ReplicaciónSQL11: Replicación
SQL11: ReplicaciónSolidQ
 
Migrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLMigrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLscastell77
 
Tema 3 -_switches_gestionables
Tema 3 -_switches_gestionablesTema 3 -_switches_gestionables
Tema 3 -_switches_gestionablesjammanel
 
Sitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadSitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadIván Campaña Naranjo
 
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos SolidQ
 
Servicios de bases de datos administradas en AWS
Servicios de bases de datos administradas en AWSServicios de bases de datos administradas en AWS
Servicios de bases de datos administradas en AWSAmazon Web Services LATAM
 
20120926 web perf-dns_v1
20120926 web perf-dns_v120120926 web perf-dns_v1
20120926 web perf-dns_v1Sergim
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataJosé Carlos García Serrano
 
LAN Switching and Wirelless conceptos básicos y configuracion del witch
LAN Switching and Wirelless conceptos básicos y configuracion del witchLAN Switching and Wirelless conceptos básicos y configuracion del witch
LAN Switching and Wirelless conceptos básicos y configuracion del witchFredPincay
 
Postgresql la apuesta_acertada
Postgresql la apuesta_acertadaPostgresql la apuesta_acertada
Postgresql la apuesta_acertadaLennin Caro
 

Similar a DynamoDB, análisis del paper. (20)

Bd nosql clave valor
Bd nosql clave valorBd nosql clave valor
Bd nosql clave valor
 
Bd nosql tecnicas III
Bd nosql tecnicas IIIBd nosql tecnicas III
Bd nosql tecnicas III
 
Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQL
 
DENALI: Disponibilidad
DENALI: Disponibilidad DENALI: Disponibilidad
DENALI: Disponibilidad
 
Intro cassandra
Intro cassandraIntro cassandra
Intro cassandra
 
Bases de Datos Analiticas-Columnares
Bases de Datos Analiticas-ColumnaresBases de Datos Analiticas-Columnares
Bases de Datos Analiticas-Columnares
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidad
 
Spark
SparkSpark
Spark
 
Switches gestionables
Switches gestionablesSwitches gestionables
Switches gestionables
 
Practica sql
Practica sqlPractica sql
Practica sql
 
SQL11: Replicación
SQL11: ReplicaciónSQL11: Replicación
SQL11: Replicación
 
Migrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLMigrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQL
 
Tema 3 -_switches_gestionables
Tema 3 -_switches_gestionablesTema 3 -_switches_gestionables
Tema 3 -_switches_gestionables
 
Sitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadSitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidad
 
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
 
Servicios de bases de datos administradas en AWS
Servicios de bases de datos administradas en AWSServicios de bases de datos administradas en AWS
Servicios de bases de datos administradas en AWS
 
20120926 web perf-dns_v1
20120926 web perf-dns_v120120926 web perf-dns_v1
20120926 web perf-dns_v1
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big data
 
LAN Switching and Wirelless conceptos básicos y configuracion del witch
LAN Switching and Wirelless conceptos básicos y configuracion del witchLAN Switching and Wirelless conceptos básicos y configuracion del witch
LAN Switching and Wirelless conceptos básicos y configuracion del witch
 
Postgresql la apuesta_acertada
Postgresql la apuesta_acertadaPostgresql la apuesta_acertada
Postgresql la apuesta_acertada
 

Último

PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfalexquispenieto2
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrialGibranDiaz7
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxvalenciaespinozadavi1
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMONICADELROCIOMUNZON1
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDEdith Puclla
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfdanielJAlejosC
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesCarlosMeraz16
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 

Último (20)

PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdf
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrial
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptx
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestaciones
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 

DynamoDB, análisis del paper.

  • 1. DynamoDB José A. San Miguel Carrillo Javier de la Rosa Fernández Alexandra Conde Hermo Manuel Bazaga Carmen Alonso Martínez
  • 2. Introducción ● Requisitos operativos en términos de: rendimiento, fiabilidad y eficiencia. ● Altamente escalable. ● Almacenamiento siempre disponibles (Amazon S3) ● Acceso con primary-key
  • 3. Introducción ● Data es particionada y replicada usando hashing consistente y object versioning (consistencia: técnica de quórum similar y un protocolo de sincronización de réplica descentralizado) ● Almacenamiento eventualmente consistente
  • 4. Trasfondo ¿Qué es? BD no relacional Uso de recursos eficiente Interfaz (k,v) Escalable Alta disponibilidad ¿Para quién? ● Para Amazon ● Para aquellos con problemas similares: o No requieren querys ni manejo complejo o Prefieren disponibilidad sobre consistencia
  • 5. Requisitos Query Model: R/W simple. Objetos identificados por clave única Las operaciones no afectan a más de un objeto Objetos<1MB ACID: Sacrifica consistencia por disponibilidad. No garantiza aislamiento y permite sólo actualizaciones por clave única Eficiencia: Sacrifica rendimiento, disponibilidad y eficiencia en coste para alcanzar latencias muy bajas y consistentes. Supuestos “Dynamo sólo es usado por Amazon” ● Se asume un ambiente no hostil. ● No se tienen en cuenta requisitos de seguridad. ● El primer dimensionamiento se hace acorde a las necesidades de Amazon.
  • 6. SLA - service level agreement ● Medido en el percentil 99.9, no en la media. ● tr,tw<300ms ● Enfocado a mejorar la experiencia de todos los usuarios, no de la mayoría.
  • 7. Consideraciones del diseño Eventualmente consistente - las actualizaciones llegan a las réplicas eventualmente… ¿cuándo? ¿R/W? Siempre podremos escribir. Otros principios del diseño Escalabilidad Simetría Descentralización Heterogeneidad
  • 8. Trabajo relacionado Peer to Peer Systems Freenet y Gnutella Structured P2P Networks (Pastry y Chord) DHT Oceanstore y PAST (Sistemas de almacenamiento)
  • 9. Trabajo relacionado Distributed File Systems and Databases Ficus y Coda Farsite - NFS (Network File System) Google File System GFS (Global Forecast System)
  • 10. Trabajo relacionado Distributed File Systems and Databases Bayou Antiquity (Byzantine para asegurar consistencia) Big Table
  • 11. Trabajo relacionado Discusión ● Always writeable. ● Infraestructura dentro de un dominio administrativo único. ● No requieren soporte para espacios de nombres jerárquicos ● Se construye para aplicaciones sensibles a la latencia
  • 12. Arquitectura ● Interfaz ● Particionado ● Alta disponibilidad en Escrituras ● Gestion de fallos ● Detección y recuperación ante fallos
  • 13. Interfaz ● Almacenamiento <clave,valor> ● Operaciones: o get(key): Devuelve un objeto (o una lista) de objetos (incluidos los conflictos) o put(key,context,object): Localiza donde escribir un objeto (y sus réplicas) a partir de una clave  Context contiene metainformación tal como versionado, validaciones, etc. ● Se generan identificadores de 128-bits aplicando MD5 a las claves
  • 14. Particionado ● Diseñado para un escalado incremental mediante nodos ● Esquema de particionado distribuido mediante “Consistent hashing” o Claves distribuidas en estructura de anillo en varios nodos o Cada nodo es responsable de gestionar un rango de claves o Nodos virtuales para gestionar la carga y repartición de las claves ● Cada nodo acepta una carga equivalente a las de sus vecinos.
  • 15. Replicacion ● Cada clave (k) es asignada a un coordinador (i) ● Cada valor (v) se replica en los nodos (lógicos) (N- 1) segun el sentido horario ● El coordinador (i) es responsable de actualizar el resto de nodos para las claves que posee. ● Cada clave (k) sabe los nodos físicos responsables de mantener y acceder a los valores.
  • 17. Versionado ● Consistencia Eventual ● Los datos son actualizados de forma asincrona o put() se devuelve el dato antes de actualizar todas las replicas o get() puede devolver versiones (no actualizadas) del mismo valor ● “Siempre escribe” o Carrito de la compra ● “Vector de tiempo” para el versionado
  • 20. Resolución de conflictos ● Sintáctica (interna) o Resolucion automatica ● Semántica (cliente) o Es el cliente quien decide cómo resolver el conflicto o Ejemplo: Carrito de la compra  Siempre se mantienen los items añadidos  Pueden “volver a aparecer” elementos borrados
  • 22. put() & get() ● 2 estrategias para seleccionar un nodo o En función de la carga (Generic load-balancer) o Partition aware client-library ● Operaciones de lectura y escritura a través de un nodo Coordinador ● Quorum como protocolo de consistencia o Operación de escritura se realizará en (N/2) +1 nodos ● Para mantener la consistencia se utilizan 3 variables o N – Numero de nodos o W – Número de nodos para escribir o R – Número de nodos para leer
  • 23. put() ● Ante una escritura, el coordinador genera el Vector de tiempo y escribe localmente ● El coordinador réplica hacia los N nodos de su lista ● Si al menos W-1 nodos responden, la escritura es correcta
  • 24. get() ● El coordinador pide todas las versiones del objeto a los N nodos de su lista ● Espera al menos a que R nodos respondan con el dato ● Si hay diferentes versiones, delega en el cliente su resolución ● El cliente resuelve el conflicto y actualiza el dato
  • 25. Hinted Handoff ● Asumiendo N=3, un fallo en una operacion put() en el node A is administrado temporalmente por B. ● Después de que A se recupere, B envia el resultado de la operación put() a A. ● Ventaja: Los fallos temporales tienen un mínimo efecto en la aplicación.
  • 26. Escalabilidad ● Para añadir o quitar nodos se necesita interacción directa ● Protocolo “Gossip” o Detección de fallos o Propagaciones en el cluster ● La sincronización de las replicas se realiza mediante un Merkel hash tree
  • 27. Implementación Persistencia local, solicitud de coordinación y detección de fallos Persistencia local: diferentes motores (BDB, MySQL etc) - depende del tamaño del objeto. Solicitud de coordinación: Petición R -> State machine -> enviar petición a nodos -> esperar y recibir respuestas (si se reciben pocas la petición es fallida) -> decidir la versión de los datos a devolver -> actualizar nodos a la última versión (read repair) Petición W -> puede ser coordinada por cualquiera de los “top N nodes” Generalmente el que antes respondió al read, para mantener la consistencia.
  • 28. Estrategias seguidas con Dynamo ● Reconciliación lógica del negocio ● Reconciliación basada en Timestamp ● Alto rendimiento en lecturas o N (Nodes) W (Writes) R(Read)
  • 29. Dynamo es personalizable ● El poder cambiar los valores de N, W y R nos permite adaptar Dynamo a nuestras necesidades. o Bajos valores de W y R dan posibles riesgos de inconsistencia o Incrementando W se dotará de mayor durabilidad o La configuración estándar es (3,2,2)
  • 30. Equilibrio rendimiento-durabilidad ● El típico SLA ofrecido por Dynamo es 99.9% de lecturas y escrituras a 300ms de latencia. ● Para algunos clientes esto no es aceptable y prefieren intercambiar garantías de durabilidad por rendimiento. ○ Buffer en memoria
  • 31. Distribución uniforme de la carga ● Un nodo está fuera de equilibrio si supera un cierto umbral (por ejemplo un 15%) con respecto a la media de peticiones en un determinado periodo de tiempo. ● Los tokens son nodos virtuales que se podrán distribuir según las siguientes estrategias ○ ESTRATEGIA 1: T Tokens aleatorios por nodo ○ ESTRATEGIA 2: T Tokens del mismo tamaño ○ ESTRATEGIAS 3: Q/S Tokens por nodo y particionado del mismo tamaño.
  • 32. Conclusiones Durante el tiempo de vida de Dynamo se ha contrastado: ● El 99.9995% de peticiones de datos se han producido sin pérdida ● Configurable (N,R,W) ● Altamente disponible, es posible el manejo de los fallos e inconsistencias.

Notas del editor

  1. Consistent hashing: Consistent hashing is a special kind of hashing such that when a hash table is resized and consistent hashing is used, only keys need to be remapped on average, where is the number of keys, and is the number of slots. In contrast, in most traditional hash tables, a change in the number of array slots causes nearly all keys to be remapped. (WIKIPEDIA) PAPER: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.147.1879 Si un nodo no está disponible (por fallas o mantenimiento de rutina), la carga manejada por este nodo se dispersa de forma uniforme en todos los nodos disponibles restantes. Cuando un nodo esté disponible de nuevo o un nodo nuevo se añade al sistema, el nodo recién disponible acepta una cantidad aproximadamente equivalente de carga de cada uno de los nodos disponibles.
  2. Each key (k) is assigned to a coordinator node (i). Each value (v) is replicated to (N-1) clockwise successor logical nodes in the ring. Node (i) is responsible to update all other (N-1) replicas for the keys it owns. Each key (k) has a preference list of physical nodes that are responsible to maintain and access the keys data
  3. Eventual consistency protocol is used to update all data replicas asynchronously. put() is returned before updating all replicas. get() can return multiple versions for the same key. Dynamo track each data mutation as a new version version to support “write always” protocol. Dynamo uses vector clocks protocol for versioning
  4. ¿? Bastante dificil de explicar (seguimos, mas adelante explicada
  5. Syntactic reconciliation: The Application is able to resolve the conflict automatically Semantic reconciliation: Merge results from different conflicts, make the user revise the new values. Example: Amazons shopping cart: Preserve “Add to cart” items. Deleted items can resurface
  6. 2 strategies client uses to select a node Generic load-balancer that will select a node based on load Partition aware client-library which routes request to right node Node handling read and write operation is called “coordinator” Coordinator should be among first in top N nodes in preference list For reads and writes dynamo uses consistency protocol similar to quorum system Consistency protocol has 3 variables N – Number of replicas of data to be read or written W – Number of nodes that must participate in successful write operation R – Number of machines contacted in read operation
  7. Upon receiving put() request coordinator generates vector clock and writes data locally Coordinator sends new version (along with vector clock) to top N nodes from preference list If at least W-1 nodes respond, write is successful
  8. Coordinator requests all existing version of data from top N nodes from preference list Waits for at least R nodes to respond In case of multiple versions, coordinator send all casually unrelated versions to client Client reconcile divergent versions and supersede current version with reconciled version
  9. Adding or removing the node requires a third party tool or direct user interaction. Gossip-based protocol is used to propagate membership throughout the cluster and to detect failures. Replica synchronization is done using Merkle hash tree.