使用一个大型数据库或每个客户使用一个数据库

时间:2010-12-06 21:29:44

标签: database

目前,我正致力于建筑材料的在线网络应用。公司可以登录我们的网站,然后他们就可以使用网络应用程序。

从头开始,我们的想法是为每个客户创建一个数据库。但现在它变得越来越大(100+),所以我们现在有100个数据库需要管理。

我们必须跑大约。每年两次db dbintance的更新脚本。

我看到的优点是,当客户想要退出时,我们会删除他们的数据库而不是它已经完成。

当我想添加新客户时,我必须填写大约数据库。该特定客户的1.000.000独特记录,因为每个客户都有不同的价格/材料。

对于备份,我使用MySQL Dump脚本,每天为每个数据库创建一个* .sql文件。

你的意见是什么?你怎么看? 一个大型数据库或每个客户一个数据库?

我正在使用MySQL和ASP.NET / C#...

4 个答案:

答案 0 :(得分:3)

但现在它变得越来越大(100+),所以我们现在有100个数据库需要管理

我认为你的答案就在那里。

答案 1 :(得分:3)

我不想提出建议,因为变量太多了。

但是,我确实想要注意,我的雇主有1000个已部署的数据库 - 我们每个客户使用一个数据库进行复制(2个以上的数据库)。

所以,这个想法是可行的。我的工作与数据库管理无关,但我记得我们在自动化和在线工具方面做了很多工作。备份和数据库管理由团队处理。

最终,您可以使100多个部署工作,但您将要开始投资开发实用程序和工具,以帮助自动备份和/或管理数据库。

理想情况下,任何事情(数据库管理)都不应该手工完成。此外,连接字符串应该从给定的Web应用程序部署中抽象出来。

答案 2 :(得分:1)

必须同意@Hogan - 管理许多数据库的开销可能远非理想 - 特别是如果您将来需要进行架构更改等。

也就是说,如果您使用单个数据库,您是否可能需要将给定客户的数据分离到独立的数据库/站点?如果可能的话,进行这种分离需要多长时间?

从本质上讲,如果编写一组工具来处理上述情况可能需要花费较少的精力,那么我很想采用单一数据库方法。但是,您还需要考虑创建统一版本的数据库模式的可能时间尺度,这些数据模式处理每个客户的数据集等。

此外,现有100多个数据库的所有的模式是否完全相同?如果不是,如果您决定将现有数据迁移到单个数据库中,则可能会有一个痛苦的世界。

更新 - 顺便提一下,上述所有内容都有点概括,但如果不了解更多有关正在使用的数据量和流量等情况,很难具体说明。 (例如:如果您曾经为客户提供过高需求的站点,那么如果您使用的是每个客户的数据库,那么将它放在自己的数据库服务器上是微不足道的。)

答案 3 :(得分:0)

我同意@Hogan和@middaparke ...如果模式相同,你可以在一个实例中输入它。

不幸的是,从这里可以告诉你,你的模式是否会从重复使用这些百万行中的大部分中受益,如果标准化得很好,那么这肯定是有益的。

也无法判断应用程序的任何更改对此更改有多困难。

不幸的是,听起来你拥有一个拥有大量工作应用程序的庞大客户群,因此继续向这个方向前进的动力 - 通过自动化管理这么多数据库,你会进入吸收它并处理它的领域。 ......不是你从头开始做的方式 - 但也许最便宜,因为你就在你身边。