2013-04-24 118 views
1

我是php/mysql新手,我正在編寫一個簡單的CMS。但在這種情況下,我將託管多個公司(每個公司與他們的多個用戶),支付使用該系統的費用。單個數據庫或多個數據庫(對於單個應用程序中的多個用戶)

所以......我的問題是關於如何組織數據庫...談論安全,管理和性能,我只是想知道這些情況至極的OU人的意見是最好的:

  1. 主機上的單個數據庫中的所有企業,都獲得公司ID來匹配用戶。

  2. 每家公司有一個分開的數據庫保存用戶在那裏(和不需要的公司ID了)。

我會在第一種情況下開始開發......但比我想如果我有一些黑客攻擊/ sql注入,每個客戶端都會受到傷害。分離數據庫後,損壞將只能得到一個客戶端。所以也許第二種情況在安全性方面會更好。但對於管理和業績卻說不完。

因此,根據您的經驗,任何幫助或提示將是偉大的!

在此先感謝,並對我可憐的英語感到抱歉。

+1

我會傾向於單獨的數據庫。 1)如果需要,您可以選擇向公司提供直接訪問數據庫的權利。 2)爲每個客戶定製變得更容易,因爲您不再使用(儘可能多)複合主鍵。 3)每家公司的保留數據位於不同的地方,公司看到他人數據的風險要低得多。 – GarethL 2013-04-24 14:24:09

回答

2

我會去單獨的數據庫。但不僅僅是黑客攻擊。

可擴展性: 假設您有一個服務器可以處理10個網站,但其中有1個網站的請求,內容等發展迅速。您的服務器很難全部承載。

隨着單獨的數據庫,它是分散在多個服務器上的一塊蛋糕。使用單一的一個,你將不得不升級你當前的數據庫或將其集羣,但有時候託管公司不可能或者非常昂貴。

性能: 你,他們都在1 DB和多個用戶的數據在1臺,鎖可能會減緩其它用戶。

大表,平均大指數,大查找等。因此,分裂到不同的數據庫將實際速度提高。

您將不得不處理每個數據庫的額外內存和CPU開銷,但它們通常不會產生驚人的巨大影響。

是的,管理多個數據庫是更多的工作,但具有適當的更新腳本並密切關注數據庫模式的版本將大大減少您的管理擔憂。

更新:也看到這篇文章。 http://msdn.microsoft.com/en-us/library/aa479086.aspx

+0

嘿,非常感謝你的提示...所以我會按照你的建議繼續使用多個數據庫!這篇文章是我最喜歡的。今天晚上去讀它! – RBR 2013-04-24 15:11:23

0

獨立的DB有許多優點,包括性能,安全性,可擴展性,移動性等方面有更多的風險回報少嘗試的一切打包成1個數據庫尤其是當你談論的是獨立的公司數據。

0

你還沒有提供任何細節,但一般來說,我會選擇單獨的數據庫。

使用爲每個客戶端的獨立數據庫允許更好的控制程度,因爲這將是可以管理/備份/垃圾/等。他們單獨,而不影響其他人。由於數據更容易區分,而且一個數據庫無法打破其他數據庫,所以它也不需要修飾。

且不說它會使開發過程變得更容易 - 注意,單獨的數據庫意味着你不必總是驗證行的「所有者」。

0

如果您打算有這個數據庫在雲環境中託管,如在資源(相對)便宜,客戶端都運行相同的代碼庫Azure數據庫,該數據庫架構是相同的(明顯),並有是在公司之間共享一些數據的可能性,那麼多租戶數據庫可能是一條可行的路。對於其他任何事情,您可能會爲多租戶數據庫創建大量額外的工作。

請記住,如果轉到單獨的數據庫路由,稍後嘗試遷移到多租戶雲解決方案是一項巨大的任務。我只提到這一點,因爲過去幾年我在IT水冷卻器上聽到的所有內容都是「Cloud!Cloud!Cloud!」。

+0

這個計劃真的要在雲端託管......但是起初我會和resseler託管計劃一起去,直到我獲得支付雲計劃的最低收入。 – RBR 2013-04-24 15:17:05

+0

您仍然可以在雲中託管多個數據庫,而不是轉到多租戶數據庫。重讀你的問題之後,我主要關心的是你說你是PHP/mysql的新手,作爲初學者,我不建議增加多租戶數據庫的複雜性;沒有什麼是「簡單」的。 – Sav 2013-04-24 15:26:25