2009-09-18 56 views
1

如果我正在构建CRM Web应用程序作为会员服务销售,设计和部署数据库的最佳方法是什么?作为服务的软件 - 数据库

我是否有1个数据库,里面的每个表中的记录100S或为不同的客户部署多个数据库?

是不是真的用一个单一的数据库,因为我相信Flickr等网站使用它们的问题吗?

+0

好奇,你会提供什么salesforce.com不具备? – JeffO 2009-09-18 20:44:54

+0

只是一个假设场景 – Theo 2009-09-18 21:12:27

回答

6

多个客户被称为“多租户”。例如,参见Microsoft的这篇文章“Multi-Tenant Data Architecture”。

+0

@Theo:为什么不设计你的系统在两个设置中工作:1)不同的数据库和2)相同的数据库,但不同的模式。基本上,您的客户端应用程序以某种通用方式为客户端获取数据库连接,并且只与数据库一起工作。在这种情况下,您可以配置您的部署,并根据需要从一个更改为另一个。 – van 2009-09-18 20:49:43

+0

@van:我刚刚阅读了关于多租户数据架构的文章,内容非常丰富。您的评论是有道理的,只是不同的模式方法显然是相当多的工作来恢复每个模式的备份。尽管架构选项的主要优点是MS SQL能够处理更多部署。 TOUGH在这里做出的选择 – Theo 2009-09-18 21:20:39

+0

@chrisW:阅读完这篇文章后,这一切都归结为构建SaaS应用程序的场景以及安全隐患。但就目前的情况而言,密集隔离选项似乎是更合理的选择,允许每个客户端具有独立的可伸缩性,而不需要架构选项带来的灰色区域。 – Theo 2009-09-18 21:24:58

0

长期来说,维护一个数据库最容易,其中包含多个客户端的数据。考虑部署,备份等。但是,这并不妨碍您拥有该数据库的多个实例,每个实例都包含完整客户端数据集的子集。建议您在确定产品的有用性/可取性后,增加数据库的数量。拥有复杂的基础设施是没有必要的,如果你有没有交通....

所以,我只是把客户端ID的相关表格中,当客户端4进来,新部署的程度是一个插入微笑声明。

3

像一个CRM系统的情况下,你可能需要有你的数据库中的每个客户的不同实例。

我这样说是因为,如果你想大客户,大多数公司已经制定关于客户资料的安全策略。如果您将客户数据存储在与另一客户相同的数据库中,那么您将面临将一家公司机密数据暴露给另一家公司(竞争对手等)的风险。

网站Flickr等不必尽可能多担心这一点,因为我们大多数人出来就Interwebs没有对我们的个人数据,严格的政策。

+0

+1出于安全考虑。在CRM世界中,人们曾经认为托管解决方案由于安全问题甚至不可能实现。尽管salesforce.com证明它是错误的,但他们尽力证明他们的客户数据是安全的。您必须为多个数据库备份等提供更多的自动化功能。但迁移/扩展客户数据并逐个更新为新的数据库结构也更容易。 – van 2009-09-18 20:39:30

+0

的确的确如此。我们甚至有客户不让我们将数据存储在不同的数据库中的同一台服务器上,甚至有人甚至让服务器位于不同的大楼中。三年前,我们也发生了一起非常尴尬的事件,当时一位开发人员忘记将客户ID放入查询中,并通过电子邮件将数据发送给同一数据库中的其他几家公司的销售代表。相信我现在所有的大客户都在单独的系统上。 – HLGEM 2009-09-18 20:42:55

+0

......另一方面,许多小型客户端同时使用您的系统,您可能会遇到连接池问题。 – van 2009-09-18 20:46:48