2016-02-09 38 views
0

我有一個具有以下字段的表:查詢DynamoDB中startTime和endTime字段的時間範圍?

uniqueID 
startTime 
endTime 
value 
otherData 

鑑於10:00 AM今天上午11:00今天的時間範圍內,我想要檢索的所有項目,其中startTime和上述時間之間endTime秋天範圍。有沒有辦法有效地做到這一點?

我能想到的一個平庸的解決方案:

  1. 做一個GSI基於小時的一天甚至分區的哈希鍵,使startTime範圍鍵。
  2. 這樣我可以查詢startTime,條件爲startTime> =今天上午10:00。然後,我必須爲今天的endTime < = 11:00 AM添加過濾器表達式。過濾部分效率不高。

在DynamoDB中有更好的方法嗎?

回答

1

3種方法:

1)您的GSI方法
2)掃描:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScan.Scan
可能對你的工作,如果你沒有大量的數據
的 3)使開始時間爲範圍鍵爲表和查詢上(沒有GSI)

如果使用GSI記住,他們是最終一致的(即你可能不會在查詢得到一個記錄後,您可以立即更新)

+0

2)掃描你由於數據太多,不會太好。 3)uniqueID與startTime沒有關聯,我不明白這是如何工作的?如果我想要對範圍鍵進行查詢,我還需要提供一個散列鍵,在這種情況下,它將是uniqueID。這是你的意思嗎? –

+0

uniqueID將是hashKey,startTime將是rangeKey。 – Mircea

+0

這仍然意味着我需要按endTime過濾嗎?這意味着它與GSI解決方案相同。實際上,GSI解決方案更有意義,因爲我將使用GSI散列密鑰將數據分區爲小時桶。 –

相關問題