【发布时间】:2013-06-20 20:09:12
【问题描述】:
我有一个应用程序:
- 使用嵌入式 RavenDB 数据库
- 使用单调读取选项
- 使用静态索引
我注意到,当应用程序启动时,索引都暂时过时,即使它们在应用程序关闭(干净地)上一次运行时没有过时。
例如,我运行应用程序,插入 10 条记录,然后等待索引更新。我查询它并查看我期望的结果。然后我关闭应用程序,重新启动它,然后查询,我没有得到任何结果。一秒钟后,索引已更新,我现在可以返回结果。如果我重复这个,有时我会得到 10 个结果,有时会得到 0 个结果,有时会得到 2 个结果。
我的假设是,在时间 T 查询索引时,我总是会在 T + 1 看到“至少一样一致”的结果。但是,如果服务器在此期间重新启动,我似乎看到了在 T + 1 时较少一致的结果。这不是最终的一致性,而是最终的不一致! :)
我的问题是:
- 我的假设是错误的/愚蠢的吗?
- 有没有办法防止这种情况发生?
- 此行为是否只是一个启动事件,还是可能随时发生?例如,我是否可以渲染 10 个结果,然后刷新 0 个结果,然后再次刷新 10 个结果,因为 Raven 决定要重新索引所有内容?
【问题讨论】:
-
哪个版本的 raven?
-
@ThomasJames 2.5.2621
-
你在内存中运行吗?那些是临时索引吗?
-
不在内存中,静态索引
-
不,除了内置的,没有捆绑包。
标签: ravendb eventual-consistency