2014-01-09 56 views

回答

1

截至MongoDB的2.4有幾個原因,以禁止訪問db對象從地圖內/縮小功能,包括:

  • 死鎖:有數據庫和/或JavaScript鎖之間潛在的死鎖情況被稱爲來自同一個服務器端的功能。

  • 性能:Map/Reduce模式多次調用reduce();每次迭代都是不同的JavaScript上下文,並且必須打開數據庫的新連接併爲查詢結果分配額外的內存。長時間運行的JavaScript操作將阻止其他操作。

  • 安全性:跨數據庫查詢需要適當的身份驗證檢查。

對於Map/Reduce作業讀取或寫入分片集羣,上述問題可能會變得更加複雜。 MongoDB Map/Reduce實現目前只設計用於處理來自單個輸入集合的數據,並且在Map/Reduce函數中的任何歷史濫用對象都應被視爲錯誤而不是功能。

如果要將數據與Map/Reduce合併,可以使用Incremental Map/Reduce。根據您嘗試實現的結果,還有其他方法可能更直接,例如調整模式或通過多個查詢在應用程序代碼中進行連接。

相關問題