2012-12-21 73 views
0

我剛開始將社交網站構建到DynamoDB中。DynamoDB - 查詢查找表

我將有涉及用戶的數據相當數量的,我打算把所有這一切到一個表 - 例如:

  • 用戶ID出生
  • 頭髮
  • 日期
  • 照片的URL
  • 細節

等等 - 有可能可能有幾百個屬性。

問:

  • 是有什麼錯把這個數據量到一個表?
  • 我如何查詢這些數據(我可以做這樣的查詢「這個年齡之間的所有成員,這個顏色的頭髮,這個位置,並在這個時間登錄) - 假設所有這些數據都包含在表中?
  • 如果表中的內容很長,我對這個表運行查詢,如上面會讀IO的成本很高 - 可能有很多條目的,從長遠來看錶...

謝謝

回答

1

不能用這種方式查詢DynamoDB只能查詢主鍵(以及可選的單個範圍)在DynamoDB中掃描表的速度慢且成本高,而且w生病導致您的其他查詢掛起。

如果您有少量屬性,則可以輕鬆地爲這些屬性創建索引表。但是如果你有不止幾個,它就變得太複雜了。

主表:

Primary Key (Type: Hash) - userid 
Attributes - the rest of the attributes 

指數表「頭髮」:

Primary Key (Type: Hash and Range) - hair and userid 

您可以檢查出Amazon SimpleDB,它是將對於其他屬性的索引爲好,因此允許這樣的查詢,你自找的。但它的規模和支持低延遲的能力有限。

你也可以考慮一些數據存儲和表的組合爲您的要求是你的真實時間和報告之間的不同:

  • DynamoDB的快速實時用戶查找
  • 的SimpleDB/RDBMS(如MySQL或Amazon RDS)爲其他屬性篩選器和查詢
  • 在內存數據庫(如Redis的,卡桑德拉)的櫃檯和表格領袖板或隊列
  • 活動日誌,你可以分析發現模式和趨勢