Відповідь на це питання залежить від кількості позицій та їх розміру та вашого бюджету. Залежить від того, що у нас є 3 випадки:
1- Кількість предметів та розмір елементів у таблиці не дуже великі. то, як сказав Стеффен Опель, ви можете скористатися Запитом, а не Скануванням, щоб отримати всі елементи для user_id, а потім перевести цикл на всі повернені елементи та полегшити DeleteItem
абоBatchWriteItem
. Але майте на увазі, що тут ви можете спалити багато пропускної здатності. Наприклад, розглянемо ситуацію, коли потрібно видалити 1000 елементів із таблиці DynamoDB. Припустимо, що кожен елемент має розмір 1 КБ, що призводить до приблизно 1 МБ даних. Це завдання для групового видалення потребуватиме в цілому 2000 одиниць потужності запиту для запиту та видалення. Для виконання цього завантаження даних протягом 10 секунд (що навіть не вважається таким швидким у деяких програмах), вам потрібно буде встановити передбачену пропускну здатність таблиці на 200 одиниць потужності запису. Як ви бачите, можливо використовувати цей спосіб, якщо його для меншої кількості предметів або невеликих розмірів.
2- У нас багато елементів або дуже великих предметів у таблиці, і ми можемо зберігати їх відповідно до часу в різні таблиці. Тоді, як Джонатан Саїд, ви можете просто видалити таблицю. це набагато краще, але я не думаю, що він відповідає вашому випадку. Оскільки ви хочете видалити всі дані користувачів незалежно від часу створення журналів, то в цьому випадку ви не можете видалити певну таблицю. якщо ви хочете мати окрему таблицю для кожного користувача, то, мабуть, якщо кількість користувачів висока, то це так дорого, і це не практично для вашого випадку.
3- Якщо у вас багато даних, і ви не можете розділити свої гарячі та холодні дані на різні таблиці, і вам потрібно часто видаляти масштабні масштаби, то, на жаль, DynamoDB взагалі не є хорошим варіантом для вас. Це може стати дорожчим або дуже повільним (залежить від вашого бюджету). У цих випадках я рекомендую знайти іншу базу даних для ваших даних.