据我所知,CouchDB索引在查询视图时会更新.假设有更多的读取而不是写入,这对缩放来说不是很糟糕吗?如何配置CouchDB以更新写入索引,或者更好地按时间表更新?
CouchDB确实在更新时重新生成视图,但仅限于自上次对视图的读访问以来发生的更改.假设您的读取量大大超过了您的写入量,这应该不是问题.
当您一次更改大量文档时,这可能会导致第一次读取请求花费大量时间.为了缓解这种情况,已经提出了一些不同的可能性.大多数人依靠注册CouchDB的更新通知并自动触发读取.
用于完成该操作的示例脚本可在[1]的CouchDB wiki上获得.
[1] http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate
a)"缩放"是一个超载的术语.你指的是哪种"缩放"?(无论哪种方式,我都看不出它对你产生的负面影响).
b)写入更新:在写入后查询您的视图.请注意,向索引添加一堆数据更加资源友好(不是特定于CouchDB).因此,您可能希望每N次写入触发您的视图.
c)预定:设置一个cronjob,每隔M分钟查询您的视图.
d)等待CouchDB发展,为您提供允许您使用配置参数进行设置的基础结构.
e)(最佳选择).亲自动手,帮助我们抛光CouchDB!任何贡献都非常感谢.
d)RTFM(眨眼 :)
你不能也是,为什么你想要那个?
想想就是这样:
当您将数据导入MySQL时,您可以转换为indizes,因为更新您插入的每一行的索引比在一次运行中更新100次写入(或导入的行数多)的索引更昂贵.
这就是CouchDB在读取时更新索引的原因,因为同时集成这100个更改的成本更低,然后在写入时每次更改.
这是CouchDB的优势之一!:)我不是说这是CouchDB唯一的功能,但在阅读时这样做很聪明.
你可以做的一件事是使用update = false读取,这是一个脏读,可能不会返回你期望的.如果你总是这样做,你可以安排通过cronjob"定期"阅读并用它更新你的索引.我觉得这没有道理.