RavenDB 在更新一个文档时重建所有索引
RavenDB rebuilds all indexes when one document is updated
我似乎找不到这个问题的答案,即使在谷歌搜索之后也是如此。
我们遇到了导致应用程序锁定的问题。部分原因是我们有未完成的 WaitForNonStaleResultsAsOfNow
调用,我们正在等待发布修复(即我们已删除它们),但也是由于所有索引的完全重建造成的。我相信导致所有索引重建的触发器是当我们对一个(类型)文档进行更改时。例如:
我们有一个名为 "Agency" 的模型。当我们的用户登录时,我们使用他们的 "AgencyId" 来向他们提供特定于他们的数据。因此,大多数其他文档(例如 "Placements"、"Invoices" 等)都有一个 "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 中,并将 Agency 模型上的 "DocumentPath" 属性 设置为保存位置。
我的问题:更新代理记录会导致重建所有相关文档的索引吗?即我知道 AgencyIndex
会重建,但这会导致 PlacementIndex
(以及所有其他相关索引)也重建吗?
更多信息:
Raven 客户端构建#:2.5.2952
Raven 服务器构建#:2.5.2952 (RavenHQ)
另外值得注意:我们正在努力尽快升级到 RavenDB 3.0,但这是一个真实存在的问题,我需要了解它发生的原因!
是的,可以肯定的是,更新许多其他人指向的文档会导致索引重建。
某些类型的操作需要索引号是陈旧的(或强制更新陈旧索引)。有必要将截止日期传递给您的 WaitForNonStaleResultsAsOfNow,它可以接收 TimeSpan 作为参数,因此您将等待索引不会对预定义类型过时。
我似乎找不到这个问题的答案,即使在谷歌搜索之后也是如此。
我们遇到了导致应用程序锁定的问题。部分原因是我们有未完成的 WaitForNonStaleResultsAsOfNow
调用,我们正在等待发布修复(即我们已删除它们),但也是由于所有索引的完全重建造成的。我相信导致所有索引重建的触发器是当我们对一个(类型)文档进行更改时。例如:
我们有一个名为 "Agency" 的模型。当我们的用户登录时,我们使用他们的 "AgencyId" 来向他们提供特定于他们的数据。因此,大多数其他文档(例如 "Placements"、"Invoices" 等)都有一个 "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 中,并将 Agency 模型上的 "DocumentPath" 属性 设置为保存位置。
我的问题:更新代理记录会导致重建所有相关文档的索引吗?即我知道 AgencyIndex
会重建,但这会导致 PlacementIndex
(以及所有其他相关索引)也重建吗?
更多信息:
Raven 客户端构建#:2.5.2952
Raven 服务器构建#:2.5.2952 (RavenHQ)
另外值得注意:我们正在努力尽快升级到 RavenDB 3.0,但这是一个真实存在的问题,我需要了解它发生的原因!
是的,可以肯定的是,更新许多其他人指向的文档会导致索引重建。 某些类型的操作需要索引号是陈旧的(或强制更新陈旧索引)。有必要将截止日期传递给您的 WaitForNonStaleResultsAsOfNow,它可以接收 TimeSpan 作为参数,因此您将等待索引不会对预定义类型过时。