Funktionsweise: DynamoDB Time to Live (TTL, Gültigkeitsdauer) (TTL: - Amazon DynamoDB

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.

Funktionsweise: DynamoDB Time to Live (TTL, Gültigkeitsdauer) (TTL:

Wenn Sie TTL für eine DynamoDB-Tabelle aktivieren, müssen Sie einen bestimmten Attributnamen angeben, nach dem der Service sucht, wenn bestimmt wird, ob ein Element für den Ablauf in Frage kommt. Nachdem Sie TTL für eine Tabelle aktiviert haben, wertet ein Scanner-Hintergrundprozess pro Partition automatisch und kontinuierlich den Ablaufstatus von Elementen in der Tabelle aus.

Der Hintergrundprozess des Scanners vergleicht die aktuelle Zeit im Unix-Zeitformat in Sekunden mit dem Wert, der im benutzerdefinierten Attribut eines Elements gespeichert ist. Wenn das Attribut vom Datentyp Number ist, ist der Wert des Attributs ein Zeitstempel im Unix-Zeitformat in Sekunden und der Zeitstempelwert ist älter als die aktuelle Zeit, aber nicht fünf Jahre älter oder länger (um eine mögliche Löschung aufgrund eines falsch formatierten TTL-Werts zu vermeiden), dann ist das Element auf abgelaufen gesetzt. Weitere Informationen zum Formatieren von TTL-Attributen finden Sie unter Formatieren des TTL-Attributs eines Elements. Ein zweiter Hintergrundprozess scannt nach abgelaufenen Elementen und löscht diese. Beide Prozesse finden automatisch im Hintergrund statt, wirken sich nicht auf die Lese- oder Schreibzugriffe auf die Tabelle aus und sind mit keinen monetären Kosten verbunden.

Wenn Elemente aus der Tabelle gelöscht werden, werden zwei Hintergrundoperationen gleichzeitig durchgeführt:

  • Elemente werden aus jedem lokalen sekundären Index und globalen sekundären Index auf die gleiche Weise wie bei einer DeleteItem-Operation entfernt.

  • Ein Löschvorgang für jedes Element tritt in den DynamoDB-Stream ein, wird jedoch als Systemlöschvorgang und nicht als regulärer Löschvorgang gekennzeichnet. Weitere Informationen zur Verwendung dieser Systemlöschung finden Sie unter DynamoDB Streams and Time to Live.

Wichtig
  • Abhängig von der Größe und der Aktivitätsstufe einer Tabelle kann der tatsächliche Löschvorgang eines abgelaufenen Elements variieren. Da TTL als Hintergrundprozess gedacht ist, ist die Kapazität, die zum Veranlassen des Ablaufs und zum Löschen von Elementen über TTL verwendet wird, variabel (aber kostenlos). TTL löscht typischerweise abgelaufene Elemente innerhalb von 48 Stunden nach dem Ablauf.

  • Elemente, die abgelaufen sind, aber noch nicht von TTL gelöscht wurden, werden weiterhin in Lese-, Abfrage- und Scanvorgängen angezeigt. Wenn Sie nicht möchten, dass abgelaufene Elemente in der Ergebnismenge enthalten sind, müssen Sie sie herausfiltern. Verwenden Sie dazu einen Filterausdruck, der nur die Elemente zurückgibt, deren Time to Live-Ablaufwert größer ist als die aktuelle Uhrzeit im Epoch-Format. Weitere Informationen finden Sie unter Filterausdrücke für Scan.

  • Elemente, die ihren Ablauf überschritten haben, aber noch nicht gelöscht wurden, können weiterhin aktualisiert werden, und erfolgreiche Aktualisierungen zum Ändern oder Entfernen des Ablaufattributs werden umgesetzt.

Sie können TTL-Raten auf der Registerkarte CloudWatch-Metriken für eine Tabelle überwachen und sehen, wann und mit welcher Rate Elemente gelöscht werden.


            Konsolen-Screenshot mit TTL und CloudWatch.

Time to Live (TTL, Gültigkeitsdauer) Beispiel

Betrachten Sie beispielsweise eine Tabelle mit dem Namen SessionData, die den Sitzungsverlauf eines Benutzers verfolgt. Jedes Element in SessionData wird durch den Partitionsschlüssel (UserName) und den Sortierschlüssel (SessionId) identifiziert. Die Sitzungsinformationen werden durch zusätzliche Attribute wie UserName, SessionId, CreationTime und ExpirationTime verfolgt. Das Attribut ExpirationTime wird als TTL-Attribut für die Tabelle festgelegt (nicht alle Attribute für jedes Element werden angezeigt).

SessionData
UserName SessionId CreationTime ExpirationTime (TTL) SessionInfo
Benutzer 1 74686572652773 1571820360 1571827560 {JSON-Dokument} ...
Benutzer 2 6e6f7468696e67 1571820180 1571827380 {JSON-Dokument} ...
Benutzer 3 746f2073656520 1571820923 1571828123 {JSON-Dokument} ...
Benutzer 4 68657265212121 1571820683 1571827883 {JSON-Dokument}
Benutzer 5 6e6572642e2e2e 1571820743 1571831543 {JSON-Dokument} ...
... ... ... ... ...

In diesem Beispiel hat jedes Element einen ExpirationTime-Attributwertsatz, wenn es erstellt wird. Betrachten Sie das folgende Tabellenelement.

SessionData
UserName SessionId CreationTime ExpirationTime (TTL) SessionInfo
Benutzer 1 74686572652773 1571820360 1571827560 {JSON-Dokument} ...

In diesem Beispiel ist das Element CreationTime auf Mittwoch, 23. Oktober, um 08:46 Uhr UTC 2019 und ExpirationTime auf 2 Stunden später am Mittwoch, 23. Oktober, um 10:46 Uhr UTC 2019 festgelegt. Das Element läuft ab, wenn die aktuelle Uhrzeit im Epoch-Zeitformat größer ist als die Zeit im ExpirationTime-Attribut. In diesem Fall läuft das Element mit dem Schlüssel { Username: user1, SessionId: 74686572652773} um 10:46 Uhr (1571827560) ab.