2010-09-03 61 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 '/^]}/]/'