在应用过滤器的同时提高 CouchDB _changes馈送的速度



当有多个观察者时,我在CouchDB的_changes提要上遇到性能不佳的问题。

我让 CouchDB 在笔记本电脑上的虚拟机中运行,多个 iOS 客户端使用 CouchDB 的 HTTP API 在网络上的一个数据库上使用_changes?feed=continuous。随着客户端数量的增加,更改的速度会减慢到爬行。

:注:我实际上正在通过Apache反向代理与CouchDB进行通信,该代理正在压缩响应。

我还注意到,在对提要应用过滤器时,它通常会持续很长时间而不会对 HTTP 流进行任何更改。几乎就像我在等待它检查一批不符合我的过滤器的文档一样。

我可以启用任何设置或优化来帮助加快这一切?

当您意识到对于每个更改 couchdb 要求查询服务器评估 filter() 函数时,随着过滤_changes源的使用者数量的增加,延迟的增加并不奇怪。显然,它不会缓存结果,因此必须为每个使用者执行此操作。

您可以尝试删除过滤器参数并使用 include_docs=true 代替。这样,源创建者就不必要求视图服务器来评估更改。这应该使其响应速度更快。当然,这伴随着显着增加提要中传输的数据量的代价,您必须在客户端复制 filter() 函数逻辑。它并不理想,但我认为值得一试。

最新更新