CouchDB 是否共享多个视图使用的地图函数?

Does CouchDB share map functions used by multiple views?

CouchDB 的文档说它支持具有相同 map 函数但不同 reduce 函数的多个视图。如果两个视图都在同一个设计文档中,那么 map 函数将只计算一次。

这是正确的吗?数据库会比较JavaScript地图函数的文本来决定是否分享地图吗?

CouchDB 本身不会这样做。无论 query server 是否存在,它都是一个实现细节。理论上,查询服务器可以为未来的会话缓存函数,从而提供类似于您所描述的好处。

在实践中,我预计大多数解释语言的性能提升微乎其微,比如 javascript(因为执行已经批处理),所以在一般情况下可能不值得。对于某些工作负载来说,这可能是值得的,您可能想要编写自己的查询服务器。

如果使用编译语言(C、Java、Go 等)的查询服务器,缓存编译的工件以供重复使用可能是有意义的。