DynamoDB查询和分区键,简单问题

时间:2019-03-06 19:50:50

标签: java kotlin amazon-dynamodb

对于查询dynamoDB表我不了解的是,似乎有必要包含类似.withKeyConditionExpression("itemId = :v_id")的内容,但是由于分区键唯一地标识了表中的所有项目,因此您不会总是只搜索一个结果?

尝试执行以下操作:

val expression = DynamoDBQueryExpression<PluginItem>()
                .withKeyConditionExpression("itemId > 0")
                .withFilterExpression("attributes.item_modification_date < :val1")
                .withExpressionAttributeValues(eav)
val paginatedResults = queryByExpression(expression)

我正在查询表中的100,000个项目并对其分页,有人可以向我指出正确的方向吗?

1 个答案:

答案 0 :(得分:1)

  

分区键唯一标识表中的所有项目

所以这不准确。这取决于您的桌子设计。但是,如果设计具有ParitionKey和Sort Key的表,则将具有更多的灵活性。就是说,回到您的声明。主键而不是分区键唯一地标识表中的项目。主键是ParitionKey + SortKey(也称为范围键)的组合。

将每个分区都视为一个存储桶。

  

withKeyConditionExpression(“ itemId> 0”)

这行不通。您不能对分区键执行这些类型的操作。但是,您可以在排序键上执行这些条件。

来自2018 - re:Invent的视频,帮助我更好地了解了Dynamo。我看了好几次视频,尤其是最后30到20分钟。

希望有帮助。我仅与dynamodb一起工作了几个月,还有很多东西我需要学习。