我会尽量做到直截了当。
来自 MySQL 并从表的角度思考,让我们使用以下示例:
假设我们有一个房地产网站,并且我们
正常显示房屋列表,我会使用下表:
- 房屋 - 手头的房地产资产
- owner - 房屋的所有者(与房屋的一对多关系)
- 代理机构 - 房地产经纪人机构(与房屋的多对多关系)
- 图像 - 与房屋的多对一关系
- 评论 - 与房屋的多对一关系
我知道 MongoDB 让您可以灵活地在具有唯一 ID 的不同集合中设计 Web 应用程序,就像关系数据库(规范化)一样,并且为了享受快速选择,您可以嵌套在集合中,相关对象和数据(未规范化)。
回到我们的房地产列表,用于填充它的查询在普通关系数据库中非常昂贵,对于您需要查询其图像、评论、所有者和机构的每栋房屋,每个实体都位于具有其字段的不同表中,您可能会使用连接并将多个查询合并为一个 - 昂贵!
进入 MongoDB - 您不需要连接,您可以将房屋的所有相关数据存储在房屋集合上的房屋项目中,选择从未如此快,这是一个 db 天堂!
但是当您需要添加/更新/删除相关评论/代理/所有者/图像时会发生什么?
这对我来说是个谜,如果我需要猜测,每个相关的集合都存在于自己的集合中,位于房屋表中的数据之上,一旦添加/更新/删除这些相关数据中的一个,你必须在其自己的收藏以及房屋收藏上对其进行更新。在此更新后 - 我是否还需要查询其他集合以确保我正在使用所有更新的相关数据更新房屋记录?
我只是在这里猜测,非常感谢您的反馈。
谢谢,
Ajar