2015-07-02 36 views
1

我有一個網站(工具),我想用於多個客戶端。當然,每個客戶都有獨立的登錄,設置和他的工具內容。所以我的問題是:什麼是組織這個最聰明,最安全,最快速的方式。我希望這對客戶和我自己來說都很簡單。一個網站:多個客戶:如何組織

選項A:每個客戶端都得到一個子域,從而他自己的網站+數據庫。缺點:當我對代碼進行更新時,我必須編輯每個子域。改變數據庫模型也是如此。優點: ?

選項B:一個網站使用全局數據庫登錄和每個用戶的數據庫。一旦用戶登錄,網站將在全局數據庫中檢查他需要的客戶端數據庫並加載它。優點:一個站點(=一個更新),單獨的數據庫(=更安全?)。缺點:改變數據庫模型意味着我必須更新每個數據庫。

選項C:使用一個數據庫的一個網站。來自所有客戶端的所有數據都存儲在同一個數據庫中。優點:一個站點(=一個更新),一個數據庫(=一個更新)。缺點=數據庫可能會變大?如果數據庫被盜,所有數據都在其中,並且需要良好的編程來確保客戶端A只能看到他的東西,而不是來自用戶B,C等的信息。

選項D?

我在PHP中編程,數據庫是MySQL。

任何反饋意見。

傑夫

+0

一般來說,你會把所有東西存儲在一個數據庫中。但是,您似乎瞭解不同解決方案的權衡,因此您必須決定應用程序的要求。選擇最符合這些要求的解決方案。 –

+0

對於SO或任何SE網站,這不是一個合適的問題類型。 SE針對的是相對較窄的問題,可以有特定的答案,可以判斷是正確的/不正確的(您接受最正確的答案)。這太寬泛了,有許多可能的方法。對於您可以進行正在進行的設計討論的網站而非問題/答案網站更合適。 – Barmar

+0

共享數據庫的一個缺點是每個客戶的活動都會影響其他客戶的表現。根據業務的性質,一些客戶可能不太喜歡與其他客戶混合的數據。 – Uueerdo

回答

0

多個子域不需要多個代碼副本。

由於cookie範圍問題,使用子域通常不太安全。

我會認真考慮將mysql作爲你的數據庫,並使用postgres,因爲postgres是一個數據庫集羣,這意味着它在一臺服務器上有多個真實數據庫。 mysql只有一個數據庫(但多個模式,稱爲'數據庫')。這樣做的好處是數據庫不能彼此通信,但可以獨立地進行備份/恢復。