Control de versiones de fuentes de datos de DynamoDB en AWS AppSync - AWS AppSync

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.

Control de versiones de fuentes de datos de DynamoDB en AWS AppSync

AWS AppSync actualmente admite el control de versiones en fuentes de datos de DynamoDB. Las operaciones de detección de conflictos, resolución de conflictos y sincronización requieren un origen de datos de tipo Versioned. Al habilitar el control de versiones en una fuente de datos, automáticamente: AWS AppSync

  • Mejorar los elementos con metadatos de control de versiones de objetos.

  • Registra los cambios realizados en los elementos con AWS AppSync mutaciones en una tabla Delta.

  • Mantener los elementos eliminados en la tabla Base con una “lápida” durante un período de tiempo configurable.

Configuración de fuente de datos versionada

Al habilitar el control de versiones en un origen de datos de DynamoDB, especifique los siguientes campos:

BaseTableTTL

El número de minutos que se conservarán los elementos eliminados en la tabla Base con una “lápida”, un campo de metadatos que indica que el elemento se ha eliminado. Puede establecer este valor en 0 si desea que los elementos se supriman inmediatamente cuando se eliminen. Este campo es obligatorio.

DeltaSyncTableName

El nombre de la tabla en la que se almacenan los cambios realizados en los elementos con AWS AppSync mutaciones. Este campo es obligatorio.

DeltaSyncTableTTL

Número de minutos que se deben conservar los elementos en la tabla Delta. Este campo es obligatorio.

Registro de la tabla de sincronización delta

AWS AppSync actualmente es compatible con Delta Sync Logging para mutaciones que utilizan PutItemUpdateItem, y operaciones de DeleteItem DynamoDB.

Cuando una AWS AppSync mutación cambia un elemento de una fuente de datos versionada, se almacenará un registro de ese cambio en una tabla Delta optimizada para las actualizaciones incrementales. Puede optar por utilizar diferentes tablas Delta (por ejemplo, una por tipo, una por área de dominio) para otras fuentes de datos versionadas o una sola tabla Delta para las suyas. API AWS AppSync recomienda no utilizar una sola tabla Delta para varias, APIs a fin de evitar la colisión de las claves principales.

El esquema requerido para esta tabla es el siguiente:

ds_pk

Valor de cadena que se utiliza como clave de partición. Se construye concatenando el nombre de la fuente de datos base y el formato ISO 8601 de la fecha en que se produjo el cambio (por ejemplo). Comments:2019-01-01

Cuando el customPartitionKey indicador de la plantilla de VTL mapeo se establece como nombre de columna de la clave de partición (consulte Resolver Mapping Template Reference for DynamoDB en AWS AppSync la Guía para desarrolladores), el formato ds_pk cambia y la cadena se crea añadiéndole el valor de la clave de partición en el nuevo registro de la tabla base. Por ejemplo, si el registro de la tabla Base tiene un valor de clave de partición 1a y un valor de clave de clasificación 2b, el nuevo valor de la cadena será: Comments:2019-01-01:1a.

ds_sk

Valor de cadena que se utiliza como clave de ordenación. Se crea concatenando el formato ISO 8601 de la hora en que se produjo el cambio, la clave principal del elemento y la versión del elemento. La combinación de estos campos garantiza la unicidad de cada entrada de la tabla Delta (por ejemplo, si la hora es 09:30:00, el ID es 1a y la versión es 2, el valor sería 09:30:00:1a:2).

Cuando el customPartitionKey indicador de la plantilla de VTL mapeo se establece en el nombre de la columna de la clave de partición (consulte Resolver Mapping Template Reference for DynamoDB en AWS AppSync la Guía para desarrolladores), el formato ds_sk cambia y la cadena se crea sustituyendo el valor de la clave de combinación por el valor de la clave de clasificación de la tabla base. Con el ejemplo anterior, si el registro de la tabla Base tiene un valor de clave de partición 1a y un valor de clave de clasificación 2b, el nuevo valor de la cadena será: 09:30:00:2b:3.

