2012-09-06 98 views
1

我們已經有一個生產應用程序,運行Mongo並在不同的盒子上設置了一個副本。MongoDB BI架構

我想開始在數據上做一些BI,可能使用Pentaho

我的問題是:我應該如何設置我的架構,以便我不直接在生產環境中執行BI?

我應該創建一個單獨的BI實例並對BI實例執行mongoexport嗎?還是應該遵循一些其他最佳實踐?

回答

3

根據您的數據集,BI需求和MongoDB服務器版本,可以考慮幾個選項。如果您只需要讀取數據報告,則有更多的選項比如果您還想要寫入數據(例如用於地圖/縮減操作)。如下所述,MongoDB 2.2還引入了一些非常有用的功能和改進。

通常,使用replica set配置對於管理目的非常有用,因爲這可以在不中斷主MongoDB服務器的情況下使數據集的完整副本可用。對於更大的數據集和水平寫入擴展,MongoDB的sharding功能也可以與以下任何建議結合使用。

在走下分離BI數據的路徑之前,應該先確定在臨時環境中測試的實際影響。

以下方法可大致孤立的順序從生產環境:

  1. 與副本設置,您可以使用read preferences直接查詢到相應的服務器。在2.2之前的MongoDB版本中,一般閱讀偏好僅限於從主數據讀取或允許從非隱藏次級數據讀取「slaveOK」(相當於「secondaryPreferred」)。在MongoDB 2.2中,有一些額外的讀取首選項,包括「次要」(如果可用,則從次要讀取,否則錯誤); 「主要首選」(如果可用則從主要讀取,否則爲次要);和「最近」(根據網絡延遲從最近的主節點或次節點讀取)。 MongoDB 2.2中的讀取首選項可以與tag sets結合使用,以提供對定向查詢到副本集或分片羣集中的服務器的更細粒度的控制。

  2. 對於MongoDB 1.8及更高版本,您可以使用hidden secondary node的副本集。隱藏節點將不會被通告給連接到副本集的客戶端,但可以直接連接到報告生成。注意:隱藏節點將是隻讀輔助節點,因此這限制了一些查詢的使用。例如,map/reduce需要寫入權限才能保存到輸出集合中,但您可以使用內聯映射/縮減,具體取決於BI需求。

  3. MongoDB 2.2有一個數據庫級的寫入鎖(與先前版本有一個全局寫入鎖的改進)。如果您需要編寫BI數據,則可以將其保存到單獨的數據庫中以最大限度地減少鎖爭用。您仍然需要考慮總體資源效應。例如,爲了BI目的而處理大量較舊的文檔可能會與生產應用程序正在查詢的最新文檔的緩存競爭。

  4. 如果要將BI數據與生產環境完全分開,可以使用MongoDB backup strategies之一創建單獨的實例。如果啓用了複製,則可以在副本集中從輔助節點創建備份。根據數據集的大小,執行數據快照副本(其中包括已構建的索引)可能會更快,而不是完整的週期。

0

使用副本集並在輔助節點上運行分析(只要涉及)。