Versionierung von DynamoDB-Datenquellen in AWS AppSync - AWS AppSync

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

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

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

AWS AppSync unterstützt derzeit Delta Sync Logging für Mutationen mit PutItemUpdateItem, 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 Domänenbereich) für andere versionierte Datenquellen oder eine einzelne Delta-Tabelle für Ihre verwenden möchten. API 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 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 hat2b, lautet der neue Wert der Zeichenfolge:Comments:2019-01-01:1a.

ds_sk

Ein Zeichenfolgenwert, der als Sortierschlüssel verwendet wird. Er wird erstellt, indem das ISO 8601-Format des Zeitpunkts der Änderung, der Primärschlüssel des Elements und die Version des Elements verkettet werden. 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 1a2, 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 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 hat2b, 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 TTL DynamoDB-Attribut konfiguriert werden.

Die IAM Rolle, die für die Verwendung mit der Basistabelle konfiguriert ist, muss auch die Berechtigung enthalten, mit der Delta-Tabelle zu arbeiten. In diesem Beispiel wird die Berechtigungsscheine für eine Basis-Tabelle mit dem Namen Comments und eine Delta-Tabelle mit dem Namen ChangeLog angezeigt:

{ "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

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 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ärindex 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 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 von09:30:00, ein Partitionsschlüsselwert von1a, ein Sortierschlüsselwert von 2b und die Version von3, das wäre09: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.