Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
MemoryDB Multi-Region es una base de datos multirregión totalmente gestionada, activa-activa y multirregional que le permite crear aplicaciones multirregionales con una disponibilidad de hasta el 99,999% y latencias de lectura de microsegundos y de escritura de milisegundos de un solo dígito. Puede mejorar tanto la disponibilidad como la resiliencia ante la degradación regional y, al mismo tiempo, beneficiarse de las lecturas y escrituras locales de baja latencia para aplicaciones multirregionales.
Con MemoryDB Multi-Region, puede crear aplicaciones multirregionales de alta disponibilidad para aumentar la resiliencia. Ofrece una replicación activa-activa para que pueda realizar lecturas y escrituras de forma local desde las regiones más cercanas a sus clientes con una latencia de lectura de microsegundos y de escritura de milisegundos de un solo dígito. MemoryDB Multi-Region replica de forma asíncrona los datos entre regiones y, por lo general, los datos se propagan en un segundo. Resuelve automáticamente los conflictos de actualización y corrige los problemas de divergencia de datos, lo que le permite centrarse en su aplicación.
Actualmente, MemoryDB Multi-Region es compatible con las siguientes AWS regiones: EE.UU. Este (Norte de Virginia y Ohio), EE.UU. Oeste (Oregón, Norte de California), Europa (Irlanda, Fráncfort y Londres) y Asia-Pacífico (Tokio, Sídney, Bombay, Seúl y Singapur).
Puede empezar fácilmente a utilizar MemoryDB Multi-Region con tan solo unos clics desde el SDK más reciente, AWS Management Console o bien utilizando el SDK más reciente. AWS AWS CLI
Temas
Coherencia y resolución de conflictos
Cualquier actualización realizada en una clave de uno de los clústeres regionales se propaga a otros clústeres regionales de forma asíncrona en el clúster multirregional, normalmente en menos de un segundo. Si una región queda aislada o se degrada, MemoryDB Multi-Region realiza un seguimiento de las escrituras que se hayan realizado pero que aún no se hayan propagado a todos los clústeres miembros. Cuando la región vuelva a estar en línea, MemoryDB Multi-Region reanudará la propagación de las escrituras pendientes de esa región a los clústeres miembros de otras regiones. También reanuda la propagación de las escrituras desde otros clústeres miembros a la región que ha vuelto a estar en línea. Todas las escrituras realizadas correctamente con anterioridad se propagarán finalmente sin importar el tiempo que la región permanezca aislada.
Pueden surgir conflictos si la aplicación actualiza la misma clave en diferentes regiones aproximadamente al mismo tiempo. MemoryDB Multi-Region utiliza el tipo de datos replicados sin conflictos (CRDT) para conciliar escrituras simultáneas conflictivas. La CRDT es una estructura de datos que se puede actualizar de forma independiente y simultánea sin coordinación. Esto significa que el conflicto entre escritura y escritura se fusiona de forma independiente en cada réplica para lograr una coherencia definitiva.
En concreto, MemoryDB utiliza dos niveles de Last Writer Wins (LWW) para resolver conflictos. Para el tipo de datos String, LWW resuelve los conflictos en un nivel clave. Para otros tipos de datos, LWW resuelve los conflictos a nivel de subclave. La resolución de conflictos se gestiona por completo y se produce en segundo plano sin que ello afecte a la disponibilidad de la aplicación. A continuación se muestra un ejemplo del tipo de datos Hash:
La región A ejecuta «HSET K F1 V1» en la marca de tiempo T1; la región B ejecuta «HSET K F2 V2» en la marca de tiempo T2; tras la replicación, las regiones A y B tendrán la clave K con ambos campos. Cuando diferentes regiones actualizan simultáneamente diferentes subclaves de la misma colección, dado que MemoryDB resuelve un conflicto a nivel de subclave para el tipo de datos hash, las dos actualizaciones no entran en conflicto entre sí. Por lo tanto, los datos finales contendrían el efecto de ambas actualizaciones.
Tiempo | Región A | Región B |
---|---|---|
T1 |
HSET K F1 V1 |
|
T2 |
HSET K F2 V2 |
|
T3 |
sync (sincronizar) |
sync (sincronizar) |
T4 |
K: {F1:V1, F2:V2} |
K: {F1:V1, F2:V2} |
CRDT y ejemplos
MemoryDB Multi-Region implementa tipos de datos replicados sin conflictos (CRDT) para resolver conflictos de escritura simultáneos originados por varias regiones. La CRDT permite que diferentes regiones logren de forma independiente una vez que hayan recibido el mismo conjunto de operaciones, independientemente del pedido.
Cuando una sola clave se actualiza simultáneamente en varias regiones, es necesario resolver un conflicto de escritura y escritura para lograr la coherencia de los datos. MemoryDB Multi-Region utiliza la estrategia Last Writer Wins (LWW) para determinar la operación ganadora y solo se observarán finalmente los efectos de la operación que «ocurre después». Decimos que una operación op1 «ocurrió antes» que una operación op2 si los efectos de la op1 se aplicaron en la región; se ejecutó originalmente cuando se ejecutó op2.
En el caso de las colecciones (Hash, Set y SortedSet) MemoryDB Multi-Region, resuelva el conflicto a nivel de elemento. Esto permite a MemoryDB Multi-Region utilizar LWW para resolver conflictos de escritura/escritura en cada elemento. Por ejemplo, si se agregan simultáneamente diferentes elementos a la misma colección desde varias regiones, la colección contendrá todos los elementos.
Ejecución simultánea: el último escritor gana
En MemoryDB Multi-Region, cuando hay una creación simultánea de una clave, la última operación que se ejecutó en cualquier región determinará el resultado de la clave. Por ejemplo:

