2010-09-03 57 views
3

正如你们许多人都知道从CouchDB的视图的响应如下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"}}] 

我使用的是“列表功能”进行整理考虑回应,但我想知道做这样的事情的潜在性能开销?是否值得...或者我应该考虑更改我的所有代码以处理不同的响应?

由于 达莫

回答

5

列表功能,其中被连接到通过标准I/O的CouchDB单独的工艺(couchjs)运行。数据被序列化到/从JSON与这个通道进行通信。换句话说,您的所有行都将被序列化并发送到couchjs;和couchjs将发回结果。

因此,列表函数将添加(至少)O(n)延迟来接收您的结果。对于小型(我说少于10,000个文件,但取决于您的需求)查看结果,这是非常值得的方便。对于大量的行,您可能会发现升级客户的好处。

+1

当我想到这些。不是很理想,因为有时候你会传递一个“文档”,而其他人则会传递一个“文档视图”。所以你的代码需要处理两者。我决定在最后使用列表函数将所有值推送到一个数组,然后发送JSOn响应。谢谢你的帮助。 – dworrad 2010-09-06 08:38:33

+0

列表函数可以使用'provide()'返回不同的内容类型,可能是基于'req.query'对象中给定的参数。 – JasonSmith 2010-09-06 16:32:43

0

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

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