给出以下食谱表:
说该ID是哈希主键,并给出了一个配方ID列表: idList 。 如何检索最近修改的前十个配方实体,其中ID包含在 idList 中?
如果目前的表结构无法实现,有人可以帮我找到更好的表结构吗?
我目前正在使用AWS Java SDK进行开发。
在SQL中它将是:
SELECT *
FROM Recipes
WHERE id IN (idList)
ORDER BY last_modified LIMIT 10
感谢每一位帮助,谢谢!
答案 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。