2012-03-29 71 views

回答

6

我認爲http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Reduce_vs_rereduce給你一個很好的概述。由於性能optimations時,減少功能可以被稱爲在兩個層面:

  • 以減輕塊
  • 減小第一步驟的結果

在第二級中,參數rereducetrue。有關示例,請參見http://wiki.apache.org/couchdb/Built-In_Reduce_Functions#A_sum。在第一步中,塊的長度(values)被返回,在rereduce級別,這些長度必須加總。

+1

感謝您的鏈接。可以將一組數據發送到縮小功能超過2次(2個級別)嗎?這是減少,重新減少和再次減少? – Manoj 2012-03-29 21:32:16

+0

所以作爲一個人爲的例子,假設你有一個字符串數字列表,並且你想減少所有數字。第一個「級別」將對鍵和(字符串)值本身進行操作,將它們轉換爲數字並對它們進行求和。第二個「級別」(rereduce == true)可以處理第一級(數字)的結果,並簡單地將它們求和即可,而不需要解析任何字符串。 – aaaidan 2012-03-29 21:34:04

+0

謝謝@aaaidan。再一次澄清。爲什麼下面的函數效率低下:var rv = {}; (i值){ var value = values [i]; (k值){ rv [k] =(rv [k] || 0)+值[k]; } } return rv;我從以下鏈接中獲取此信息 - http://blog.mudynamics.com/wp-content/uploads/2009/04/icouch.html - 用戶嘗試的唯一相機#1 – Manoj 2012-03-29 21:43:19

-1

還有的rereduce參數here的解釋。

Quote:釋義。更多信息在鏈接。

這裏是一個減少函數的例子:

function (key, values, rereduce) { 
    return sum(values); 
} 

Reduce函數必須處理兩種情況,當rereduce是真實的,當它是假的。

+0

這不是一個好的答案,因爲它不能解釋爲什麼該示例允許rereduce爲真。這是誤導,因爲它沒有說明在每種情況下輸入鍵和值是什麼 – 2017-10-26 07:03:00

+0

感謝您的解釋@ZachSmith – aaaidan 2017-10-27 14:25:44

相關問題