Controllo delle versioni delle sorgenti dati DynamoDB in AWS AppSync - AWS AppSync

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Controllo delle versioni delle sorgenti dati DynamoDB in AWS AppSync

AWS AppSync attualmente supporta il controllo delle versioni su sorgenti dati DynamoDB. Le operazioni di rilevamento dei conflitti, risoluzione dei conflitti e sincronizzazione richiedono un'origine dati Versioned. Quando abiliti il controllo delle versioni su un'origine dati, automaticamente: AWS AppSync

  • Migliorare gli elementi con i metadati del controllo delle versioni degli oggetti.

  • Registra le modifiche apportate agli elementi con AWS AppSync mutazioni in una tabella Delta.

  • Gestire gli elementi eliminati nella tabella Base con una "rimozione definitiva" per un periodo di tempo configurabile.

Configurazione dell'origine dati con versione

Quando si attivano le versioni multiple in un'origine dati DynamoDB, specificare i seguenti campi:

BaseTableTTL

Il numero di minuti per mantenere gli elementi eliminati nella tabella Base con una "rimozione definitiva", un campo di metadati che indica che l'elemento è stato eliminato. È possibile impostare questo valore su 0 se si desidera che gli elementi vengano rimossi immediatamente quando vengono eliminati. Questo campo è obbligatorio.

DeltaSyncTableName

Il nome della tabella in cui vengono archiviate le modifiche apportate agli elementi con AWS AppSync mutazioni. Questo campo è obbligatorio.

DeltaSyncTableTTL

Numero di minuti per conservare gli elementi nella tabella Delta. Questo campo è obbligatorio.

Registrazione della tabella Delta Sync

AWS AppSync attualmente supporta Delta Sync Logging for mutations using PutItemUpdateItem, e le operazioni DynamoDBDeleteItem.

Quando una AWS AppSync mutazione modifica un elemento in un'origine dati con versione, un record di tale modifica verrà archiviato in una tabella Delta ottimizzata per gli aggiornamenti incrementali. Puoi scegliere di utilizzare diverse tabelle Delta (ad esempio una per tipo, una per area di dominio) per altre fonti di dati con versione o una singola tabella Delta per le tue. API AWS AppSync sconsiglia di utilizzare una singola tabella Delta per più tabelle per APIs evitare la collisione delle chiavi primarie.

Lo schema richiesto per questa tabella è il seguente:

ds_pk

Valore stringa utilizzato come chiave di partizione. È costruito concatenando il nome della fonte di dati di Base e il formato ISO 8601 della data in cui è avvenuta la modifica (ad es.). Comments:2019-01-01

Quando il customPartitionKey flag del modello di VTL mappatura è impostato come nome di colonna della chiave di partizione (vedi Resolver Mapping Template Reference for DynamoDB nella AWS AppSync Developer Guide), il formato ds_pk cambia e la stringa viene costruita aggiungendole il valore della chiave di partizione nel nuovo record nella tabella Base. Ad esempio, se il record nella tabella Base ha un valore di chiave di partizione 1a e un valore di chiave di ordinamento di2b, il nuovo valore della stringa sarà:Comments:2019-01-01:1a.

ds_sk

Un valore stringa utilizzato come chiave di ordinamento. Viene costruito concatenando il formato ISO 8601 dell'ora in cui è avvenuta la modifica, la chiave primaria dell'elemento e la versione dell'elemento. La combinazione di questi campi garantisce l'unicità di ogni voce nella tabella Delta (ad esempio per l'ora e l'ID 09:30:00 e la versione di 1a2, questo sarebbe). 09:30:00:1a:2

