在 mysql 中,用户和 friend 表有点像这样
- 用户表
- ID
- 姓名
- 电话
- 状态[启用/禁用]
==================================================
- 好友表
- 用户 ID
- another_user_id
- 状态[是否为 friend ]
==================================================
但在 DynamoDb 中
我一直为这两种方式所困扰
方法 1。
- 用户表
- ID
- 姓名
- 电话
- friend -> 属性
或者
方法 2。
- 用户表
- ID
- 姓名
- 电话
==================================================
- 好友表
- 用户 ID
- another_userid
==================================================
我目前使用方法 2。问题是以经济有效的方式、延迟和性能对表建模的最佳方法是什么?。
PS:我向他们的支持人员发送了有关这些问题的电子邮件,但仍然没有得到他们的回复 所以应该有人已经解决过这些问题。
我希望我仔细地重复了这个问题以便可以理解。
编辑: @陈
问:您经常查询用户的好友列表吗?
答:是的,我会查询每个将使用我的软件的用户 friend 列表 当用户登录时。
问:您想快速知道用户有多少好友吗?
A:不,不需要,只要我能知道用户的好友是谁就可以了。
问:您认为一个用户会有多少个 friend ?
答:无限制。
问:系统将有多少用户?
答:也无限制。
感谢您抽出时间。
谢谢
最佳答案
David,您遇到了典型的 NoSQL 问题。
在设计关系数据库时,您可以根据实际情况对数据进行建模,并尝试将数据分解为表。
在 DynamoDB(和其他 NoSQL)中,真正的模型源自需要答案的问题。
您是否经常查询用户的好友列表? 您想快速知道用户有多少好友吗? 您认为一个用户会有多少个 friend ? 系统将有多少用户?
这些问题将帮助您在方法 #1 和方法 #2 之间做出决定。 如果您评论并回答这些问题,我将能够向您提供我对该模型的想法。
无论如何,如果您确实想删除 SQL,您可能需要查看 graph databases .
关于mysql - 用户/好友表中 DynamoDB 的最佳建模技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25638470/