

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
<a name="versioned-data-sources"></a>

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
<a name="versioned-data-source-configuration"></a>

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
<a name="delta-sync-table"></a>

AWS AppSync attualmente supporta Delta Sync Logging for mutations using `PutItem``UpdateItem`, e le operazioni DynamoDB`DeleteItem`.

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 la tua 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 mappatura VTL è impostato come nome di colonna della chiave di partizione (vedi [Resolver Mapping Template Reference for DynamoDB](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-updateitem) nella *Developer Guide),AWS AppSync il* formato `ds_pk` delle modifiche 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 di`2b`, 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 di, l'ID `09:30:00` e la versione di `1a``2`, questo sarebbe). `09:30:00:1a:2`  
*Quando il `customPartitionKey` flag del modello di mappatura VTL è impostato sul nome della colonna della chiave di partizione (vedi [Resolver Mapping Template Reference for DynamoDB](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-updateitem) nella *Developer Guide),AWS AppSync il* formato `ds_sk` delle modifiche 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 di`2b`, 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 ruolo IAM configurato per l'utilizzo con la tabella *Base* deve contenere anche le autorizzazioni per operare nella tabella *Delta*. In questo esempio, viene visualizzato il criterio delle autorizzazioni per una tabella *Base* denominata `Comments` e una tabella *Delta* denominata `ChangeLog`:

------
#### [ JSON ]

****  

```
{
    "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
<a name="versioned-data-source-metadata"></a>

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 VTL (vedi [Resolver Mapping Template Reference for DynamoDB nella Developer](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-updateitem) Guide).AWS AppSync * *Se abilitato, il valore verrà costruito concatenando il nome della fonte di 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 VTL (vedi [Resolver Mapping Template Reference for DynamoDB nella Developer](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-updateitem) 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 di`09:30:00`, un valore della chiave di partizione di`1a`, un valore della chiave di ordinamento di `2b` e la versione di`3`, questo sarebbe`09: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.