我正在为一个新项目设计我的数据库模型,因为我来自SQL世界,我不确定哪种方法更好 .
This are my main relationships:
-
用户组织的活动 . (例如:约翰正在组织足球比赛)
-
加入活动的用户 . (例如:安娜和罗布加入约翰组织的足球比赛)
-
活动属于类别/活动类型(约翰的游戏属于足球类别)
-
用户在完成活动后对其他用户进行评分(例如:约翰评价Anna为5星,Rob为5星,以表现他们在足球比赛期间的表现) .
The pseudocode would be something like this:
-
User
-
_id
-
全名
-
电子邮件
-
密码
-
loc({lon:X,lat:Y})
-
活动(活动数组)
-
average_rate
-
created_at
-
updated_at
-
Rate
-
_id
-
时间戳
-
活动(活动)
-
rater_user(用户)
-
rated_user(用户)
-
created_at
-
updated_at
-
ActivityType
-
_id
-
名字
-
半径
-
Activity
-
_id
-
type(ActivityType)
-
组织者(用户)
-
loc({lon:X,lat:Y})
-
地址
-
时间
-
max_participants
-
说明
-
参与者(用户数组)
-
requests(用户数组)
-
created_at
-
updated_at
我应该从这种规范化的方法转向嵌入式数据模型吗?
2 回答
这是关于我在_1867770中嵌入或引用的答案 . 强烈推荐 .
MongoDB for BI use
嵌入更适合:
参考文献更适合
这取决于您需要删除,更新和查询类型 .
对于不嵌入设计,你应该运行一些 Join Like 查询来检索数据,它需要随机的硬盘驱动器,它需要一些额外的时间
MongoDb仅增长数据库(大小)意味着删除文档不会减小数据库(和文件系统)的大小,因此许多删除操作将导致数据碎片 . 如果你用更大的文件更新文件mongo将删除文件并将其插入其他地方并且你在删除文件时有相同的碎片问题,在嵌入系统中你必须处理更多的碎片问题
......
我建议你去看书
Mongodb Applied Design Patterns