当一个文档更新时,RavenDB重建所有索引

时间:2015-04-22 09:29:50

标签: c# ravendb

即使在谷歌搜索之后,我似乎无法找到答案。

我们遇到导致我们的应用锁定的问题。部分原因是因为我们有等待释放修复的未完成的WaitForNonStaleResultsAsOfNow调用(即我们已经删除它们),但这也是由所有索引的完全重建引起的。我相信导致所有索引重建的触发器是我们对一个(类型)文档进行更改时。例如:

我们有一个名为“代理商”的模型。当我们的用户登录时,我们使用他们的“AgencyId”来为他们提供特定于他们的数据。因此,大多数其他文件(例如“展示位置”,“发票”等)都有“AgencyId”字段。

代理商模型看起来像:

public class Agency
{
    public string Id {get;set;}
    public string AgencyName {get;set;}
    // ... 
}

Placement(和其他机构特定文件)的示例

public class Placement
{
    public string Id {get;set;}
    public string AgencyId {get;set;} // relates to Agency Document
    // ...
}

我们有一项功能,允许管理员将文档(PDF)上传到代理商的个人资料。我们将PDF存储在DFS中,并将代理模型上的“DocumentPath”属性设置为保存位置。

我的问题:更新代理商记录会导致重建所有相关文档的索引吗?即我知道AgencyIndex会重建,但这会导致PlacementIndex(以及所有其他相关索引)重建吗?

更多信息:
Raven Client Build#:2.5.2952
Raven Server Build#:2.5.2952(RavenHQ)

另外值得注意的是:我们正在努力升级到RavenDB 3.0,但这是一个真实的问题,我需要了解它为什么会发生!

1 个答案:

答案 0 :(得分:0)

是的,确保更新其他许多指向的文档会导致索引重建。 某些类型的操作需要索引号为陈旧(或在陈旧索引上强制更新)。有必要将截止日期传递给WaitForNonStaleResultsAsOfNow,它可以将TimeSpan作为参数接收,因此您将等待索引不会因预定义类型而过时。