_ttl

Valor numérico que almacena la marca de tiempo, en segundos transcurridos desde la fecha de inicio, en cuyo momento se debe suprimir un elemento de la tabla Delta. Este valor se determina agregando el valor DeltaSyncTableTTL configurado en el origen de datos al momento en que se produjo el cambio. Este campo debe configurarse como atributo de TTL DynamoDB.

El IAM rol configurado para su uso con la tabla base también debe contener permiso para operar en la tabla Delta. En este ejemplo, se muestra la política de permisos para una tabla Base denominada Comments y una tabla Delta denominada ChangeLog:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:000000000000:table/Comments", "arn:aws:dynamodb:us-east-1:000000000000:table/Comments/*", "arn:aws:dynamodb:us-east-1:000000000000:table/ChangeLog", "arn:aws:dynamodb:us-east-1:000000000000:table/ChangeLog/*" ] } ] }

Metadatos de fuentes de datos versionadas

AWS AppSync administra los campos de metadatos de las fuentes de Versioned datos en su nombre. Si modifica estos campos usted mismo, puede causar errores en la aplicación o pérdida de datos. Estos campos incluyen:

_version

Un contador con aumento monotónico que se actualiza cada vez que se produce un cambio en un elemento.

_lastChangedAt

Un valor numérico que almacena la marca de tiempo, en milisegundos transcurridos desde la fecha de inicio, en cuyo momento se modificó por última vez un elemento.

_deleted

Un valor booleano de “lápida” que indica que se ha eliminado un elemento. Pueden utilizarlo las aplicaciones para desalojar elementos eliminados de los almacenes de datos locales.

_ttl

Valor numérico que almacena la marca de tiempo, en segundos transcurridos desde la fecha de inicio, en cuyo momento se debe suprimir un elemento del origen de datos subyacente.

ds_pk

Un valor de cadena que se utiliza como clave de partición para las tablas Delta.

ds_sk

Un valor de cadena que se utiliza como clave de ordenación para las tablas Delta.

gsi_ds_pk

Un atributo de valor de cadena que se genera para soportar un índice secundario global como clave de partición. Solo se incluirá si los populateIndexFields indicadores customPartitionKey y están habilitados en la plantilla de VTL mapeo (consulte la referencia de plantillas de mapeo de Resolver para DynamoDB en AWS AppSync la Guía para desarrolladores). Si está habilitada, el valor se generará concatenando el nombre de la fuente de datos base y el formato ISO 8601 de la fecha en que se produjo el cambio (por ejemplo, si la tabla base se denomina Comentarios, este registro se establecerá como). Comments:2019-01-01

gsi_ds_sk

Un atributo de valor de cadena que se genera para soportar un índice secundario global como clave de clasificación. Solo se incluirá si los populateIndexFields indicadores customPartitionKey y están habilitados en la plantilla de VTL mapeo (consulte la referencia de plantillas de mapeo de Resolver para DynamoDB en AWS AppSync la Guía para desarrolladores). Si está habilitado, el valor se generará concatenando el formato ISO 8601 de la hora en que se produjo el cambio, la clave de partición del elemento de la tabla base, la clave de clasificación del elemento de la tabla base y la versión del elemento (por ejemplo, para un tiempo de09:30:00, un valor de clave de partición de1a, un valor de 2b clave de clasificación y una versión de3, sería09:30:00:1a#2b:3).

Estos campos de metadatos afectarán al tamaño total de los elementos de la fuente de datos subyacente. AWS AppSync recomienda reservar 500 bytes o más el tamaño máximo de almacenamiento de la clave principal para los metadatos de las fuentes de datos versionadas al diseñar la aplicación. Para utilizar estos metadatos en aplicaciones cliente, incluya los campos _deleted, _version y _lastChangedAt en los tipos de GraphQL y en el conjunto de selección de mutaciones.