Odpowiedź na to pytanie zależy od liczby pozycji i ich wielkości oraz budżetu. Zależy od tego, że mamy 3 przypadki:
1- Liczba pozycji i rozmiar pozycji w tabeli nie są zbyt duże. następnie, jak powiedział Steffen Opel, możesz użyć zapytania zamiast skanowania, aby pobrać wszystkie elementy dla user_id, a następnie przejrzeć wszystkie zwrócone elementy i albo ułatwić, DeleteItem
alboBatchWriteItem
. Pamiętaj jednak, że możesz tutaj spalić dużą przepustowość. Na przykład rozważmy sytuację, w której trzeba usunąć 1000 pozycji z tabeli DynamoDB. Załóżmy, że każdy element ma rozmiar 1 KB, co daje około 1 MB danych. To zadanie usuwania zbiorczego będzie wymagało łącznie 2000 jednostek pojemności zapisu do wykonywania zapytań i usuwania. Aby wykonać to ładowanie danych w ciągu 10 sekund (co w niektórych aplikacjach nie jest nawet uważane za tak szybkie), należałoby ustawić udostępnioną przepustowość zapisu tabeli na 200 jednostek pojemności zapisu. Jak widać, można go użyć w ten sposób, jeśli jest to dla mniejszej liczby przedmiotów lub przedmiotów o małych rozmiarach.
2- Mamy w tabeli wiele pozycji lub bardzo duże pozycje i możemy je przechowywać według czasu w różnych tabelach. Wtedy, jak powiedział Jonathan, możesz po prostu usunąć tabelę. to jest o wiele lepsze, ale nie sądzę, aby pasowało do twojego przypadku. Ponieważ chcesz usunąć wszystkie dane użytkowników bez względu na czas tworzenia logów, w tym przypadku nie możesz usunąć konkretnej tabeli. jeśli chcesz mieć osobną tabelę dla każdego użytkownika, myślę, że jeśli liczba użytkowników jest duża, jest to tak drogie i nie jest praktyczne w twoim przypadku.
3- Jeśli masz dużo danych i nie możesz podzielić swoich gorących i zimnych danych na różne tabele i musisz często usuwać na dużą skalę, to niestety DynamoDB wcale nie jest dla Ciebie dobrą opcją. Może stać się droższy lub bardzo powolny (w zależności od budżetu). W takich przypadkach radzę poszukać innej bazy danych.