有没有办法从dynamodb表中获取最后N条记录。我拥有的范围键是时间戳。所以我可以使用ScanIndex向前按时间顺序订购商品。
但是为了查询我需要有一个hashKey条件,我不想过滤。有什么想法吗?
答案 0 :(得分:18)
DynamoDB不是以这种方式工作的。这些项目是根据HashKey上的哈希值分发的,这样订单就是不可预测的。
您的选择包括:
for (item in items) { if (item newer then oldest accumulated item) accumulate item; }
); Events
的表,为今天的事件创建一个名为Events20130705
,为明天的事件创建Events20130706
,并扫描就像上一个选项 - 这样扫描更小您也可以更改数据模型。例如,您可以拥有一个版本化条目,该条目将保留对N个最新项目的引用。或者您可以使用单个计数器来增加和更新其他条目,例如 recent-K ,其中K是您的计数器模型N.
也许你甚至可以使用其他工具来完成这项工作。例如,您可以使用Redis服务器来执行此操作。如果不更详细地了解您的用例,很难做出精确的建议 - 这应该具有多大的可扩展性?应该有多可靠?你愿意做多少维护?你愿意付多少钱?
通常更好地接受限制,了解您的约束并具有创造性。
答案 1 :(得分:0)
我不确定这是否仍然相关。我很确定你可以使用ScanIndexForward和rangeKey来获得最新值。