多个客户端的SQL数据库共享

时间:2011-05-09 00:50:15

标签: iphone sql sql-server ipad dynamic-data

我正在创建一个具有SQL Server后端的IPad应用程序。我的问题是,在我们注册时为每个客户创建一个新数据库是否更好,或者我应该创建一个SQL脚本,以便在客户注册时为其生成新表。

e.g。场景1每个用户一个数据库。对于100个用户,sql server将具有100个单独的db。即User1_DB,User2_DB ......

场景2每个用户的新表集。对于100个用户,sql server将在同一个数据库中拥有100个单独的表集。例如MyIPad数据库 - Table1_User1,Table2_User1,Table1_User2,Table2_User2

在这两种情况下,我们都会有自动脚本,可以在用户注册时生成表/数据库。

所以我的问题是什么情景更有效?或者两种情况都是错误的,因此我该如何处理这个问题呢?

提前致谢

2 个答案:

答案 0 :(得分:0)

我想说,除非你明确需要这么多分离,否则我建议使用一组表并使用带有客户ID的客户表来区分客户数据。您仍然可以通过存储过程限制对数据库的访问,这样客户就无法看到其他客户的数据,但您不必处理多个数据库或数千个表的所有开销。

但是,如果必须分离,请使用不同的数据库。数据库分离使您能够更好地控制数据安全性。如果必须为每个客户使用不同的对象,则需要单独数据库的完全安全性。这也将为您提供将一个客户移动到不同服务器等所需的便携性。

在SO上也有类似的问题,他们遵循我的基本建议。基本上,Wordpress从一个数据库开始,但随着他们扩大规模,他们最终每个客户使用一个数据库,这样他们也可以扩展。这是链接:

PHP Web Application: mysql database design best practices question

答案 1 :(得分:0)

我根本不会走这条路,而是在行级别进行,每个表的每一行都绑定到特定用户(或公司/用户,如果应用可以为特定公司注册与许多用户)。对于任何大量用户而言,创建单独的表/数据库根本无法扩展。