Mongodb

Mongodb:處理離線查詢而不影響正常查詢

  • July 16, 2019

我有一個包含三個成員的 MongoDB 副本集:主要、輔助和隱藏輔助,僅用於備份。理想情況下,我想添加額外的實例,專門用於執行慢速批處理操作。這個想法是讓這個實例運​​行可能需要很長時間才能完成的 map-reduce 樣式操作,而不會減慢需要快速完成的正常查詢。

我不知道可以實現此目的的 Mongo 配置。我很想听聽如何處理繁重的離線請求而不影響短的、近乎實時的請求。

這不是配置問題。您的正常查詢將發送到目前主節點。因此,您需要做的就是確保您的批處理操作(我假設聚合和/或 mapReduce 作業)針對輔助伺服器執行。您可以通過將readPreference設置為secondary或來做到這一點secondaryPreferred

但是,這有一些嚴重的缺點:

  1. mapReduce 作業不能總是內聯顯示它們的結果並且它們不能被保存。緩解此問題的一種方法是從應用程序端保存結果。
  2. 無論設置的讀取首選項如何,都將在主節點上執行具有$out階段的聚合
  3. 根據您的寫入關注設置,您的輔助節點可能會保存不是最新的數據。在某些情況下,這可能是一個問題。

如果使用讀取首選項secondarysecondaryPreferred不可能,將長時間執行的操作(如我們的 mapReduce 作業的聚合)的負載最小化的唯一方法是分片,將負載分散到多台機器上。請注意,為了實現這樣的負載分佈,需要仔細規劃和數據建模。

引用自:https://serverfault.com/questions/690933