2012-05-21 46 views
1

我想知道社區最適合爲我們爲我們的團隊設置沙箱環境的問題。設置一個重複的MongoDB測試環境

當前,我們分別爲我們的測試和部署環境使用兩個獨立的MongoDB實例,都是3個成員副本集。內部非常瞭解,測試環境中的所有數據在很大程度上是一成不變的,並且僅由開發人員在單元測試應用程序的過程中創建。

我想給開發團隊提供測試真實實時數據的新選項,但是要在單獨的安全沙箱實例中進行測試。起初,我最初認爲我可以使用copyDatabase命令將數據每晚導入新數據庫,並將各個開發人員應用程序服務器連接到此數據庫。問題是系統中有大量的GridFS數據,像這樣複製會浪費大量的磁盤I/O,而且我們在較小的雲實例中運行。

我很謹慎走這條路線,特別是如果有更合適的選擇。

是否有可能設置僅作爲從服務器使用的部署副本集的第四個成員,將所有查詢設置爲slaveOkay = True並針對該單個節點運行測試?這會傳播給其他成員嗎?如何處理插入?

我的建議可能是不切實際的,特別是如果轉移必須跨越網絡,也會浪費網絡傳輸。有沒有人需要解決類似的問題?謝謝!

回答

1

奴隸只用於閱讀。所有的寫作都必須去掌握。這排除了你的「第四奴隸」選項。

至於測試目的,你真的需要數據庫的精確副本,所有的gridfs數據?我試圖只複製「重」數據的相關部分。這排除了db.copyDatabase() :)做一個mongodump/mongorestore來代替。

此外,我想指出測試數據庫和臨時數據庫應該是不同的數據庫。測試數據庫用於單元測試(模擬/生成的數據)。分段數據庫使用生產數據填充,用於集成/驗收測試。

+0

感謝您的回覆。目前我們正在使用unittest模塊生成測試數據庫,所以也許是指一個我試圖設置爲「測試」的數據庫是錯誤的。我的意思是你提到的登臺服務器。 – DeaconDesperado