Información general sobre las tablas - AWS Guía prescriptiva

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.

Información general sobre las tablas

Datos clave

  • Hay dos versiones de las tablas globales: la versión 2017.11.29 (antigua) (a veces llamada v1) y la versión 2019.11.21 (actual) (a veces llamada v2). Esta guía se centra exclusivamente en la versión actual.

  • DynamoDB (sin tablas globales) es un servicio regional, lo que significa que tiene una alta disponibilidad y es intrínsecamente resistente a las fallas de la infraestructura, incluida la falla de toda una zona de disponibilidad. Las tablas de DynamoDB de una sola región están diseñadas para ofrecer una disponibilidad del 99,99%. Para obtener más información, consulte el Acuerdo de nivel de servicios (SLA) de DynamoDB.

  • Una tabla global de DynamoDB replica sus datos entre dos o más regiones. Una tabla de DynamoDB multirregional está diseñada para ofrecer una disponibilidad del 99,999%. Con una planificación adecuada, las tablas globales pueden ayudar a crear una arquitectura resiliente a los fracasos regionales.

  • Las tablas globales emplean un modelo de replicación activa-activa. Desde la perspectiva de DynamoDB, la tabla en cada región tiene la misma capacidad para aceptar solicitudes de lectura y escritura. Tras recibir una solicitud de escritura, la tabla de réplica local replica la operación de escritura en otras regiones remotas participantes en segundo plano.

  • Los elementos se replican de forma individual. Es posible que los elementos que se actualizan en una sola transacción no se repliquen juntos.

  • Cada partición de tabla de la región de origen replica sus operaciones de escritura en parallel con las demás particiones. Es posible que la secuencia de operaciones de escritura dentro de una región remota no coincida con la secuencia de operaciones de escritura que se realizaron en la región de origen. Para obtener más información sobre las particiones de tablas, consulte la entrada de blog Escalado de DynamoDB: cómo afectan al rendimiento las particiones, las claves activas y la división por actividad.

  • Un elemento que se acaba de escribir se propagará normalmente a todas las réplicas de tabla en cuestión de segundos. Las regiones cercanas tienden a propagarse más rápido.

  • Amazon CloudWatch proporciona una ReplicationLatency métrica para cada par de regiones. Se calcula observando los elementos que llegan, comparando su hora de llegada con su tiempo de escritura inicial y calculando un promedio. Los tiempos se almacenan CloudWatch en la región de origen. La visualización de los tiempos promedio y máximo puede resultar útil para determinar el retraso de replicación promedio y en el peor de los casos. No hay SLA por esta latencia.

  • Si un elemento individual se actualiza aproximadamente al mismo tiempo (dentro de esta ReplicationLatency ventana) en dos regiones diferentes y la segunda operación de escritura se realiza antes de que se replique la primera operación de escritura, existe la posibilidad de que se produzcan conflictos de escritura. Las tablas globales resuelven estos conflictos mediante el mecanismo del último escritor gana, basado en la marca de tiempo de las operaciones de escritura. La primera operación «pierde» frente a la segunda operación. Estos conflictos no se registran en CloudWatch oAWS CloudTrail.

  • Cada elemento tiene una marca de tiempo de última escritura que se mantiene como una propiedad de sistema privada. El enfoque del último escritor gana se implementa mediante una operación de escritura condicional que requiere que la marca de tiempo del elemento entrante sea mayor que la marca de tiempo del elemento existente.

  • Una tabla global reproduce todos los elementos de todas las regiones participantes. Si desea tener distintos ámbitos de replicación, puede crear varias tablas globales y asignar a cada tabla diferentes regiones participantes.

  • La región local acepta operaciones de escritura incluso si la región de réplica está fuera de línea o ReplicationLatency crece. La tabla local sigue intentando replicar elementos en la tabla remota hasta que cada elemento lo consigue.

  • En el improbable caso de que una región quede completamente desconectada, cuando vuelva a estar en línea más adelante, se volverán a intentar todas las réplicas entrantes y salientes pendientes. No es necesaria ninguna acción especial para volver a sincronizar las tablas. El mecanismo «El último escritor gana» asegura que los datos eventualmente sean consistentes.

  • En cualquier momento, puede agregar una nueva región a una tabla de DynamoDB. DynamoDB gestiona la sincronización inicial y la replicación continua. También puede eliminar una región (incluso la región original), y esto eliminará la tabla local de esa región.

  • DynamoDB no dispone de un punto de conexión global. Todas las solicitudes se realizan a un punto de conexión regional que accede a la instancia de la tabla global que es local en esa región.

  • Las llamadas a DynamoDB no deben ir de una región a otra. La práctica recomendada es que una aplicación alojada en una región acceda directamente solo al punto de enlace local de DynamoDB de su región. Si se detectan problemas dentro de una región (en la capa de DynamoDB o en la pila circundante), el tráfico del usuario final debe dirigirse a un punto final de la aplicación diferente que esté alojado en otra región. Las tablas globales garantizan que la aplicación alojada en cada región tenga acceso a los mismos datos.

Casos de uso

Las tablas globales ofrecen estas ventajas comunes:

  • Operaciones de lectura con latencia más baja. Puede colocar una copia de los datos más cerca del usuario final para reducir la latencia de la red durante las operaciones de lectura. Los datos se mantienen tan actualizados como el ReplicationLatency valor.

  • Operaciones de escritura de latencia más baja. El usuario final puede escribir en una región cercana para reducir la latencia de la red y el tiempo necesario para completar la operación de escritura. El tráfico de escritura debe enrutarse cuidadosamente para garantizar que no haya conflictos. Las técnicas de enrutamiento se describen en una sección posterior.

  • Mayor resiliencia y recuperación de desastres. Si una región tiene un rendimiento deficiente o una interrupción total, puedes evacuarla (alejar algunas o todas las solicitudes que se destinan a esa región) y cumplir un objetivo de punto de recuperación (RPO) y un objetivo de tiempo de recuperación (RTO) medidos en segundos. El uso de tablas globales también aumenta el SLA de DynamoDB para el porcentaje de tiempo de actividad mensual del 99,99% al 99,999%.

  • Migración de región sin problemas. Puede agregar una nueva región y, a continuación, eliminar la región anterior para migrar una implementación de una región a otra, sin ningún tiempo de inactividad en la capa de datos.

Por ejemplo, Fidelity Investments presentó en re:Invent 2022 cómo utilizan las tablas globales de DynamoDB para su sistema de gestión de pedidos. Su objetivo era lograr un procesamiento confiable de baja latencia a una escala que no podían alcanzar con el procesamiento local y, al mismo tiempo, mantener la resiliencia ante los errores regionales y de la zona de disponibilidad.