2011-04-14 40 views
2

我期待實現一個具有3個主要集合(People,Surveys,Responses)和一些次要集合(查找等)的MongoDB系統。但是,該系統將是多租戶,因此我需要爲每個租戶提供一套集合。我的問題是我應該爲每個租戶分開數據庫,還是應該有一個數據庫。使用單個數據庫,我應該如何命名我的集合:tenantname_people,tenantname_surveys等,還是有更好的方法來組織/命名我的集合?我喜歡單數據庫的方法,因爲那樣我就可以擁有一個租戶集合,每個租戶和他們的用戶等的詳細信息,這將有助於支持。我會有很多索引,並且我只關注名稱空間上的24k限制。 24K似乎很高,但這些東西可能困擾着你。如何實現multitenant MongoDB

任何有用的意見將不勝感激。謝謝。

+0

可能的重複[對MongoDB中的多租戶數據庫推薦的方法是什麼?](http://stackoverflow.com/questions/2748825/what-is-the-recommended-approach-towards-multi- tenant- mongodb中的數據庫) – Thilo 2011-11-04 04:53:04

回答

0

絕對是一個單獨的數據庫是適當的方式,因此您可以輕鬆地應用複製並使租戶的冗餘版本。當你想擴展服務時,單個數據庫會咬你

你需要做的是擁有一個租戶ID和一個用戶數據庫這是一個管理數據庫,你可以在那裏獲得用戶和租戶的信息。

+4

不一定 - 每個數據庫都獲得預先分配的文件空間,並且數據庫將快速增長(請參閱http://www.mongodb.org/display/DOCS/Excessive+Disk+Space)。將服務器級硬件與複製一起使用可以快速增加成本。就我個人而言,我認爲最好去單個數據庫,並留意名稱空間限制(serverdensity.com可以爲你做這件事)。 – tonyhb 2011-07-30 18:08:22

+1

考慮使用集合(http://www.mongodb.org/display/DOCS/Collections)而不是完全獨立的數據庫 – 2012-10-01 11:46:15

3

我建議爲每個租戶分開數據庫。這也可以幫助你進行分片。如果你想使用--nssize參數,你可以增加命名空間的限制。

+0

'--nssize'文檔在這裏(http://www.mongodb.org/display/DOCS/使用+ A +大+數字+收藏的+)。需要注意的是,24k限制是_per db_。如果每個租戶都有單獨的數據庫,那麼您將避開此要求。 – 2011-04-14 19:07:57