Controle de versão de fontes de dados do DynamoDB no AWS AppSync - AWS AppSync

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Controle de versão de fontes de dados do DynamoDB no AWS AppSync

AWS AppSync atualmente oferece suporte ao controle de versão nas fontes de dados do DynamoDB. As operações de Detecção de conflitos, Resolução de conflitos e Sincronização exigem uma fonte de dados Versioned. Quando você ativa o controle de versão em uma fonte de dados, AWS AppSync automaticamente:

  • Melhora os itens com metadados de versionamento de objetos.

  • Registre as alterações feitas em itens com AWS AppSync mutações em uma tabela Delta.

  • Mantém, por um período de tempo configurável, itens excluídos na tabela Base com uma “marca de exclusão”.

Configuração da fonte de dados versionada

Ao habilitar o versionamento em uma fonte de dados do DynamoDB, especifique os seguintes campos:

BaseTableTTL

O número de minutos para reter itens excluídos na tabela Base com uma “marca de exclusão” - um campo de metadados indicando que o item foi excluído. Você pode definir esse valor como 0 se quiser que os itens sejam removidos imediatamente quando excluídos. Este campo é obrigatório.

DeltaSyncTableName

O nome da tabela em que as alterações feitas nos itens com AWS AppSync mutações são armazenadas. Este campo é obrigatório.

DeltaSyncTableTTL

O número de minutos para reter itens na tabela Delta . Este campo é obrigatório.

Registro da tabela de sincronização Delta

AWS AppSync atualmente oferece suporte ao Delta Sync Logging para mutações usando PutItemUpdateItem, e operações DeleteItem do DynamoDB.

Quando uma AWS AppSync mutação altera um item em uma fonte de dados versionada, um registro dessa alteração será armazenado em uma tabela Delta otimizada para atualizações incrementais. Você pode optar por usar tabelas Delta diferentes (por exemplo, uma por tipo, uma por área de domínio) para outras fontes de dados versionadas ou uma única tabela Delta para sua. API AWS AppSync recomenda não usar uma única tabela Delta para várias, APIs a fim de evitar a colisão de chaves primárias.

O esquema necessário para esta tabela é o seguinte:

ds_pk

Um valor de string que é usado como chave de partição. Ele é construído concatenando o nome da fonte de dados Base e o formato ISO 8601 da data em que a alteração ocorreu (por exemplo). Comments:2019-01-01

Quando o customPartitionKey sinalizador do modelo de VTL mapeamento é definido como o nome da coluna da chave de partição (consulte Resolver Mapping Template Reference for DynamoDB AWS AppSync no Developer Guide), o formato ds_pk das alterações e a string são construídos anexando o valor da chave de partição no novo registro na tabela Base. Por exemplo, se o registro na tabela Base tiver um valor de chave de partição 1a e um valor de chave de classificação de 2b, o novo valor da string será: Comments:2019-01-01:1a.

ds_sk

Um valor de string que é usado como chave de classificação. Ele é construído concatenando o formato ISO 8601 da hora em que a alteração ocorreu, a chave primária do item e a versão do item. A combinação desses campos garante exclusividade para cada entrada na tabela Delta (por exemplo, para o horário de 09:30:00, um ID 1a e a versão 2, isso seria 09:30:00:1a:2).

Quando o customPartitionKey sinalizador do modelo de VTL mapeamento é definido como o nome da coluna da chave de partição (consulte Resolver Mapping Template Reference for DynamoDB AWS AppSync no Developer Guide), o formato ds_sk das alterações e a string são construídos substituindo o valor da chave de combinação pelo valor da chave de classificação na tabela base. No exemplo anterior, se o registro na tabela Base tiver um valor de chave de partição de 1a e um valor de chave de classificação de 2b, o novo valor da string será: 09:30:00:2b:3.

_ttl

Um valor numérico que armazena o timestamp, em segundos de epoch, quando um item deve ser removido da tabela Delta. Esse valor é determinado pela adição do valor DeltaSyncTableTTL configurado na fonte de dados no momento em que a alteração ocorreu. Esse campo deve ser configurado como o atributo do TTL DynamoDB.

A IAM função configurada para uso com a tabela Base também deve conter permissão para operar na tabela Delta. Neste exemplo, a política de permissões para uma tabela Base chamada Comments e uma tabela Delta chamada ChangeLog é exibida:

{ "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/*" ] } ] }

Metadados da fonte de dados versionada

AWS AppSync gerencia campos de metadados em fontes Versioned de dados em seu nome. Modificar esses campos por conta própria pode causar erros no aplicativo ou a perda de dados. Estes campos incluem:

_version

Um contador que aumenta monotonicamente e é atualizado sempre que ocorre uma alteração em um item.

_lastChangedAt

Um valor numérico que armazena o timestamp, em milésimos de segundos de epoch, quando um item é modificado pela última vez.

_deleted

Um valor booliano de “marca de exclusão” que indica que um item foi excluído. Isso pode ser usado por aplicativos para expulsar itens excluídos de armazenamentos de dados locais.

_ttl

Um valor numérico que armazena o timestamp, em segundos de epoch, quando um item deve ser removido da fonte de dados subjacente.

ds_pk

Um valor de string que é usado como chave de partição para tabelas Delta.

ds_sk

Um valor de string que é usado como chave de classificação para tabelas Delta.

gsi_ds_pk

Um atributo de valor de string gerado para oferecer suporte a um índice secundário global como chave de partição. Ele será incluído somente se os populateIndexFields sinalizadores customPartitionKey e estiverem habilitados no modelo de VTL mapeamento (consulte Resolver Mapping Template Reference for DynamoDB no AWS AppSync Developer Guide). Se ativado, o valor será construído concatenando o nome da fonte de dados Base e o formato ISO 8601 da data em que a alteração ocorreu (por exemplo, se a tabela Base for chamada de Comentários, esse registro será definido como). Comments:2019-01-01

gsi_ds_sk

Um atributo de valor de string gerado para oferecer suporte a um índice secundário global como chave de classificação. Ele será incluído somente se os populateIndexFields sinalizadores customPartitionKey e estiverem habilitados no modelo de VTL mapeamento (consulte Resolver Mapping Template Reference for DynamoDB no AWS AppSync Developer Guide). Se ativado, o valor será construído concatenando o formato ISO 8601 da hora em que a alteração ocorreu, a chave de partição do item na tabela Base, a chave de classificação do item na tabela Base e a versão do item (por exemplo, por um período de09:30:00, um valor de chave de partição de1a, um valor de chave de 2b classificação e uma versão desse 3 valor). 09:30:00:1a#2b:3

Esses campos de metadados afetarão o tamanho geral dos itens na fonte de dados subjacente. AWS AppSync recomenda reservar mais de 500 bytes ou mais do tamanho máximo da chave primária de armazenamento para metadados de fonte de dados versionados ao projetar seu aplicativo. Para usar esses metadados em aplicativos cliente, inclua os campos _version, _lastChangedAt e _deleted nos tipos do GraphQL e no conjunto de seleção para mutações.