[英]DynamoDB: Getting only most recent items of all unique hash keys
給定一個帶有分區鍵id
和排序鍵date_epoch
的 DynamoDB 表。
我會有這樣的項目:
id | date_epoch
-----------------
1 | 1535961978
2 | 1535961996
1 | 1535962033
2 | 1535962055
3 | 1535962064
5 | 1535962073
1 | 1535962080
2 | 1535962085
對於每個給定的唯一id
,我只想要它的最新項目。 所以從這個示例數據中,我只想要以下結果:
id | date_epoch
-----------------
3 | 1535962064
5 | 1535962073
1 | 1535962080
2 | 1535962085
我可以弄清楚如何使用非常丑陋的代碼來做到這一點。 我得到了每個唯一的id
,然后遍歷每個單獨的id
並只得到最近的項目.withScanIndexForward(false)
和.withMaxResultSize(1)
(如本例和本例所示),但似乎必須有一個更好的方法來做到這一點。
我們可以設置一個掃描過濾器來限制最大項目或其他我沒有想到的東西嗎?
這與其說是回答,不如說是評論,但它是這樣的:不 - 您無法通過掃描獲得您正在尋找的答案。 沒有辦法制作過濾器,即使有,您仍然需要支付掃描的全價(盡管您會節省網絡帶寬)。
您的選擇是:
使用您正在使用的技術:獲取唯一 ID,然后使用限制 1 進行迭代和查詢
使用兩個表:一個保存歷史值,一個保存每個項目的最新值
請注意,在第二個示例中,有一些警告:您必須容忍最終的一致性; 並且您不能每秒更新任何項目超過 1000 次(盡管實際限制實際上更低 - 可能是 6-700)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.