是否有任何方式從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中) –