2012-02-26 38 views
3

我一直試圖在dynamoDB中像google +一樣實施post/reply場景作爲私有項目。這是我第一次嘗試實現一個nosql表,並試圖將我的頭圍繞這個概念。據我所知,相關的表列可以被嵌入到原始表如下...dynamoDB中可查詢的表

Post { userid:1, 
     postdata: "hello",Comment[ 
            {userid: 2, postdata: "howdy", date: some-date}, 
            {userid: 3, postdata: "higuys", date: some-other-date} 
           ], 
     date: today} 

現在,如果這是編寫註釋表的方式,很容易通過用戶名和日期所有的職位檢索和一個對話的評論。但是如果我們需要找到具體的評論並更新它,是否有可能或者我們是否需要'掃描'一張桌子?我已經閱讀了關於掃描的結果,這些結果打破了大數據中的吞吐量限制,並且不想使用它。查詢似乎在運算符中用於比較和檢索是有限的。那麼,我是以這種方式創建表的正確途徑嗎?我可能需要將其他數據嵌入到音頻,視頻文件和每個「對話」圖片等表格中。任何輸入讚賞。

回答

4

在DynamoDB中,您的整個實體不能大於64kB,因此您不希望直接在帖子中嵌入您的評論,除非您知道它們會很小。

這可能會更好地有一個列表中的評論ID,以及任何元數據,你需要知道哪些檢索。 DynamoDB的低延遲意味着只要數量是固定的,就可以有幾個週期的request-> retrieve->請求每個頁面載入。

大型嵌入式內容(甚至更大的文本,如博客帖子)不適合DynamoDB,您可能需要像S3或CloudFront這樣的產品。

+0

非常感謝您指出了這些限制。我計劃只使用DynamoDB來存儲用戶標識及其元數據。我打算只在S3中存儲文件。請求 - >檢索 - >請求週期是否因吞吐量以單位/秒爲單位定義,而不是毫秒?估計吞吐量要求將會很困難。如果查詢超出吞吐量要求,它們是否會得到執行或是否會被限制? – Ram 2012-03-01 13:43:43

+1

如果您超出吞吐量,則會收到'ProvisionedThroughputExceededException'錯誤。在生產級系統中,如果發生這種情況,您需要進行退避+重試或錯誤處理。 – BCoates 2012-03-02 23:29:05