是否有任何方式从dynamodb表获取最后N条记录?我有的范围键是时间戳。所以我可以使用ScanIndex forward来按时间顺序排列项目。获取DynamoDB表中的最后N条记录
但为了查询我需要有一个hashKey条件,我不想过滤。有什么想法吗?
是否有任何方式从dynamodb表获取最后N条记录?我有的范围键是时间戳。所以我可以使用ScanIndex forward来按时间顺序排列项目。获取DynamoDB表中的最后N条记录
但为了查询我需要有一个hashKey条件,我不想过滤。有什么想法吗?
DynamoDB不是为这种方式而设计的。这些项目根据HashKey上的散列进行分配,使得订单不可预测。
选项包括:
for (item in items) { if (item newer then oldest accumulated item) accumulate item; }
);Events
,创造一个为今天的事件,Events20130706
称为Events20130705
为明天的活动),并扫描就像前面的选项 - 这样一来你的扫描较小您也可以更改您的数据模型。例如,您可以有一个版本为的条目,该条目将保持对最近N个项目的引用。或者你可以有一个单独的计数器,你可以增加和更新N个其他项,比如recent-K其中K是你的计数器模N. N
也许你甚至可以使用其他工具来完成这项工作。例如,您可以让Redis服务器执行此操作。如果没有更详细地了解您的用例,就很难提出明确的建议 - 这应该如何扩展?它应该如何可靠?你愿意执行多少维护?你愿意为此付多少钱?
接受限制通常会更好,知道你的约束和创意。
我不确定这仍然是相关的。我相当肯定你可以使用ScanIndexForward和rangeKey来获取最新值。
这不会工作,不幸的是:( 原因是ScanIndexForward是查询API的参数,它需要你设置一个HashKey的EQ比较,这正是OP想要的这意味着OP需要知道最近使用的最近的Hash Key(然后问题变得微不足道,但不太可能成为现实世界的问题),或者需要做类似第一个要点的事情在上面的答案中,这仍然是(2.5年后)被认为是不好的做法。 –
谢谢。我知道这件事,但值得一试! –
看起来像这个答案,从2013年,只是得到了一个downvote。任何具体原因?我在这个问题的背景下重新阅读了它,它似乎仍然适用(基本上唯一的区别是,在2.5年之后,2015年12月,DynamoDB将哈希和范围重命名为分区和排序键,但它们在概念上是等同的并保留他们原来的名字在API中) –