mysql - 用户/好友表中 DynamoDB 的最佳建模技巧

标签 mysql amazon-dynamodb nosql

在 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/

相关文章:

reactjs - React 中的 AWS Amplify,如何从订阅的监听器呈现新数据

amazon-web-services - DynamoDB 一对多和多对多结构

python - 如何选择PyMongo唯一的唯一记录?

database - 哪个数据库用于为许多用户存储地理位置(坐标)并实时检查他们是否彼此接近?

php - 警告:PDO::__construct(): [2002] 没有这样的文件或目录(试图通过 unix:///tmp/mysql.sock 连接)

mysql - SQL 错误 - 在没有 key 长度的 key 规范中使用了 BLOB/TEXT 列 'url'

aws-lambda - DynamoDB 跨账户跨地域访问管理

mysql - 当各自的行号不匹配时,通过 id 在 Ruby 中加入两个 .csv 文件

mysql - 如何查找具有多个不同名称的项目

mysql - 用于创建用户段的最佳数据库结构