如何将客户端数据库合并到一个数据库中?

时间:2014-04-03 10:51:30

标签: sql-server database sql-server-2008 database-design multi-tenant

在我的公司,我们有一个使用我们内部构建工具的公司列表(例如Northwind)。

当我们进行更改时,我们会将这些部署到我们所有的客户位置。

目前的结构是:应用程序安装在客户端的位置,数据库与它们坐在一起。

但是,我们希望将所有这些信息合并到一个数据库中,客户端将通过Web服务连接任何数据请求。

例如....我们已将Northwind App和Db部署到X,Y和Z公司,并希望创建一个单一的数据库来维护所有这些公司的数据。

我们已经审查了一个选项,即为公司创建一个字段以将其与各个表关联,另一个选项是为每个公司创建一个模式,这样我们就可以为相关公司分配权限。是否有替代方案,以及我们如何做到这一点的利弊。

添加公司字段的一个方面是,我们必须满足所有客户端数据库中相同的索引,这使得整个应用程序的性能更加困难,因为对同一个数据库的多个请求。请帮帮忙?

注意:使用Sql Server 2008

1 个答案:

答案 0 :(得分:1)

研究"multi-tenant database architecture"。 (为了您的目的,将一个租户视为一个客户。)您将找到从“每个租户一个数据库”到“每个表中的每个租户”的频谱。

仔细阅读。这个领域的作家会让你感到困惑。期望像共享模式这样的技术术语对不同的作者来说意味着不同的东西。

请参阅this SO answer进行权衡。

对于您的第一步,除了简单地在内部移动这些客户端数据库之外,我不会考虑任何。这样做会给你和你的应用程序员带来足够的麻烦。您不需要在其上进行体系结构更改。

这也将为您提供研究和测试的时间。