A resposta a esta pergunta depende do número de itens e seu tamanho e seu orçamento. Depende disso, temos os seguintes 3 casos:
1- O número de itens e o tamanho dos itens na tabela não são muito. então, como Steffen Opel disse, você pode usar Query em vez de Scan para recuperar todos os itens para user_id e, em seguida, fazer um loop em todos os itens devolvidos e facilitar DeleteItem
ouBatchWriteItem
. Mas tenha em mente que você pode queimar muita capacidade de processamento aqui. Por exemplo, considere uma situação em que você precisa excluir 1000 itens de uma tabela do DynamoDB. Suponha que cada item tenha 1 KB de tamanho, resultando em cerca de 1 MB de dados. Essa tarefa de exclusão em massa exigirá um total de 2.000 unidades de capacidade de gravação para consulta e exclusão. Para executar esse carregamento de dados em 10 segundos (o que nem mesmo é considerado tão rápido em alguns aplicativos), você precisaria definir a taxa de transferência de gravação provisionada da tabela para 200 unidades de capacidade de gravação. Como você pode ver, é possível usar desta forma se for para menos número de itens ou itens de tamanho pequeno.
2- Temos muitos itens ou itens muito grandes na mesa e podemos armazená-los de acordo com o tempo em diferentes tabelas. Então, como Jonathan Said, você pode simplesmente deletar a tabela. isso é muito melhor, mas não acho que corresponda ao seu caso. Como você deseja deletar todos os dados dos usuários não importa qual seja o momento de criação dos logs, então neste caso você não pode deletar uma determinada tabela. se você quiser ter uma mesa separada para cada usuário, então eu acho que se o número de usuários for alto, é muito caro e não é prático para o seu caso.
3- Se você tem muitos dados e não consegue dividir seus dados quentes e frios em tabelas diferentes e precisa deletar em grande escala com frequência, infelizmente o DynamoDB não é uma boa opção para você. Pode ficar mais caro ou muito lento (depende do seu orçamento). Nestes casos, recomendo encontrar outro banco de dados para seus dados.