我正在DynamoDB中编写一个简单的日志记录服务.
我有一个日志表,由user_id哈希和时间戳(Unix epoch int)范围键入.
当服务的用户终止其帐户时,我需要删除表中的所有项目,而不管范围值如何.
这种操作的推荐方法是什么(请记住可能有数百万项要删除)?
据我所知,我的选择是:
答:执行扫描操作,在每个返回的项目上调用删除,直到没有剩余项目
B:执行BatchGet操作,再次对每个项目调用delete,直到没有剩下
这些对我来说都很糟糕,因为它们需要很长时间.
我理想的做法是调用LogTable.DeleteItem(user_id) - 不提供范围,并让它为我删除所有内容.
可以通过数据管道转储 DynamoDb,也可以在 DynamoDb 中导入数据。导入进展顺利,但数据一直附加到 DynamoDb 中已经存在的数据。
现在我找到了扫描 DynamoDb 并一个一个或通过 Batch 删除项目的工作示例。但无论如何,对于大量数据来说,这不是一个好的变体。
也可以完全删除表并创建它。但是随着该变体索引将丢失。
因此,最好的方法是通过数据管道导入或以某种方式截断来覆盖 DynamoDb 数据。有可能吗?如果是的话,怎么可能?