我正在开展一个项目,我打算让大量用户在我的数据库中存储他们的消息。这些由文本和二进制数据组合在一起的消息(想想一封电子邮件)将与各个用户建立多对一的关系。由于mongo db对单个文档的文档大小限制为16mb,我以为我需要通过链接将它们关联起来。
这将需要两个单独的集合,这意味着更多往返和更差的性能。有没有我没想过的替代方案?
答案 0 :(得分:2)
嗯,没有太多选择。链接或嵌入是标准选择。但是,在某些情况下,实施混合方法可能是有益的。我称之为“批次”。
该方法的本质是:您将许多消息粘贴到单个文档中,就像嵌入一样。当该文档即将溢出时,您开始写入第二个文档(并有第一个文档链接)。
通过这种方式,您可以获得比单个链接文档更好的批量读取性能,但您也无法有效地查询它们(我想您需要查询多个文档,因为这些是消息)。
评估您的查询模式并明智地选择。