Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DynamoDB如何查询具有强一致性的非关键属性?_Java_Amazon Dynamodb_Dynamodb Queries_Amazon Dynamodb Index_Amazon Dynamodb Data Modeling - Fatal编程技术网

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

Java DynamoDB如何查询具有强一致性的非关键属性?,java,amazon-dynamodb,dynamodb-queries,amazon-dynamodb-index,amazon-dynamodb-data-modeling,Java,Amazon Dynamodb,Dynamodb Queries,Amazon Dynamodb Index,Amazon Dynamodb Data Modeling,我在DynamoDB中有下表: Table: Person Attributes: person_id, firstName, lastName, age, birthday Partition Key: person_id 我的问题是:我需要查询特定年龄段的所有人,例如年龄>18岁和年龄

我在DynamoDB中有下表:

Table: Person

Attributes: person_id, firstName, lastName, age, birthday

Partition Key: person_id
我的问题是:我需要查询特定年龄段的所有人,例如年龄>18岁和年龄<45岁的人

但是,我的查询需要很强的一致性,因此,我不能使用全局二级索引


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

我建议您使用
scan
操作,因为您希望实现过滤,但不知道分区键。在java中,您可以按照以下指南扫描表并使用过滤器表达式。
你所要求的是矛盾的。如果您需要获取“年龄在18到45岁之间的所有人”,除非此表非常小,否则在您查询时,这组人可能会发生变化。这是一种本质上可以容忍最终一致性的操作类型

我还想知道你会如何处理这些结果

如果表非常大,并且您的查询将有很多结果,那么您将如何显示数据

如果表总是很小,那么您可以简单地扫描它并应用过滤器

问问自己,查询或扫描保持一致意味着什么?查询/扫描可能需要多次往返服务器才能完成,这一事实意味着它不会为您提供数据的时间点快照。除非数据非常小或很少更改