2011-11-21 69 views
0

我們有一個使用MongoDB作爲數據存儲的生產系統,並且寫了很多它在其中完成的操作。你應該在哪裏運行關於MongoDB的密集報告

我想運行一些報告,看看發生了什麼,如果這是一個MSSQL數據庫我會有一個複製的服務器設置,所以我沒有造成任何可能影響實時系統的鎖。

在MongoDB中這是必需的嗎?

我正在考慮添加一個可以用來運行查詢的隱藏服務器,但我沒有詳細調查過。

回答

4

很明顯,您爲報表運行的任何查詢都會將負載添加到服務器。根據報告運行的查詢類型的不同,這會影響到這種影響的程度。絕對有可能設立一個專門的輔助專門用於報告的唯一目的。然後,您可以直接連接到該輔助服務器並執行slaveOk查詢來運行您的報告。此頁面提供有關如何設置隱藏副本集成員的信息:http://www.mongodb.org/display/DOCS/Replica+Set+Configuration#ReplicaSetConfiguration-Memberoptions

+0

對於隱藏的成員。你知道它爲什麼說「使用這個選項很少見」。報告非常普遍,如果這是一種建議的方式,那爲什麼很少? – Jiminy

+0

大多數人只是把這種東西從普通的中學中挑出來,使得中學隱藏更爲罕見,儘管仍有相當數量的人這樣做。這實際上取決於您報告運行的操作的費用是多少,以及您的輔助服務器負載多少。如果您沒有進行二次讀取,或者如果您確實需要在輔助閱讀器上加載,或者如果用於報告的查詢是輕量級的,那麼您不需要隱藏的輔助閱讀報告,並且可以重複使用標準輔助閱讀器。 – stbrody