假設我們有許多數據表,其結構爲時間戳(哈希) - 值對,其中值可以是溫度或其他類型的各種測量數據。爲了得到某些值的時間戳,我們可以用值(散列) - 時間戳(範圍)建立一個二級索引,但是如果我們想用像GT,LT,BETWEEN這樣的比較操作來查詢該值來獲得一個時間戳值的範圍?DynamoDB:通過比較查詢非鍵值
顯然,我想避免使用掃描。我唯一想到的是使用一個虛擬散列鍵並將值+時間戳放入範圍屬性中,但我猜測這有它自己的問題(與掃描相比,更好或更差)。
有沒有更好的解決方案,或者可以使用DynamoDB來完成嗎?
反規範化就是我所說的「建立二級索引」。但是,這不允許我查詢值,只能得到。就像上面所說的,我曾經想過在範圍鍵中使用一個常用的散列鍵(一個'虛擬'),用於查詢的範圍鍵中的值+時間戳,但我不確定它的性能或其它可能存在的問題(分區)我正在尋找替代品。非規範化不是問題(至少現在)。 – user1597701
如果他們都是完全隨機的,那麼我認爲你運氣不好。建議:不要將你的HASH設置爲虛擬值,而應該使用每月的時間戳,這樣你應該總是能夠務實地制定哈希應該是什麼。您也可以查看將範圍設置爲用連字符(即timestamp-value)分隔的兩個值,然後在非規格化表中value-timestamp,這樣您就可以使用GT,LT和BETWEEN運算符而無需執行性能擊中。 – greg
雖然不太喜歡不得不細分數據,但我想這是我必須做出的權衡來實現這一點。 – user1597701