DynamoDB如何查询具有强一致性的非键属性?

问题描述 投票:0回答:2

我在DynamoDB中有以下表格:

Table: Person

Attributes: person_id, firstName, lastName, age, birthday

Partition Key: person_id

我的问题是:我需要查询特定年龄之间的所有人,例如年龄> 18岁,年龄<45岁。

但是,我的查询需要强一致性,因此,我无法使用全局二级索引。

在这种情况下,什么是最好/可能的解决方案?

java amazon-dynamodb dynamodb-queries amazon-dynamodb-index amazon-dynamodb-data-modeling
2个回答
1
投票

你所要求的是矛盾的。如果您需要“所有年龄在18到45岁之间的人”,除非此表非常小,否则在您查询时,这组人员可能会发生变化。这本质上是容忍最终一致性的操作类型。

我也想知道你会对结果做些什么。

如果表格非常大并且您的查询会有很多结果,那么您将如何呈现数据?

如果表总是很小,那么您只需扫描它并应用过滤器即可。

并且问问自己,查询或扫描是否一致意味着什么?事实上,查询/扫描可以多次往返服务器完成,这意味着它不会为您提供数据的时间点快照。除非数据非常小或不经常更改。


0
投票

我建议你使用scan操作,因为你想实现过滤,但你不知道分区键。在java中,您可以按照以下指南扫描表并使用过滤器表达式。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ScanJavaDocumentAPI.html

© www.soinside.com 2019 - 2024. All rights reserved.