在Nosql(documentstore)中处理共享对象

在Nosql(documentstore)中处理共享对象,nosql,document-database,Nosql,Document Database,对于文档数据库,有一件事我还不了解,那就是如何处理共享对象。以这两个不同的对象/文档为例: Email BelongsTo (User object) Comment WrittenBy (User object) 两个文档中的用户都是同一用户 实际用户是否存储在文档或某种引用中(如RDBMS中) 如何处理对用户的更改(新的名字等) 这取决于您使用的NoSQL实现。有几种方法可以做到这一点:如果使用JCR(JackRabbit、CRX等),实际上可以存储对用户节点的引用,或

对于文档数据库,有一件事我还不了解,那就是如何处理共享对象。以这两个不同的对象/文档为例:

Email
    BelongsTo (User object)

Comment
    WrittenBy (User object)
两个文档中的用户都是同一用户

  • 实际用户是否存储在文档或某种引用中(如RDBMS中)
  • 如何处理对用户的更改(新的名字等)
这取决于您使用的NoSQL实现。有几种方法可以做到这一点:如果使用JCR(JackRabbit、CRX等),实际上可以存储对用户节点的引用,或者可以使用关系方法存储用户节点的地址。

我认为这取决于您计划如何使用数据。例如,若它是读密集型的,并且您只访问对象中用户的用户名,那个么在注释中复制该信息可能会更好。如果您允许更改用户名,那么这当然会导致更高的更新成本,而且使用最新用户名更新评论很重要。我们在读取模型中使用了文档存储,并采用了复制数据的方法,因为我们为一个视图上下文构建了有效的视图/文档。当然,更新需要更多的资源,但对我们来说,这是可以的。我也一直在使用另一个构造,使用基于ID的doc1和doc2之间的“手动”引用。与O/RM相比,手动操作要多一些,但魔术性要小得多

BlogPost有一个经典的例子——评论,评论可以包含在我们的帖子中,并且可以通过ID访问。同样,你将如何使用它?你会在不显示帖子的情况下使用评论吗?你在看帖子时总是对评论感兴趣吗?MongoDB中文档大小为16MB的总存储是否存在潜在限制?然后你可能需要分开

我知道一个非常模糊的回答,但这也是一个非常“取决于用例”的问题