我正在构建salesforce.com类型的CRM - 什么是正确的数据库架构?

时间:2011-12-03 01:55:13

标签: crm

我为我的公司开发了一个CRM。接下来,我想采用该系统,并让其他人可以使用托管格式。非常像salesforce.com。问题是我将使用什么类型的数据库结构。我看到两个选择:

选项1.每次公司注册时,我都会为他们克隆主数据库。

这样做的缺点是我最终可能拥有数千个数据库。这是每天晚上备份的很多数据库。我的CRM使用cron作业进行维护,这些作业必须在所有数据库上运行。

每次使用新功能升级系统,并且需要向数据库添加新列时,我都必须将该列添加到数千个数据库中。

选项2.仅使用一个数据库。

在每张表的开头添加“CompanyID”。在每个SQL语句中添加“和 companyid = {companyid}”。

此方法的优点是只有一个数据库的简单性。每晚只需备份一个数据库。只需一个数据库即可在需要时进行更新。

缺点是,如果我让1000家公司注册,并且每个公司都希望将数据存储在100,000个潜在客户,排行榜中的100,000,000行,这让我感到担忧。

有没有人知道像salesforce.com这样的在线托管CRM如何做到这一点?

由于

2 个答案:

答案 0 :(得分:0)

您不会将表结构样式克隆到每个新数据库ID。在主基索引客户端克隆中归档的所有表都经过哈希验证,以访问通过主系统前端的主机运行的特定表。然后将请求作为主要角色。内部访问被批量分组以读取/写入从属系统。显然设置raid配置来复制实时和预定。平衡加载请求以加速系统资源。这样你就可以将安全性与ui和连接分离到保留模式。似乎简化的结构和减少策略请求减少了查询处理中的请求rss。或者只是一个中间人从里到外接近。

答案 1 :(得分:-3)

1)如果你想扩展,以安全,不假思索的方式(例如每个分组一个数据库)将数据拆分成更小的组几乎总是最好的。在这种情况下,除非出于某种原因要在公司之间进行查询,否则最好将它们保存在单独的数据库中。

2)如果要手动更新所有数据库,如果要扩展,则表明您做错了。你想要自动化这个过程。

3)最终,salesforce.com将此作为其数据库基础架构的基础: http://blog.database.com/blog/2011/08/30/database-com-is-open-for-business/