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