【发布时间】:2011-02-22 08:59:58
【问题描述】:
这无疑是一个愚蠢的问题,当答案指出这一切的简单明了时,我们都可以笑这是多么愚蠢,但我似乎无法深入了解关系数据库的艺术完全了解 mongodb - 无论我阅读了多少文章或观看了多少视频。
这是我的情况。我有一个可能拥有数百万用户的项目。核心功能:
- 拥有 4 种不同类型的用户列表
- 其中一种用户可以创建活动
- 其他类型的用户可以申请在活动中执行(然后在申请方和组织方之间有一个请求系统来商定条款)
- 其他用户类型可以参加活动
- 所有用户类型都可以关注活动
- 每个用户都可以将无限数量的图片上传到他们的“图库”
现在我会立即知道如何规范化 MySQL 数据库并加入查询以获取我需要的数据,但是 mongodb 呢?
由于所有这些信息都与用户有关,我是否只需为用户创建一个集合?我要为每个用户创建一个文档吗?该文档是否存储了与该用户相关的事件、请求和图像的所有详细信息 - 或者只是我交叉引用的这些事物的某种 id?如果不是这样,这不会复制大量数据 - 即,如果我必须为每个关注/参加/执行该事件的用户复制所有事件数据并将其放入该用户文档中(我确信情况并非如此- 但是如果没有加入,如果事件存储在另一个集合中,我如何获得“加入”用户和所有事件数据?)。图像呢?一个用户文档可以是 16mb - 但是如果我允许无限的图像并且与用户相关的所有内容都存储在一个文档中,那么单独的图像可能会比单个文档大吗?
我确定我没有理解对理解 mongodb 至关重要的内容 - 请赐教!
谢谢。
【问题讨论】:
-
据我所知,您可以嵌入或参考其他模型。