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