RavenDB 嵌套文档设计和性能

标签 ravendb

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

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

此外,如何在不先加载问题(及其所有评论)的情况下向问题添加新评论?

最佳答案

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

对于索引页(列出所有博客文章),您可以创建一个索引 map/reduce .

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

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

关于RavenDB 嵌套文档设计和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15225729/

相关文章:

c# - Esent 和 Ravendb 中的 .Net 终结器顺序/语义

.net - RavenDb 选择最后评论

c# - RavenDb 增加了 winform 应用程序的启动时间

ravendb - 从RavenDB检索整个数据收集

c# - RavenDB:Raven.Abstractions.Exceptions.ConcurrencyException:具有键的文档: 'cache-fncwr10b' 当前在另一个事务中创建

ravendb - 从 RavenDB 中提取 Json 属性

json.net - 如何在 RavenDB 中使用自定义 JSON.NET 转换器从动态 DLL 反序列化为类型?

c# - RavenDB - 当我想要引用另一个根聚合时

mono - 使用嵌入式 RavenDB 跨平台 - .NET/Mono/MonoTouch/MonoDroid?

RavenDb Config 和 DocumentStore 抽象?