La clave x se creó en la región B con el valor «b», pero después se creó la misma clave en la región A con el valor «a». Finalmente, la clave convergerá para tener el valor «a», ya que la operación en la región A fue la última operación realizada.
Ejecución simultánea con tipos de datos contradictorios: gana el último autor
En el ejemplo anterior, la clave se creó con el mismo tipo en ambas regiones. También se observará un comportamiento similar si la clave se crea con tipos de datos diferentes:

La clave x se creó como cadena en la región B con el valor «b». Pero después de eso, y antes de que la operación se replicara en la región A, se crea la misma clave en la región A como un hash. Con el tiempo, la clave convergerá para crear el hash en la región A, ya que la operación en la región A fue la última operación realizada.
Creación y eliminación simultáneas: gana el último escritor
En el caso de que haya una eliminación y una «creación» simultáneas (es decir, la sustitución/adición de valor), ganará la última operación realizada. El resultado final vendrá determinado por el orden de la operación de eliminación. Si la eliminación se produce antes:

La clave x de tipo Set se eliminó en la región B. Después, se agregó un nuevo miembro a esa clave en la región A. Finalmente, la clave convergerá y el conjunto con el único elemento se agregó en la región A, ya que la operación en la región A fue la última operación realizada.
Si la eliminación se produce después de:

Se agregó un nuevo miembro a la clave x de tipo Set en la región A. Después de eliminar la clave en la región B. Con el tiempo, convergerá y se eliminará la clave, ya que la operación en la región B fue la última operación realizada.
Contadores, operaciones simultáneas: gana la replicación del valor total con el último autor
Los contadores de MemoryDB Multi-Region se comportan de manera similar a los tipos sin contador, ya que replican y aplican todos los valores. last-writer-strategy Las operaciones simultáneas no se combinarán, sino que ganará la última operación. Por ejemplo:

En este escenario, la clave x tiene el valor inicial 1. Luego, la Región B aumenta el contador x en 2 y, poco después, la Región A aumenta el contador en 1. Como la región A fue la última operación realizada, la clave x finalmente convergerá al valor 2, ya que la última operación realizada fue aumentar en 1.
Los comandos no deterministas se replican como deterministas
Para garantizar la coherencia de los valores en las diferentes regiones, en MemoryDB Multi-Region los comandos no deterministas se replican como deterministas. Los comandos no deterministas son aquellos que dependen de factores externos, como SETNX. SETNX depende de que la clave esté presente o no, y la clave puede estar presente en una región remota pero no en la región local que recibe el comando. Por este motivo, los comandos que de otro modo no serían deterministas se replican como réplicas de valor total. En el caso de una cadena, se replicará como un comando SET.

En resumen, todas las operaciones de tipo String se replican como SET o DEL, todas las operaciones de tipo Hash se replican como HSET o HDEL, todas las operaciones de tipo Set se replican como SADD o SREM y todas las operaciones de conjuntos ordenados se replican como ZADD o ZREM.