2011-11-29 137 views

回答

2

提供指導,人們必須知道更多關於什麼你想完全實現。

但是,我會排除選項2(多個集合),因爲我沒有看到這種方法的任何優點:您必須在運行時確定集合名稱,這對於更復雜編寫你的查詢,你可以擁有的收藏數量有一個硬性的限制(大約1.5M收藏與2GB namespace file

選項1可以幫助隔離客戶端,並可能提高安全性,但仍然存在編程錯誤的風險在選擇數據庫。然而,隔離代碼很簡單。

這兩個選項都有不利於所有集合查詢的缺點。但是,您總是希望能夠訪問基本上在所有客戶端共享的一些集合(例如日誌,統計等),因此您有額外的負擔來分離這些集合。

這就是我爲什麼要通常去選擇1

1

我建議從一個DB和一個收集開始。它通常更簡單地管理一個數據庫。將來,如果您需要創建單獨的數據庫(以加速某些客戶端),則可以將該客戶端的數據dump並將其放入單獨的數據庫服務器(或者分開收集)。當你設計你的應用程序的體系結構時,請記住這個功能。所以,我的意見是選項1。從另一個角度來看,您可以通過分片和複製來擴展一個集合。

系統必須是可擴展的,並且必須是易於部署

您的數據庫將是可擴展的,只是因爲你正在使用MongoDB的,這是設計規模。您可以輕鬆地部署數據庫,因爲它是無模式的。通常,您可能需要將一些數據從一臺服務器簡單複製到另一臺服務器。有很多方法可以做到這一點:copy collection,數據import/export,copy database

相關問題