

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Versionierung von DynamoDB-Datenquellen in AWS AppSync
<a name="versioned-data-sources"></a>

AWS AppSync unterstützt derzeit die Versionierung von DynamoDB-Datenquellen. Konflikterkennungs-, Konfliktlösungs- und Synchronisierungsvorgänge erfordern eine `Versioned`-Datenquelle. Wenn Sie die Versionierung für eine Datenquelle aktivieren, wird automatisch: AWS AppSync 
+ Erweitern von Elementen mit Metadaten zur Objektversionierung.
+ Zeichnet Änderungen an Elementen mit AWS AppSync Mutationen in einer *Delta-Tabelle* auf.
+ Verwalten gelöschter Elemente in der *Basis*-Tabelle mit einem „Tombstone“ für einen konfigurierbaren Zeitraum.

## Konfiguration der versionierten Datenquelle
<a name="versioned-data-source-configuration"></a>

Wenn Sie die Versionierung für eine DynamoDB-Datenquelle aktivieren, geben Sie die folgenden Felder an:

** `BaseTableTTL` **  
Die Anzahl der Minuten, für die gelöschte Elemente in der *Basis*-Tabelle mit einem „Tombstone“ - einem Metadatenfeld, das angibt, dass das Element gelöscht wurde - beibehalten werden. Sie können diesen Wert auf *0* setzen, wenn Elemente sofort entfernt werden sollen, wenn sie gelöscht werden. Dies ist ein Pflichtfeld.

** `DeltaSyncTableName` **  
Der Name der Tabelle, in der Änderungen an Elementen mit AWS AppSync Mutationen gespeichert werden. Dies ist ein Pflichtfeld.

** `DeltaSyncTableTTL` **  
Die Anzahl der Minuten, in denen Elemente in der *Delta*-Tabelle aufbewahrt werden sollen. Dies ist ein Pflichtfeld.

## Protokollierung der Delta-Sync-Tabelle
<a name="delta-sync-table"></a>

AWS AppSync unterstützt derzeit Delta Sync Logging für Mutationen mit `PutItem``UpdateItem`, und `DeleteItem` DynamoDB-Operationen.

Wenn eine AWS AppSync Mutation ein Element in einer versionierten Datenquelle ändert, wird ein Datensatz dieser Änderung in einer *Delta-Tabelle* gespeichert, die für inkrementelle Aktualisierungen optimiert ist. Sie können wählen, ob Sie verschiedene *Delta-Tabellen* (z. B. eine pro Typ, eine pro Domainbereich) für andere versionierte Datenquellen oder eine einzelne *Delta-Tabelle* für Ihre API verwenden möchten. AWS AppSync empfiehlt, keine einzige *Delta-Tabelle* für mehrere APIs zu verwenden, um die Kollision von Primärschlüsseln zu vermeiden.

Das für diese Tabelle erforderliche Schema ist wie folgt:

** `ds_pk` **  
Ein Zeichenfolgenwert, der als Partitionsschlüssel verwendet wird. Sie besteht aus der Verkettung des Namens der *Basisdatenquelle* und des ISO-8601-Formats des Datums, an dem die Änderung eingetreten ist (z. B.). `Comments:2019-01-01`  
*Wenn das `customPartitionKey` Flag aus der VTL-Mapping-Vorlage als Spaltenname des Partitionsschlüssels gesetzt ist (siehe [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) im *AWS AppSync Developer Guide*), ändert sich das Format der `ds_pk` Änderungen und die Zeichenfolge wird erstellt, indem ihr der Wert des Partitionsschlüssels im neuen Datensatz in der Basistabelle angehängt wird.* Wenn der Datensatz in der *Basistabelle* beispielsweise den Partitionsschlüsselwert `1a` und den Sortierschlüsselwert von hat`2b`, lautet der neue Wert der Zeichenfolge:`Comments:2019-01-01:1a`.

** `ds_sk` **  
Ein Zeichenfolgenwert, der als Sortierschlüssel verwendet wird. Es wird erstellt, indem das ISO 8601-Format des Zeitpunkts der Änderung, des Primärschlüssels des Elements und der Version des Elements verkettet wird. Die Kombination dieser Felder garantiert die Einzigartigkeit jedes Eintrags in der *Delta-Tabelle* (z. B. für eine Uhrzeit und eine ID von `09:30:00` und eine Version von `1a``2`, das wäre). `09:30:00:1a:2`  
*Wenn das `customPartitionKey` Flag der VTL-Mapping-Vorlage auf den Spaltennamen des Partitionsschlüssels gesetzt ist (siehe [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) im *AWS AppSync Developer Guide*), ändert sich das Format der `ds_sk` Änderungen und die Zeichenfolge wird erstellt, indem der Wert des Kombinationsschlüssels durch den Wert des Sortierschlüssels in der Basistabelle ersetzt wird.* Wenn der Datensatz in der *Basistabelle* gemäß dem vorherigen Beispiel den Partitionsschlüsselwert `1a` und den Sortierschlüsselwert von hat`2b`, lautet der neue Wert der Zeichenfolge:`09:30:00:2b:3`.

