ACID
“DynamoDB can be characterized as a zero-hop DHT, where each node routes a request to the appropiate node directly”
get(key)
-> (object, context)
put(key, context, object)
-> ()
Distribuir los datos de forma uniforme entre los nodos
H(k) = f(k) % n_nodos_sistema
H(k) = f(k) % m
m
>> n_nodos_sistema
El coordinador replica a los N
-1 siguientes nodos del anillo
Todos los nodos conocen las responsabilidades del resto
Los datos se distribuyen en nodos físicos, no virtuales
Consistencia eventual -> Si opero YA, genero una inconsistencia entre nodos
Cómo hago un merge de las distintas versiones?
Una versión? Un Vector Clock!
(nodo, contador)
k
, el nodo deberá:
N
de la lista de preferencia.R
y W
.R
nodos deberán responder antes de darla por finalizada.W
nodos deberán responder antes de darla por finalizada.N
nodos saludables de la preference list.W
-1 o R
-1 nodos, si se trata de una escritura o lectura.W
se reduce performance y availability, pero mejora durabilityR
se reduce performance y availability, pero mejora consistency.