2013-07-12 33 views
0

我正在使用java在mongodb上創建報告。所以在這裏我需要使用map reduce來創建報告。我在製作3個副本。

對於報告查詢,我不想向主要mongo database發出請求。我想向只有輔助副本提出請求,因此如果我們使用map reduce,它將創建一個臨時集合。

從輔助mongo數據庫讀取數據

1)這裏有任何問題,如果我設置閱讀首選項作爲輔助 報告使用地圖縮小?
2)將創建臨時集合 輔助副本?
3)是否有任何其他方式使用副本 副本用於報告目的,因爲我不想在主數據庫上創建 流量?
4)我是否會得到正確的預期結果,因爲有大量數據 ?

回答

1

可能最簡單的方法是直接連接到輔助節點,而不是使用ReadPreference.SECONDARY_ONLY連接到副本集。在這種情況下,它肯定會在中學創建一個臨時的,你應該有正確的結果(當然!)。

我也建議你看一下Aggregation Framework,因爲它比Map Reduce作業快很多,使用和調試也更容易。雖然功能並不強大,但我還是必須找到一種情況,我無法使用聚合框架來滿足我的聚合和報表需求。

+0

感謝您的回覆Derick – user2575166

+0

@ user2575166如果您認爲這回答了您的問題,請接受答案! – Derick

+0

嗨Derick,請你給答覆下面的鏈接有幾個更多的疑慮張貼在這個鏈接上的所有查詢http://stackoverflow.com/questions/17614881/reading-data-from-only-secondary-mongodb-using-map-減少查詢提前致謝 – user2575166

0

我最近寫了一篇文章,回答上面的第3個問題:Running MongoDB Map-Reduce Operations On Secondaries 它還包含Java和Shell中的示例,以便您需要關於如何對其進行編碼的指導。

要回答最後一個問題,即「由於擁有大量數據,我會得到正確的預期結果嗎?」

是的,這是一個問題。 MongoDB documentation明確指出inline Map Reduce(在Secondaries上運行MR所需的)將結果集限制爲一個BSON文檔的大小,即當前爲16MB。