应用过滤器时,提高CouchDB的_更改Feed的速度

时间:2013-10-03 17:05:19

标签: couchdb

当有多个观察者时,我在CouchDB的_changes Feed上表现不佳时遇到了问题。

我在笔记本电脑上的虚拟机内运行CouchDB,并且使用CouchDB的HTTP API,多个iOS客户端通过网络在其中一个数据库上消耗_changes?feed=continuous。随着客户端数量的增加,更改的速度会降低到爬行速度。

N.B。我实际上是通过Apache反向代理与CouchDB进行通信,后者正在压缩响应。

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

我可以启用哪些设置或我可以进行哪些优化以帮助加速这一切?

1 个答案:

答案 0 :(得分:2)

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

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