4

我正在我们的项目中实施 DynamoDB。我们必须将大数据字符串放入数据库,因此我们将数据分成小块并插入多行,其中仅更改一个属性值 - 字符串的一部分。一列(范围键)包含多个部分。插入和选择数据对于小字符串和大字符串都非常有效。问题是删除一个项目。我读到,当您想删除一个项目时,您需要为该项目指定主键(散列键或散列键和范围键 - 取决于表)。但是,如果我想删除对某个属性具有特定值的项目怎么办?我是否需要扫描(扫描,而不是查询)整个表并为每一行运行删除或批量删除?或者是否有其他不使用两个查询的解决方案?我想要做的是避免扫描整个表。

感谢帮助。

4

1 回答 1

1

无法删除 DynamoDB 中的任意元素。你确实需要知道hash_keyrange_key

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

最好的办法是重新构建您的数据建模。构建自定义索引或执行“延迟删除”。

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

TL;DR:除了变通方法之外没有真正的方法。我强烈建议您至少重新建模部分数据。

于 2012-09-18T13:54:34.047 回答