2014-02-27 37 views
4

這是我第一次使用NoSQL數據庫,所以我非常困惑。我非常感謝我能得到的任何幫助。nosql/dynamodb哈希和範圍用例

我想存儲包括在我的表公告數據。基本上,每個公告都有一個ID,一個日期和一個文本。

因此,例如,公告可能有1號,2014年2月26日的日期,以及「這是一個範例公告」的文字。較新的公告總是具有比舊公告更大的ID值,因爲它們稍後被添加到表中。

有兩種類型的查詢我想在這個表上運行:

  1. 我想檢索日期的順序排序的公告文本。
  2. 我想檢索x個最近公告的文本和日期(比如3個最近的公告)。

所以我已經建立了具有以下屬性表: ID(數字)作爲主鍵, 日期(字符串)的範圍

這是適合我的東西用例?如果是這樣,我應該運行什麼樣的查詢/讀取/請求/掃描/任何(我真的對這裏的術語感到困惑),以完成我想要做的兩種類型的查詢?

任何幫助將非常感激。謝謝!

回答

11

你是在正確的軌道上。

至於排序,DynamoDB將通過一系列關鍵排序,所以日期將工作,但我建議你把它作爲一個數字,自Unix紀元或許毫秒,而不是字符串。這將使根據創建日期以升序或降序獲得公告的微不足道。

看到這個答案的地方VS全球二級指標和它們提供的功能的概述:Optional secondary indexes in DynamoDB

至於獲取的所有項目,你需要進行掃描。掃描不如查詢高效,但由於Dynamo全部位於SSD上,因此它們相對較快。通過掃描得到的查詢不會獲得單位數毫秒的性能,因此如果有方法將公告與用戶ID相關聯,則可能會獲得比掃描更好的性能。

注意,在創建表後,您不能修改表的模式(哈希鍵,範圍鍵和索引)。有辦法可以手動遷移表格或導入/導出表格,但重點是您應該先考慮當前和未來的查詢需求,並設計表格來支持它們。添加或停止存儲非鍵或非項屬性非常容易,它提供了很好的靈活性。

最後,儘量避免迪納摩的思維關係。使用Dynamo,在很多情況下,爲了快速查詢性能,您最好能夠正常化或複製一些數據。

+0

謝謝你的幫助! –