Quando il customPartitionKey flag del modello di VTL mappatura è impostato sul nome della colonna della chiave di partizione (vedi Resolver Mapping Template Reference for DynamoDB nella AWS AppSync Developer Guide), il formato ds_sk cambia e la stringa viene costruita sostituendo il valore della chiave combinata con il valore della chiave di ordinamento nella tabella Base. Utilizzando l'esempio precedente, se il record nella tabella Base ha un valore di chiave di partizione 1a e un valore di chiave di ordinamento di2b, il nuovo valore della stringa sarà:09:30:00:2b:3.

_ttl

Un valore numerico che memorizza il timestamp, in secondi dall'epoca, quando un elemento deve essere rimosso dalla tabella Delta. Questo valore viene determinato aggiungendo il valore DeltaSyncTableTTL configurato nell'origine dati nel momento in cui si è verificata la modifica. Questo campo deve essere configurato come attributo TTL DynamoDB.

Il IAM ruolo configurato per l'uso con la tabella Base deve contenere anche l'autorizzazione a operare sulla tabella Delta. In questo esempio, viene visualizzato il criterio delle autorizzazioni per una tabella Base denominata Comments e una tabella Delta denominata 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/*" ] } ] }

Metadati dell'origine dati con versione

AWS AppSync gestisce i campi di metadati sulle fonti di Versioned dati per tuo conto. La modifica di questi campi può causare errori nell'applicazione o perdita di dati. Questi campi includono:

_version

Un contatore monotonicamente crescente che viene aggiornato ogni volta che si apporta una modifica a un elemento.

_lastChangedAt

Un valore numerico che memorizza il timestamp, in millisecondi dall'epoca, al momento dell'ultima modifica di un elemento.

_deleted

Un valore booleano "contrassegnato per la rimozione definitiva" che indica che un elemento è stato eliminato. Questo può essere utilizzato dalle applicazioni per rimuovere gli elementi eliminati dagli archivi dati locali.

_ttl

Un valore numerico che memorizza il timestamp, in secondi dall'epoca, quando un elemento deve essere rimosso dall'origine dati sottostante.

ds_pk

Valore stringa utilizzato come chiave di partizione per le tabelle Delta.

ds_sk

Valore stringa utilizzato come chiave di ordinamento per le tabelle Delta.

gsi_ds_pk

Un attributo di valore di stringa generato per supportare un indice secondario globale come chiave di partizione. Verrà incluso solo se entrambi i populateIndexFields flag customPartitionKey e sono abilitati nel modello di mappatura (vedi Resolver VTL Mapping Template Reference for DynamoDB nella Developer Guide).AWS AppSync Se abilitato, il valore verrà costruito concatenando il nome dell'origine dati di Base e il formato ISO 8601 della data in cui è avvenuta la modifica (ad esempio se la tabella Base è denominata Comments, questo record verrà impostato come). Comments:2019-01-01

gsi_ds_sk

Un attributo di valore di stringa generato per supportare un indice secondario globale come chiave di ordinamento. Verrà incluso solo se entrambi i populateIndexFields flag customPartitionKey e sono abilitati nel modello di mappatura (vedi Resolver VTL Mapping Template Reference for DynamoDB nella Developer Guide).AWS AppSync Se abilitato, il valore verrà costruito concatenando il formato ISO 8601 dell'ora in cui è avvenuta la modifica, la chiave di partizione dell'elemento nella tabella Base, la chiave di ordinamento dell'elemento nella tabella Base e la versione dell'elemento (ad esempio per un periodo di09:30:00, un valore della chiave di partizione di1a, un valore della chiave di ordinamento di 2b e la versione di3, questo sarebbe09:30:00:1a#2b:3).

Questi campi di metadati influiranno sulla dimensione complessiva degli elementi nell'origine dati sottostante. AWS AppSync consiglia di riservare una dimensione massima di archiviazione di 500 byte o più della chiave primaria per i metadati delle origini dati con versioni diverse durante la progettazione dell'applicazione. Per utilizzare questi metadati nelle applicazioni client, includere i campi _version, _lastChangedAt e _deleted nei tipi GraphQL e nel set di selezione per le mutazioni.