在mysql中,User和Friend Table看起来有些像
===============================================
===============================================
但在DynamoDb中
我对这两种方式感到困扰
方法1。
OR
方法2。
===============================================
===============================================
我目前正在使用方法2.问题是以经济有效的方式,延迟和性能对表进行建模的最佳方法吗?
PS:我通过电子邮件向他们发送了关于这些问题的支持,但仍未得到他们的回复 所以有人应该已经解决了这些问题。
我希望我仔细地重复这个问题是可以理解的。
EDITED: @chen
问:Do you often query a user's friend list?
是的:我会查询将使用我的软件的每个用户 - 朋友列表 当用户登录时。
问:Do you wish to know fast how many friends does a user have?
答:不,不需要,只要我能得到用户朋友是谁,那就好了。
问:How many friends do you think a user will have?
A:无限制。
问:How many users will the system have?
答:也是无限的。
感谢您抽出时间。
感谢
答案 0 :(得分:2)
大卫,你遇到了典型的NoSQL问题。
在设计关系数据库时,您可以将数据建模为适合全世界的数据,并尝试将数据分解为表格。
在DynamoDB(和其他NoSQL)中,真实模型源自需要答案的问题。
您经常查询用户的好友列表吗? 你想知道用户有多少朋友吗? 你认为用户会有多少朋友? 系统有多少用户?
这些问题将帮助您在方法#1和#2之间做出决定。 如果您对这些问题的答案发表评论,我将能够就模型给出您的想法。
无论如何,如果您真的想删除SQL,可能需要查看graph databases。
答案 1 :(得分:0)
如果必须使用DynamoDB,则只需将引用保留在同一个表中(方法1)。您是否已决定使用哪个DB?几个原因: 其他一些NoSQL DB拥有一个充满活力的社区和优秀的文档。
GraphDB最适合您的上述问题,但您更了解系统的全局。