【发布时间】:2017-04-01 18:27:09
【问题描述】:
我有一个使用哈希键和排序(范围)键的表。我的范围键是一个 uuid。我有一个案例,我有一组任意范围键,我想查询数据库以使用 DynamoDBMapper。它们绝不是连续的,不幸的是,就我的目的而言,它们不可能是连续的,所以我无法查询一系列键(即键在 a 和 b 之间)。有没有办法让查询条件搜索一组潜在值中的范围键?本质上是一个 sql WHERE 条件,例如:rangeKey IN (val1, val2, ...);
根据DynamoDBQueryExpression 的文档,这似乎无法使用 setKeyConditionExpression 或 setRangeKeyConditions。有没有有效的方法来做到这一点?还是我最好的选择是遍历我的一组潜在值并使用 load 方法从数据库中单独检索它们?
【问题讨论】:
-
你能分享更多关于你的数据模型的细节吗?使用 uuid 作为范围键似乎有点奇怪,因为它们没有自然顺序。
-
我第二次 hellomichibye 的评论。听起来您的数据模型需要一些工作。使用 UUID 作为范围键没有意义。
-
我同意这并不理想,但它是我们提出的最佳解决方案。我们为通过散列键访问的不同客户提供数据库分区。在分区内,所有文档都非常独立,因此任何排序或排序都是任意的。之所以需要此查询,是因为我们有一个将多个文档与另一个实体相关联的参考表。但是,引用该实体的文档经常更改,因此任何排序或排序都是非常随意的。
标签: amazon-web-services amazon-dynamodb