2015-11-30 80 views
0

所以我知道Cloudant是基於CouchDB的。在我的我得到返回的景色之一,我得到了很多的行前的列表:Cloudant列表功能或單獨降低

{"rows":[ 
    {"key":[2015,10,7,"one"],"value":2}, 
    {"key":[2015,10,7,"two"],"value":1}, 
    {"key":[2015,10,7,"three"],"value":2} 
    .... 
]} 

上述解決方案工作並最初提出here。但是,現在我的數據集正在顯着增長&行數可以是20k。

隨着返回的對象,當然也有「數」的行#。我沒有返回所有這些數據,而是希望通過列表函數運行此視圖的輸出,如couchdb here中所述。

所以我想了幾個問題:

  1. 有沒有人使用的cloudant的_list功能?
  2. 或者,會有人知道降低&再減少功能,將只給我排的長度(即鑰匙?#),否則它需要的時間太長,返回的所有數據只是爲了得到一個簡單的計數行。

謝謝!

回答

0

這是count-distinct problem的一個實例。這種天真的解決方案不會擴展。但只要您的計算資源大於您的數據大小,您最終可以進行精確的計算。

的_list功能可能不會給你帶來任何收益,但我想你可以只是嘗試。在你的函數執行之前,_list函數必須等待來自視圖的所有結果才能開始統計唯一標識符。

或者,當你的數據規模還比較小,它是否會趨小,你可以考慮倉儲你Cloudant數據dashDB並使用SQL SELECT語句(雖然會有仍然是計算顯著時間這個)。

之後,選項可以使用Bluemix Spark Service來運行第二次減少,或者甚至更好地使用HyperLogLog庫/算法,以便在您的不同計數開始變得非常大時做出準確且及時的估計。

0

我不知道我理解你的問題。但是,如果您只想獲取視圖中的總行數,而不返回任何數據,則可以使用limit=0作爲參數來查詢您的視圖。

如:

http://examples.cloudant.com/simplegeo_places/_all_docs?limit=0

讓你找出simplegeo_places測試數據庫中有2170萬頁的文檔:

{"total_rows":21735117,"offset":0,"rows":[ 

]} 

注意total_rows是行視圖中的總數,而不是如果您沒有指定limit=0,將返回的行數。


PS:是的,確實Cloudant支持列表功能,你可以使用head參數來訪問total_rows