2011-05-09 127 views
0

我正在創建一個具有SQL Server後端的IPad應用程序。我的問題是,在我註冊時爲每個客戶創建一個新的數據庫會更好嗎,還是應該創建一個SQL腳本,它在註冊時爲客戶生成新的表格。多個客戶端的SQL數據庫共享

例如方案1每個用戶一個數據庫。對於100個用戶,sql服務器將有100個獨立的數據庫。即User1_DB,User2_DB ......

場景2每個用戶的新表格集合。對於100個用戶,sql服務器將在同一個數據庫中有100個獨立的表。例如MyIPad數據庫 - Table1_User1,Table2_User1,Table1_User2,Table2_User2

在這兩種情況下,我們都會有自動腳本,當用戶註冊時會生成表/數據庫。

所以我的問題是哪種情況更有效?或者兩種情況都是錯誤的,因此我應該如何處理這個問題?

在此先感謝

回答

0

我要說的是,除非你有一個明確的需要有這麼多的分離,我建議有一個表的集合,並使用與客戶ID的客戶表來區分客戶數據。您仍然可以通過存儲過程限制對數據庫的訪問,以便任何客戶都無法看到其他客戶的數據,但是您不必處理多個數據庫或數千個表的所有開銷。

但是,如果您必須分離,請使用不同的數據庫。數據庫分離使您可以更好地控制數據安全性。如果您不得不爲每個客戶使用不同的對象,那麼您需要完全保護不同的數據庫。這也將給你移動一個客戶到不同的服務器所需的便攜性等。

還有一個關於SO的類似問題,他們遵循我的基本建議。基本上,Wordpress開始時只有一個數據庫,但隨着他們擴大規模,他們最終將爲每個客戶提供一個數據庫,以便他們也可以擴展。這裏是鏈接:

PHP Web Application: mysql database design best practices question

+0

事實上,數據庫將有超過60個表管理行級分離將成爲一場噩夢。我認爲這將是每個用戶的分隔數據庫。一臺SQL Server上的100個獨立數據庫與一臺SQL Server上的一個數據庫中的100個用戶數據之間是否存在性能差異? – HackAndSlasher 2011-05-09 01:03:18

+0

可伸縮性和可移植性也是一個巨大的因素,它讓我更傾向於每個用戶的單獨數據庫。 – HackAndSlasher 2011-05-09 01:04:11

+0

@HackAndSlasher - 在這種情況下,您看起來最好每個客戶都有獨立的數據庫。要實現一個小實施是一種艱難的方式,但如果你變得更大,它將更容易處理。 – IAmTimCorey 2011-05-09 01:10:17

0

我不會走這一切的路線,而是在行級去做,每個表的每一行被捆綁到特定的用戶(或公司/用戶,如果該應用程序可以爲具有許多用戶的特定公司註冊)。創建單獨的表/數據庫對於任何大量的用戶來說都是不可擴展的。