Die Antwort auf diese Frage hängt von der Anzahl der Artikel und ihrer Größe sowie Ihrem Budget ab. Hängt davon ab, dass wir folgende 3 Fälle haben:
1- Die Anzahl der Elemente und die Größe der Elemente in der Tabelle sind nicht sehr hoch. dann können Sie, wie Steffen Opel sagte, Abfrage anstelle von Scannen verwenden, um alle Elemente für user_id abzurufen und dann alle zurückgegebenen Elemente zu durchlaufen und entweder DeleteItem
oder zu erleichternBatchWriteItem
. Beachten Sie jedoch, dass hier möglicherweise viel Durchsatzkapazität verbraucht wird. Stellen Sie sich beispielsweise eine Situation vor, in der Sie 1000 Elemente aus einer DynamoDB-Tabelle löschen müssen. Angenommen, jedes Element hat eine Größe von 1 KB, was zu etwa 1 MB Daten führt. Für diese Massenlöschaufgabe sind insgesamt 2000 Schreibkapazitätseinheiten zum Abfragen und Löschen erforderlich. Um dieses Laden der Daten innerhalb von 10 Sekunden durchzuführen (was in einigen Anwendungen nicht einmal als schnell angesehen wird), müssten Sie den bereitgestellten Schreibdurchsatz der Tabelle auf 200 Schreibkapazitätseinheiten festlegen. Wie Sie sehen können, ist es machbar, diese Methode zu verwenden, wenn es sich um eine geringere Anzahl von Artikeln oder kleine Artikel handelt.
2- Wir haben viele oder sehr große Gegenstände in der Tabelle und können sie je nach Zeit in verschiedenen Tabellen speichern. Dann können Sie, wie Jonathan sagte, einfach die Tabelle löschen. Das ist viel besser, aber ich denke nicht, dass es mit Ihrem Fall übereinstimmt. Da Sie alle Benutzerdaten unabhängig vom Zeitpunkt der Erstellung der Protokolle löschen möchten, können Sie in diesem Fall eine bestimmte Tabelle nicht löschen. Wenn Sie eine separate Tabelle für jeden Benutzer haben möchten, dann ist es wahrscheinlich so teuer und für Ihren Fall nicht praktikabel, wenn die Anzahl der Benutzer hoch ist.
3- Wenn Sie viele Daten haben und Ihre heißen und kalten Daten nicht in verschiedene Tabellen aufteilen können und häufig umfangreiche Löschvorgänge durchführen müssen, ist DynamoDB leider überhaupt keine gute Option für Sie. Es kann teurer oder sehr langsam werden (abhängig von Ihrem Budget). In diesen Fällen empfehle ich, eine andere Datenbank für Ihre Daten zu suchen.