我在NodeJS中創建了一個REST API,它連接到MongoDB並執行MapReduce並將結果存儲在不同的集合中。MongoDB + NodeJS:MapReduce或手動計算
代碼非常簡單。它需要一個用戶ID,以某種方式使用某種算法獲取與該用戶相關的所有其他用戶,然後爲每個用戶計算一個相似度百分比。假設測試數據庫中有5萬個用戶,這個MapReduce需要大約200-800ms。這對我來說很理想。如果這是出名的,並有這樣的數百個併發請求,我敢肯定,情況不會再這樣了。我知道MongoDB可能需要根據需要分割。
另一種情況是隻做普通的find(),遍歷遊標並執行相同的邏輯。它需要與MapReduce相同的時間。不過,我只是想過這一點,試圖在客戶端(NodeJS)而不是像MapReduce那樣在服務器端進行繁重的計算。這個想法是否有優點?我認爲這樣,我可以在負載平衡器後面水平擴展API。