2010-05-08 27 views
13

報價http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-ParallelismMongoDB:使用MapReduce而沒有並行性有什麼意義?

截至目前,在 單一的mongod過程MapReduce作業是單 線程。這是由於當前JavaScript 引擎中的設計 限制。我們正在研究 替代方案來解決此問題,但現在如果要並行執行 您的MapReduce作業,您需要在代碼中使用分片或使用 聚合客戶端。

沒有並行性,與更簡單或更傳統的查詢和數據聚合方法相比,MapReduce有什麼好處?

爲了避免混淆:問題不是「什麼是比傳統的關係數據庫,面向文檔的數據庫的好處」

回答

11

使用的MapReduce在簡單或更傳統的查詢,主要的原因是,它只是可以做的事情(即聚合),簡單的查詢不能。

一旦你需要聚合,有兩個選擇使用MongoDB:MapReduce和group命令。組命令類似於SQL的「group by」,並且受限於它必須將其所有結果返回到單個數據庫響應中。這意味着只有當結果少於4MB時才能使用組。另一方面,MapReduce可以做任何「group by」can,但將結果輸出到新的集合中,因此結果可以根據需要儘可能大。

此外,並行來了,所以這是很好的有一些做法:)

+0

什麼版本會得到並行? – nilskp 2012-03-27 17:22:51

+0

關於用於mongodb mapReduce的JS引擎的任何更新?它現在是否提供了並行性? – 2016-09-14 14:00:46

4

M/R在MongoDB中已經平行,如果你正在運行一個分片集羣。無論如何,這是M/R的主要觀點 - 將計算放在與數據相同的節點上。

+3

我是否正確地認爲,利用多核計算機的當前方式是在同一臺計算機上運行多個MongoDB實例? – 2010-10-01 14:57:18

1

超快的map/reduce是在路線圖上

它不會在1.6版本(夏季發佈)

今年這麼晚了可能