我们正在开发一个阅读量很大的应用程序,可能有数百万个文档.我们需要在几乎每个集合中引用用户信息.用户信息具有一些可能会不时更改的属性.
我们应该使用DBref还是在所有集合中嵌入用户信息?
在重读应用程序中DBref性能有多糟糕?
如果我们不使用DBref,如果用户信息定期更改,我们如何更新每个文档?
在Mongodb中,对于这种用例,是否有DBref和嵌入式文档的替代方案?
DBref与传统关系系统中的外键不同.它只是一个容易告诉司机(谁有能力)自动加载那些推荐文件的惯例.有关详细信息,请参阅DBRef.
根据所使用的驱动程序,您可能只能在需要时自动加载这些引用(懒惰),因此性能开销应该非常小.但是存储开销比另一个文档的简单引用_id略高.基本上,我会说如果链接文档可以是变量类型,则应该只使用那些DBref.如果它是静态的,那么你就会遇到_id-references和你自己的懒惰加载器功能,所以你不要重复自己.
不要重复自己(或数据库术语中的数据重复)也适用于您的上下文,因为MongoDB建议(所以我也会),只是链接您的文档.否则,您将拥有更高的存储使用率和更长时间运行的更新,以仅更新一个逻辑实体(经常在物理上重复).
使用前面提到的自定义延迟加载器,您可以添加一些缓存,以便不是每个查找实际上都会导致mongodb查找.您很可能需要处理缓存和数据库之间的数据一致性.
归档时间: |
|
查看次数: |
3701 次 |
最近记录: |