Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 多客户端数据库设计:按模式分离是一个好的设计吗?_Sql Server_Sql Server 2008_Database Design_Multi Tenant - Fatal编程技术网

Sql server 多客户端数据库设计:按模式分离是一个好的设计吗?

Sql server 多客户端数据库设计:按模式分离是一个好的设计吗?,sql-server,sql-server-2008,database-design,multi-tenant,Sql Server,Sql Server 2008,Database Design,Multi Tenant,我正在SQLServer2008R2中设计一个多客户端数据库(想想SAS)。在本论坛的研究中,我发现从长远来看(当性能成为一个问题时),最好使用不同的数据库来分离数据 但我想知道,在短期内(以及对于快速启动),通过在同一数据库中创建不同的模式来隔离特定于客户端的数据是否是一个好主意?我的研究机构说没有。您所提出的方法在快速启动或短期内有什么好处? 最好从零开始养成好习惯:用您的模式和默认值更新脚本。当另一个客户需要新的数据库时,您就可以开始了。更不用说您的客户端代码只需友好地选择正确的连接,而无

我正在SQLServer2008R2中设计一个多客户端数据库(想想SAS)。在本论坛的研究中,我发现从长远来看(当性能成为一个问题时),最好使用不同的数据库来分离数据


但我想知道,在短期内(以及对于快速启动),通过在同一数据库中创建不同的模式来隔离特定于客户端的数据是否是一个好主意?

我的研究机构说没有。您所提出的方法在快速启动或短期内有什么好处?

最好从零开始养成好习惯:用您的模式和默认值更新脚本。当另一个客户需要新的数据库时,您就可以开始了。更不用说您的客户端代码只需友好地选择正确的连接,而无需考虑任何其他问题

这种应用程序的术语是“多租户”体系结构。所以有一个多租户标签。让它成为你的最爱之一

多租户体系结构的范围从“无共享”到“共享一切”。在范围的“无共享”一端,您为每个租户构建一个数据库。在“共享一切”端,租户共享每一张桌子;每行都有一个租户标识符,告诉您该行属于谁

在这两者之间,每个租户可以找到一个模式


更多关于成本、数据隔离和保护、维护和灾难恢复之间权衡的详细信息。

我有一个spring/hibernate web应用程序,因此使用一个连接字符串(指向一个数据库)对我来说更容易。此外,我可以在数据库中编写(非系统)存储过程,以便在从web应用程序创建新客户时按需创建新的模式,以及创建基本表等……我不是spring/hibernate方面的专家,因此请原谅我的无知,但如何编写应用程序?您需要始终传递要处理的模式吗?对我来说,这将是一场噩梦。我错了吗?是的,我每次都会传递模式信息。对我来说,这不是一场噩梦,因为应用程序相对简单。我将有3-4个连接的存储进程,它将根据我传递的模式名获取特定于客户的数据。