【发布时间】:2010-09-12 10:42:08
【问题描述】:
据我了解,查询视图时会更新 CouchDB 索引。假设读比写多,这对扩展不是很不利吗?我将如何配置 CouchDB 以在写入时更新索引,或者更好的是,按计划更新索引?
【问题讨论】:
据我了解,查询视图时会更新 CouchDB 索引。假设读比写多,这对扩展不是很不利吗?我将如何配置 CouchDB 以在写入时更新索引,或者更好的是,按计划更新索引?
【问题讨论】:
a) “缩放”是一个过度使用的术语。您指的是哪种“缩放”? (无论如何,我看不出它对你有什么负面影响)。
b) 写入更新:只需在写入后查询您的视图。请注意,将一堆数据添加到索引对资源更友好(并非特定于 CouchDB)。因此,您可能希望每 N 次写入触发您的视图。
c) 计划:设置每 M 分钟查询一次视图的 cronjob。
d) 等待 CouchDB 发展为您提供允许您使用配置参数进行设置的基础架构。
e)(最佳选择)。弄脏你的手,帮助我们完善 CouchDB!任何贡献都受到高度赞赏。
【讨论】:
你不能,而且你为什么想要那个?
这样想:
这是 CouchDB 的优势之一! :) 我并不是说这是 CouchDB 独有的功能,但在阅读时这样做很聪明。
您可以做的一件事是使用 update=false 进行读取,这是一种脏读,可能不会返回您期望的结果。如果您总是这样做,您可以安排通过 cronjob 进行“定期”读取并用它来更新您的索引。我只是觉得这没有意义。
【讨论】:
stale=true 和 stale=update_after 是脏读的当前参数。后者在返回后也会更新视图索引。
CouchDB 确实会在更新时重新生成视图,但仅针对自上次读取视图后发生的更改。假设您的读取量大大超过写入量,这应该不是问题。
当您一次更改大量文档时,这可能会导致第一次读取请求花费大量时间。为了减轻这种情况,已经提出了几种不同的可能性。大多数依赖于注册 CouchDB 的更新通知并自动触发读取。
CouchDB wiki [1] 上提供了一个示例脚本,用于执行此操作。
【讨论】: