DynamoDB:不使用主键删除项目

时间:2012-09-18 08:58:19

标签: c# amazon-dynamodb

我正在我们的项目中实现DynamoDB。我们必须将大数据字符串放入数据库中,因此我们将数据拆分成小块并插入多行,只更改了一个属性值 - 字符串的一部分。一列(范围键)包含许多部分。插入和选择数据对于小型和大型字符串非常适用。问题是删除项目。我读到当你想删除一个项目时,你需要为这个项目指定主键(散列键或散列键和范围键 - 取决于表)。但是,如果我想删除对其中一个属性具有特定价值的项目,该怎么办?我是否需要扫描(扫描,而不是查询)整个表格以及每行运行删除或批量删除?或者是否有一些不使用两个查询的解决方案?我要做的是避免扫描整个表格。我想我们在这样的表格中会有大约100-1000万行,所以扫描速度会很慢。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在DynamoDB中有无法删除任意元素。您确实需要知道hash_keyrange_key

如果query不符合您的需求(即您甚至不知道hash_key),那么您就会陷入困境。

最好是重新设置数据建模。建立 custom index 或“延迟删除”。

要实现'延迟删除',请使用表作为要删除的元素队列。定期在其上运行EMR以在单个扫描操作中执行批处理中的所有删除操作。这不是最好的解决方案,而是我能想到避免重新建模的唯一方法。

TL; DR :没有真正的办法,只有解决方法。我强烈建议您至少重新建模部分数据。