2011-11-09 24 views
1

我在Node.js中使用MongoDB。在Mongo中使用MapReduce有沒有速度優勢,而不是獲得完整的結果集,並且自己做一個地圖並減少JS?MapReduce比做地圖還要快嗎?

+1

如果你想運行M/R速度更快,http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-jsModeflag會有所幫助。這是在MongoDB v2.0之後採用的。 – lqez

回答

4

檢索整個結果集並執行m/r應用程序通常沒有性能優勢。事實上,在幾乎所有情況下,在節點服務器上將整個結果集填充到內存中是一個非常糟糕的主意。

在MongoDB上執行map/reduce將確保在檢索結果集並回寫m/r的結果時,數據庫與應用程序服務器之間的帶寬不會浪費。 MongoDB的map/reduce也可以輕鬆擴展。

TL; DR:始終做到在MongoDB中

1

如果您的數據庫與您的服務器位於不同的主機上,那麼數據傳輸將會更小,這會浪費更少的帶寬和時間。

+2

MongoDB m/r不是本地實現的,而是在MongoDB的JS上下文中運行。 –

+0

@RemonvanVliet我站好了。發佈編輯。 –

0

數據的實際傳輸可能是昂貴和耗時的。想象一下,如果每次你想做庫存盤點,你都會將所有物品運送到另一個倉庫。

此外,你必須考慮事物的尺度。

  • 使用mongodb,您通常需要至少一個數據副本,併爲基於讀取的任務添加性能。
  • 有了節點,你可能不需要添加第二臺服務器,因爲它的擴展性很好。向其添加密集任務可能會導致您需要擴展面向外的節點服務器數量。