RavenDB嵌套文档设计和性能

时间:2013-03-05 14:01:49

标签: ravendb

在问题和评论的场景中...评论本身不存在,但作为嵌套元素存储在其父问题文档中......这些评论当然可以构建成百上千个条目...当我加载一个问题时,我不会招致性能损失吗?加载操作是否也会加载所有数百条评论?为了加载问题我可以(应该)运行什么查询,但是只加载前10个注释,以便能够根据需要加载另一个“页面”注释?

或RavenDB是否应用延迟加载,因为在我访问Question实例的Comments属性之前它根本没有加载Comments?即便如此......我可以控制它“懒惰”以分页的方式加载评论吗?

另外,如果不先加载问题(及其所有评论),我如何在问题中添加新评论?

1 个答案:

答案 0 :(得分:2)

加载文档时,您通常要加载所有内容(即博客中的详细信息页面)。

对于索引页面(列出所有博客帖子),您可以创建一个map/reduce的索引。

至于保存新评论,您可能想问自己多久这样做?在大多数网站中,读取比写入更常用。因此,在查看整个图片时,加载整个博客的性能损失并不那么重要。

但是如果您确实希望获得大量评论,那么您可能希望稍后重新设计您的应用程序以使评论成为根聚合。但是,在它被证明是性能问题之前不要这样做。 (由于RavenDB的无模式特性,移动注释也很容易。)