我还没有理解文档数据库中的一件事,那就是如何处理共享对象。拿这两个不同的对象/文件:
Email
BelongsTo (User object)
Comment
WrittenBy (User object)
用户在两个文档中都是同一个用户。
答案 0 :(得分:0)
这取决于您使用的NoSQL实现。您可以通过以下几种方式实现:如果您正在使用JCR(JackRabbit,CRX等),您实际上可以将引用存储到用户节点,或者您可以使用关系方法并存储用户节点的地址。
答案 1 :(得分:0)
我想说这取决于您计划如何使用数据。例如,如果它是密集读取的,并且您只访问对象中用户的用户名,那么也许最好在评论中复制该信息。如果您允许更改用户名,并且使用最新用户名更新评论非常重要,这当然会导致更高的更新成本。我们已经为我们的读取模型使用了文档存储,并且使用了重复数据,因为我们为一个视图上下文构建了有效的视图/文档。当然更新的资源更加密集,但对我们来说还可以。我一直在使用其他构造,使用基于id的doc1和doc2之间的“手动”引用。比O / RM更多的手动工作,但更少的魔力。
BlogPost有一个典型的例子 - < 1:N> - 评论,评论可以包含在我们通过ID访问的帖子中。再次,你将如何使用它?你是否会在没有显示帖子的情况下使用评论?在查看帖子时,您是否总是对评论感兴趣? MongoDB中是否存在16MB文档大小的总存储空间?然后你可能需要分开。
我知道一个非常模糊的回答,但它也是一个非常“取决于用例”的问题。