J'écris un simple service de journalisation dans DynamoDB.
J'ai une table de logs dont les clés sont un hash user_id et une plage de timestamp (Unix epoch int).
Lorsqu'un utilisateur du service résilie son compte, je dois supprimer tous les éléments du tableau, quelle que soit la valeur de l'intervalle.
Quelle est la méthode recommandée pour effectuer ce type d'opération (en gardant à l'esprit qu'il peut y avoir des millions d'éléments à supprimer) ?
Mes options, pour autant que je puisse en juger, sont les suivantes :
A : Effectuer une opération de balayage, en appelant la fonction de suppression pour chaque élément renvoyé, jusqu'à ce qu'il n'y ait plus d'éléments.
B : Effectuer une opération BatchGet, en appelant à nouveau la fonction delete pour chaque élément jusqu'à ce qu'il n'y en ait plus.
Ces deux solutions me semblent terribles car elles prendront beaucoup de temps.
Ce que je souhaite idéalement, c'est appeler LogTable.DeleteItem(user_id) - sans fournir la plage, et faire en sorte qu'il supprime tout pour moi.