DynamoDB - 查询LookUp表

时间:2012-12-21 23:53:56

标签: database amazon-web-services amazon-dynamodb

我刚刚开始在DynamoDB中构建社交网站。

我将获得与用户相关的大量数据,并且我计划将这些数据放入一个表中 - 例如:

  • 用户ID
  • 出生日期
  • 照片网址
  • 细节

等 - 可能有几百个属性。

问题:

  • 将这些数据放入一个表格有什么不妥吗?
  • 我如何查询该数据(我可以进行这样的查询吗?这个时代之间的所有成员,这个颜色头发,这个位置,并且这次登录) - 假设所有这些数据都包含在表中?
  • 如果表的内容很长并且我在上面运行查询,那么读取IO的成本会很高 - 从长远来看,表格中可能会有很多条目......

由于

1 个答案:

答案 0 :(得分:1)

没有。您无法以这种方式查询DynamoDB。您只能查询主键(可选择单个范围)。扫描DynamoDB中的表格既缓慢又昂贵,并且会导致其他查询挂起。

如果您拥有少量属性,则可以轻松地为这些属性创建索引表。但如果你有不止一些,那就太复杂了。

主表:

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,Casandra)中作为排行榜或队列的计数器和表格
  • 您可以分析以发现模式和趋势的活动日志