首頁>Club>
2
回覆列表
  • 1 # 小熊社長

    在MongoDB中,有兩種方式計算聚合:Pipeline 和 MapReduce。Pipeline查詢速度快於MapReduce,但是MapReduce的強大之處在於能夠在多臺Server上並行執行復雜的聚合邏輯。MongoDB不允許Pipeline的單個聚合操作佔用過多的系統記憶體,如果一個聚合操作消耗20%以上的記憶體,那麼MongoDB直接停止操作,並向客戶端輸出錯誤訊息。

    1、使用 Pipeline 方式計算聚合;

    Pipeline 方式使用db.collection.aggregate()函式進行聚合運算,運算速度較快,操作簡單,但是,Pipeline方式有兩個限制:單個聚合操作消耗的記憶體不能超過20%,聚合操作返回的結果集必須限制在16MB以內。

    2、使用MapReduce 方式計算聚合;

    MapReduce 能夠計算非常複雜的聚合邏輯,非常靈活,但是,MapReduce非常慢,不應該用於實時的資料分析中。MapReduce能夠在多臺Server上並行執行,每臺Server只負責完成一部分wordload,最後將wordload傳送到Master Server上合併,計算出最終的結果集,返回客戶端。

  • 中秋節和大豐收的關聯?
  • 一個單詞怎麼看音標?