2013-02-21 51 views
0

這是從另一個問題胸圍我認爲它應該由流星團隊回答,因爲我找不到直截了當的答案。流星-MongoDB - 單一數據庫或多個數據庫的SaaS產品

「..我們決定使用MongoDB來創建我們正在創建的SaaS產品,每個註冊公司都有自己的url(mycompany.domain.com)和他們自己的私人用戶,項目等等。 。因爲我們使用的是NoSQL解決方案,並且不必像管理MySQL那樣管理向每個數據庫推送模式更新,所以我想知道是否最好擁有一個包含所有數據的大型數據庫,每個客戶一個數據庫......」

那樣,我也有流星的形式給出了(有一個流星項目/服務器): 1)不同的URL爲每個公司 2)不同的數據庫(在同一monodb服務器)的每個公司和該特定公司用戶。

回答

5

如果你看看流星自己的主機,他們使用MongoHQ的mongodb服務器。您可以將多個meteor服務器與單個mongodb服務器和多個數據庫一起使用。

我認爲這取決於你的應用程序設計,Meteor可以使用任何一種設計。

1)您可以使用發佈函數爲每個客戶端提供一個巨大數據庫中的他/她自己的記錄,使用一種方法將子域http主機放入發佈函數中,以便僅發佈該數據集。

2)在一臺服務器上使用單獨的流星實例連接到他們自己的mongodb數據庫,並使用某種代理將它們服務到子域。你可以用任何你想要的數據推送每一個數據,甚至可能是單獨的應用程序集。

這將取決於你在建什麼。如果你只需要更新一組數據,以便每個人都可以更新1),所以如果你的用例需要這樣的話,這可能是一個更好的選擇。

使用獨立流星實例的好處主要是定製。如果你想讓每個客戶的能力差異很大,可以使用2),否則使用1)

如果你想要得到你想要的細節的要點,你看Meteor.com的託管我認爲每個部署都有自己的數據庫,主要原因:定製化,每個人的部署很可能會完全不同。

UPDATE:

截至2014年3月,有第三方atmosphere package meteor-dbproxy,可以讓你在你的後端使用多個MongoDB的服務器(以及獨立的OPLOG集成端點),從而使您分貝級沙盒多-tenancy。

0

從MongoDB的角度來看,你可以爲每個客戶端做一個數據庫。當前穩定的MongoDB版本2.2具有數據庫級鎖定功能,與之前版本的大型全局鎖相反。

這樣,如果您的客戶之一正在錘擊系統,他們不會影響其他客戶端的全局鎖定。

+0

你會如何配置meteor使用多個數據庫? – 2014-11-29 16:08:10