2013-05-27 48 views
1

我只是想知道根據用戶的日誌詳細加載不同的數據庫是一個好主意。這是爲每個用戶分配一個數據庫。加載不同的數據庫取決於用戶的登錄?

這只是一個想法,我正在開發一個應用程序(PHP)想多用戶使用的應用程序,但沒有一次又一次地複製源代碼,而只是加載不同的數據庫。

該應用程序實際上是另一個應用程序的容器。因此,用戶在app-A下注冊,然後有權在app-B中創建,編輯和更新用戶。

我在這裏談論應用-A

我最後的問題是:

可以嗎?什麼是con和pro?感謝您的任何建議或幫助。

+2

聽起來像一個壞主意! –

+0

爲什麼你想要給每個用戶自己的數據庫? – Blender

+0

你是否想過呢。 –

回答

2

這是很難猜測你不知道你的情況下該怎麼做,但一般多個用戶可以共享一個數據庫。您只需確保在數據行中有一些「user_id」字段,以便存儲來自不同用戶的信息。

爲什麼你認爲你需要幾個數據庫?

更多鈔票的一個想法,建議更換隻是一個數據庫:如果您計劃有許多用戶連接和斷開連接,其每個用戶不同的數據庫會非常慢,因爲數據庫連接是緩慢的創造。這就是爲什麼創建「連接池」的原因,並且如果每個用戶都有一個數據庫,則您將很難鏈接連接池。

如果我沒有理解好你的更新,你最好給用戶分配角色和檢查這些用戶有權限才能訪問數據。

+0

因爲我構建的應用程序作爲另一個應用程序的容器,所以取決於用戶詳細登錄的內容。單個數據庫將無法工作,否則我需要真正複製源代碼和數據庫來爲另一個用戶服務。 – Bruce

+0

那麼爲這些個人用戶創建表的子集呢?您可以爲用戶列出一張您正在使用的應用程序表的列表。然後所有用戶都在同一個數據庫中。你的代碼將不得不處理這些表的創建/管理,但你關注於這個(這有點「有趣」),而不是在最初的用戶管理中(這是標準的)。 – Moreno

+0

感謝莫雷諾,隨着App-B的使用量的增加,唯一值得關注的核心數據庫將在不久的將來變得巨大。 :) – Bruce

1

我可以直接思考的一個問題是您需要爲每個用戶創建一個數據庫。 如果您擁有32000多個用戶,則可能會達到數據庫限制的最大數量。

看到:Does mysql have any limitation on number of databases

+1

不是說它是一個好主意,但是這個限制是微不足道的,以避免 – 2013-05-27 00:15:44

+0

真實。然後再次在黑客之上堆砌黑客。這一切都是從一個黑客開始的:)......而且有時候他們會堆積幾年。 –

+2

這將是宇宙中的大部分代碼 – 2013-05-27 00:18:45

1

這是確定在一定意義上做到這一點在技術上是可行的,但高度inpractical。擁有多個數據庫大大增加了存儲需求,因爲SQL存儲具有高冗餘度,數據庫的切換可以增加訪問時間,而且更重要的是它會讓您很頭痛地跟蹤數十個數據庫。限制用戶訪問數據庫中的數據的方法很多,我建議您使用其中的任何一種方法,因爲SQL通常可以進行優化,所以您不必擔心數據太多或訪問時間過長,因此除非您正在爲成千上萬的用戶開發一個多TB的webportal,你可以將所有內容都放在一個數據庫中。

相關問題