0

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

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

  • 用户身份
  • 出生日期
  • 头发
  • 照片网址
  • 细节

等等 - 可能有几百个属性。

问题:

  • 把这么多数据放到一张表里有什么问题吗?
  • 我如何查询该数据(我可以进行这样的查询“这个年龄,这个颜色头发,这个位置,并且这次登录的所有成员) - 假设所有这些数据都包含在表中?
  • 如果表的内容很长,并且我正在像上面那样对该表运行查询,那么读取 IO 的成本是否会很高 - 从长远来看,表中可能会有很多条目......

谢谢

4

1 回答 1

2

不可以。您不能以这种方式查询 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)中用于计数器和表格作为排行榜或群组
  • 您可以分析以发现模式和趋势的活动日志
于 2012-12-22T00:08:19.610 回答