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.
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 orígenes de datos con control de versiones
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 guardan 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 tablas de sincronización Delta
AWS AppSync actualmente es compatible con Delta Sync Logging para mutaciones mediante operaciones PutItem
de DeleteItem
DynamoDB y DynamoDB. UpdateItem
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 su 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 del origen de datos Base y el formato ISO 8601 de la fecha en que se produjo el cambio (p. ej.
Comments:2019-01-01
).Cuando el
customPartitionKey
indicador de la plantilla de mapeo de VTL 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 formatods_pk
cambia y la cadena se construye 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ón1a
y un valor de clave de clasificación2b
, 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 construye concatenando el formato ISO 8601 del momento 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 es1a
y la versión es2
, el valor sería09:30:00:1a:2
).Cuando el
customPartitionKey
indicador de la plantilla de mapeo de VTL se establece en el 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 cambia y la cadena se crea sustituyendo el valords_sk
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ón1a
y un valor de clave de clasificación2b
, 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 el atributo TTL de DynamoDB.
El rol de IAM configurado para su uso con la tabla Base también debe contener permisos para operar con 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 orígenes de datos con control de versiones
AWS AppSync administra los campos de metadatos de las fuentes Versioned
de 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
indicadorescustomPartitionKey
y están habilitados en la plantilla de mapeo de VTL (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 el origen 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á comoComments: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
indicadorescustomPartitionKey
y están habilitados en la plantilla de mapeo de VTL (consulte la referencia de plantillas de mapeo de Resolver para DynamoDB en AWS AppSync la Guía para desarrolladores). Si están habilitadas, 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 la hora09:30:00
, un valor de clave de partición1a
, un valor de clave de clasificación2b
y una versión3
, 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.