CouchDB 视图 - 列表功能性能受到影响?

Posted

技术标签:

【中文标题】CouchDB 视图 - 列表功能性能受到影响?【英文标题】:CouchDB Views - List function performance hit? 【发布时间】:2010-09-03 14:13:13 【问题描述】:

很多人都知道来自 couchdb 视图的响应如下

"rows":[
  "key":"1","value":"Col1":"Some Value",
  "key":"2","value":"Col1":"Another Value",
]

嗯,我想整理一下

["key":"1","value":"Col1":"Some Value",
  "key":"2","value":"Col1":"Another Value"]

我正在考虑使用“列表函数”来整理响应,但我想知道执行此类操作的潜在性能开销?值得吗...还是我应该考虑更改所有代码以处理不同的响应?

谢谢 达摩

【问题讨论】:

【参考方案1】:

列表函数在一个单独的进程 (couchjs) 中运行,该进程通过标准 i/o 连接到 couchdb。数据被序列化到 JSON 或从 JSON 序列化以与此通道进行通信。换句话说,您的所有行都将被序列化并发送到couchjscouchjs 会将结果发回。

因此,列表函数将增加(至少)O(n) 延迟来接收您的结果。对于小型(我说少于 10,000 个文档,但这取决于您的需要)查看结果,非常值得方便。对于非常多的行,升级客户端可能会给您带来好处。

【讨论】:

我当时的想法。不理想,因为有时您将传递“文档”而其他人传递“文档视图”。所以你的代码需要同时处理这两者。我决定最后使用列表函数将所有值推送到数组中,然后发送 JSOn 响应。感谢您的帮助。 列表函数可以使用provides()返回不同的内容类型,可能基于req.query对象中给定的参数。【参考方案2】:

我使用 JSON_XS 格式化结果,然后 curl、awk 和其他 unix 实用程序重新格式化结果。在这种情况下,漂亮地打印 JSON 并没有帮助:

curl -s -S --compressed -X GET 'your_view_url' | sed -e '/^"rows"://' -e '/^]/]/'

【讨论】:

以上是关于CouchDB 视图 - 列表功能性能受到影响?的主要内容,如果未能解决你的问题,请参考以下文章

未请求密钥时 CouchDB 列表视图错误

CouchDb - 防止 couchDb 提供视图

使用视图在 couchDB 中的文档之间返回唯一值

CouchDB 多级视图地图功能?

CouchDB 以 XML 格式返回数据

使用 PHP 为 couchDB 创建视图