我正在尝试查询dynamodb,其中我的实际数据分为3部分(基于散列函数)。我想从所有分区中获取匹配主键的结果,然后对它们进行分页。我不确定是否可以。
我知道如何从单个分区中获取记录。我使用下面的代码执行此操作,即使这些分区可能具有相同的键,它也只能从该分区中检索数据,而不能从其他分区中检索数据
Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
eav.put(":partitionKey", new AttributeValue().withS(hashKey));
DynamoDBQueryExpression<MyClazz> queryExpression = new DynamoDBQueryExpression<MyClazz>()
.withKeyConditionExpression("partitionKey = :partitionKey")
.withExpressionAttributeValues(eav)
.withLimit(limit)
.withExclusiveStartKey(lastEvaluatedKey);
但这将从第一个分区获取数据。我想从单个QueryResultPage中的其他剩余分区中获取数据,以便可以对它们进行分页。
有可能这样做吗?
我的意思是下面的条件一起执行,以便得到一个QueryResultPage
("key = :partition1 or key = :partition2 or key = :partition3")
答案 0 :(得分:0)
这是DynamoDB的常见问题,实际上分区键上没有OR条件,但是有两种方法可以解决问题。
最简单的方法是使用 TransactGetItems 或 BatchGetItems ,基本上,您会向gheter发送多个查询,每个请求的交易数量限制为10个,每批次25个。
我不确定您使用的是哪个SDK,但可能已映射了这些功能。