【发布时间】:2020-09-24 22:54:05
【问题描述】:
我正在使用 MongoDB 作为我为我所在学区的两所高中构建和运行的列表服务的数据库后端。
每所学校都有自己的数据库。在学校的数据库中会有收藏。
- 每所学校都有多个电子名单(订阅渠道)
- 每个订阅者可以订阅 1 个或多个电子列表(如果订阅了零个电子列表,则他们不是订阅者)
- 每个电子列表(订阅频道)都有自己的集合,其中每个订阅者都有一个文档(记录)。
- 电子列表集合中订阅者的文档将包含订阅者的电子邮件地址和一些管理信息
会有另一个包含所有电子邮件地址的集合。
- 此集合中的每个文档都将是 订阅者。
- 每个文档都将包含有关用户的信息(电子邮件地址,首先 姓名、姓氏等),我将跟踪所有电子列表以 他们订阅了,所以我不必遍历所有 电子列表集合以查找用户拥有的订阅。
我确信所有电子邮件地址都是唯一的。 我的问题是……我应该:
- 为 mongo _id 字段创建具有标准 OID 的集合
并为电子邮件字段添加索引
或 - 使用电子邮件地址作为 mongo _id 字段,因为我知道它会是 独特并放弃使用 OID
可能值得注意的是,我正在一个小型服务器上运行。
- 选项 1 更经典,但 OID 和电子邮件地址是多余的 因为电子邮件地址是唯一的。
- 从存储角度来看,选项 2 在磁盘上的效率更高 存储空间,并且可能更有效地利用 RAM
- 我所有的外键关系都基于电子邮件地址。我不能 想想我需要 _id 字段的 OID 的原因。
- 作为 Mongo 的新手,我想知道我是否会后悔 如果我不选择选项 1(经典 OID),以后会继续。换句话说, 我是否“过度优化”了?
【问题讨论】:
标签: mongodb