Amazon DynamoDb获取实体的排序列表

时间:2014-06-18 11:01:11

标签: database amazon-web-services amazon-dynamodb

给出以下食谱表:


| ID | LAST_MODIFIED | OTHER_ATTRIBUTES |


说该ID是哈希主键,并给出了一个配方ID列表: idList 。 如何检索最近修改的前十个配方实体,其中ID包含在 idList 中?

如果目前的表结构无法实现,有人可以帮我找到更好的表结构吗?

我目前正在使用AWS Java SDK进行开发。

在SQL中它将是:

SELECT * 
FROM Recipes 
WHERE id IN (idList) 
ORDER BY last_modified LIMIT 10

感谢每一位帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

这取决于你的桌面设计。

最简单的选择是使您的食谱ID成为范围键。

  

查询结果始终按范围键排序。如果是数据类型   范围键是Number,结果以数字顺序返回;   否则,结果按ASCII字符代码的顺序返回   值。默认情况下,排序顺序为升序。要扭转秩序,   将ScanIndexForward参数设置为false。

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html

可能更好的选择是在食谱ID上创建全局二级索引。有关排序的示例在http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html

的文档中提供

答案 1 :(得分:0)

另一个解决方案是创建一个单独的表" RecentModifiedRecipe"其中包含10个最近修改过的收件人。

每当你修改" idList"中的食谱时,你需要

1)将此配方ID插入到RecentModifiedRecipe表中(如果尚未存在)。

2)从RecentModifiedRecipe中删除最早的食谱ID。