2015-04-17 34 views
0

我需要一些幫助設計DynamoDB Hash + Range密鑰方案以實現快速單項寫入訪問以及對項目組的快速並行讀取訪問。用於在DynamoDB中快速訪問和檢索粉絲數據的高效架構

背景:

目前,每一個扇形編組鏈接存儲爲以下格式中的項目:

{ 
    user_id : NUMBER 
    fanned_id : NUMBER 
    timestamp: NUMBER 
}, 

其中user_id是散列鍵和fanned_id是範圍鍵。此方案允許快速訪問單個球迷項目(通過user_id + fanned_id),但是當從DynamoDB中讀取完整球迷時,如果用戶已成千上萬其他用戶轉移數據,則需要很長時間才能傳輸數據。

這是我如何查詢使用博託 Python庫DynamoDB:

table = Table("fanship_data", connection=conn) 
fanship = [] 
uid = 10 
for fanned in table.query_2(user_id__eq=uid): 
    fanship.append((fanned["fanned_id"],fanned["timestamp"])) 

顯然吞吐量瓶頸是在博託查詢,因爲用戶的整個fanship必須以每秒25個項目被轉移,即使我已經爲DynamoDB指定了高吞吐量。

我的問題給你:

假設有大的讀吞吐能力,並且所有的數據存在於DynamoDB。我不介意訴諸多處理,因爲這對於並行傳輸數據是必要的。 Hash + Range鍵的什麼方案可以讓我快速傳輸用戶的完整粉絲?

回答

0

我認爲你的散列/範圍鍵架構是你想要完成的東西的正確選擇。我在我的幾張桌子上實施了類似的模式。

根據docs,「查詢性能取決於檢索到的數據量」,似乎沒有辦法將讀取操作並行化。做parallel read is via a Scan的唯一方法,但我不確定這是否會對你更好。