** `_ttl` **  
Ein numerischer Wert, der den Zeitstempel in Epochensekunden speichert, zu dem ein Element aus der *Delta*-Tabelle entfernt werden soll. Dieser Wert wird festgelegt, indem der in der Datenquelle konfigurierte `DeltaSyncTableTTL`-Wert zum Zeitpunkt der Änderung hinzugefügt wird. Dieses Feld sollte als DynamoDB TTL-Attribut konfiguriert werden.

Die für die Verwendung mit der *Basis*-Tabelle konfigurierte IAM-Rolle muss auch die Berechtigung zum Betrieb für die *Delta*-Tabelle enthalten. In diesem Beispiel wird die Berechtigungsscheine für eine *Basis*-Tabelle mit dem Namen `Comments` und eine *Delta*-Tabelle mit dem Namen `ChangeLog` angezeigt:

------
#### [ 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/*"
            ]
        }
    ]
}
```

------

## Versionierte Datenquellen-Metadaten
<a name="versioned-data-source-metadata"></a>

AWS AppSync verwaltet in Ihrem Namen Metadatenfelder in `Versioned` Datenquellen. Wenn Sie diese Felder selbst ändern, kann dies zu Fehlern in Ihrer Anwendung oder zu Datenverlusten führen. Zu diesen Feldern gehören:

** `_version` **  
Ein monoton steigender Zähler, der jedes Mal aktualisiert wird, wenn eine Änderung an einem Element auftritt.

** `_lastChangedAt` **  
Ein numerischer Wert, der den Zeitstempel in Epochenmillisekunden speichert, an dem ein Element zuletzt geändert wurde.

** `_deleted` **  
Ein boolescher „Tombstone“-Wert, der angibt, dass ein Element gelöscht wurde. Dies kann von Anwendungen verwendet werden, um gelöschte Elemente aus lokalen Datenspeichern zu entfernen.

** `_ttl` **  
Ein numerischer Wert, der den Zeitstempel in Epochensekunden speichert, an dem ein Element aus der zugrunde liegenden Datenquelle entfernt werden soll.

** `ds_pk` **  
Ein Zeichenfolgenwert, der als Partitionsschlüssel für *Delta*-Tabellen verwendet wird.

** `ds_sk` **  
Ein Zeichenfolgenwert, der als Sortierschlüssel für *Delta*-Tabellen verwendet wird.

**`gsi_ds_pk`**  
Ein Zeichenkettenwertattribut, das generiert wurde, um einen globalen sekundären Index als Partitionsschlüssel zu unterstützen. *Es wird nur aufgenommen, wenn `customPartitionKey` sowohl die `populateIndexFields` Flags als auch in der VTL-Mapping-Vorlage aktiviert sind (siehe [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) im AWS AppSync Developer Guide).* Wenn diese Option aktiviert ist, wird der Wert durch Verkettung des Namens der *Basisdatenquelle* und des ISO 8601-Formats des Datums, an dem die Änderung vorgenommen wurde, gebildet (wenn die *Basistabelle* beispielsweise *Comments* heißt, wird dieser Datensatz als gesetzt). `Comments:2019-01-01`

**`gsi_ds_sk`**  
Ein Zeichenkettenwertattribut, das generiert wurde, um einen globalen sekundären Index als Sortierschlüssel zu unterstützen. *Es wird nur aufgenommen, wenn `customPartitionKey` sowohl die `populateIndexFields` Flags als auch in der VTL-Mapping-Vorlage aktiviert sind (siehe [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) im AWS AppSync Developer Guide).* Wenn diese Option aktiviert ist, wird der Wert durch Verkettung des ISO 8601-Formats des Zeitpunkts, zu dem die Änderung erfolgte, des Partitionsschlüssels des Elements in der *Basistabelle*, des Sortierschlüssels des Elements in der *Basistabelle* und der Version des Elements (z. B. für eine Zeit von`09:30:00`, ein Partitionsschlüsselwert von`1a`, ein Sortierschlüsselwert von `2b` und die Version von`3`, das wäre`09:30:00:1a#2b:3`) konstruiert.

Diese Metadatenfelder wirken sich auf die Gesamtgröße der Elemente in der zugrunde liegenden Datenquelle aus. AWS AppSync empfiehlt, beim Entwerfen Ihrer *Anwendung 500 Byte oder mehr als die maximale Primärschlüsselgröße* des Speichers für versionierte Datenquellenmetadaten zu reservieren. Um diese Metadaten in Clientanwendungen zu verwenden, schließen Sie die Felder `_version`, `_lastChangedAt` und `_deleted` in Ihre GraphQL-Typen und in den Auswahlsatz für Mutationen ein.