目前,我正致力于建筑材料的在线网络应用。公司可以登录我们的网站,然后他们就可以使用网络应用程序。
从头开始,我们的想法是为每个客户创建一个数据库。但现在它变得越来越大(100+),所以我们现在有100个数据库需要管理。
我们必须跑大约。每年两次db dbintance的更新脚本。
我看到的优点是,当客户想要退出时,我们会删除他们的数据库而不是它已经完成。
当我想添加新客户时,我必须填写大约数据库。该特定客户的1.000.000独特记录,因为每个客户都有不同的价格/材料。
对于备份,我使用MySQL Dump脚本,每天为每个数据库创建一个* .sql文件。
你的意见是什么?你怎么看? 一个大型数据库或每个客户一个数据库?
我正在使用MySQL和ASP.NET / C#...
答案 0 :(得分:3)
但现在它变得越来越大(100+),所以我们现在有100个数据库需要管理
我认为你的答案就在那里。
答案 1 :(得分:3)
我不想提出建议,因为变量太多了。
但是,我确实想要注意,我的雇主有1000个已部署的数据库 - 我们每个客户使用一个数据库进行复制(2个以上的数据库)。
所以,这个想法是可行的。我的工作与数据库管理无关,但我记得我们在自动化和在线工具方面做了很多工作。备份和数据库管理由团队处理。
最终,您可以使100多个部署工作,但您将要开始投资开发实用程序和工具,以帮助自动备份和/或管理数据库。
理想情况下,任何事情(数据库管理)都不应该手工完成。此外,连接字符串应该从给定的Web应用程序部署中抽象出来。
答案 2 :(得分:1)
必须同意@Hogan - 管理许多数据库的开销可能远非理想 - 特别是如果您将来需要进行架构更改等。
也就是说,如果您使用单个数据库,您是否可能需要将给定客户的数据分离到独立的数据库/站点?如果可能的话,进行这种分离需要多长时间?
从本质上讲,如果编写一组工具来处理上述情况可能需要花费较少的精力,那么我很想采用单一数据库方法。但是,您还需要考虑创建统一版本的数据库模式的可能时间尺度,这些数据模式处理每个客户的数据集等。
此外,现有100多个数据库的所有的模式是否完全相同?如果不是,如果您决定将现有数据迁移到单个数据库中,则可能会有一个痛苦的世界。
更新 - 顺便提一下,上述所有内容都有点概括,但如果不了解更多有关正在使用的数据量和流量等情况,很难具体说明。 (例如:如果您曾经为客户提供过高需求的站点,那么如果您使用的是每个客户的数据库,那么将它放在自己的数据库服务器上是微不足道的。)
答案 3 :(得分:0)
我同意@Hogan和@middaparke ...如果模式相同,你可以在一个实例中输入它。
不幸的是,从这里可以告诉你,你的模式是否会从重复使用这些百万行中的大部分中受益,如果标准化得很好,那么这肯定是有益的。
也无法判断应用程序的任何更改对此更改有多困难。
不幸的是,听起来你拥有一个拥有大量工作应用程序的庞大客户群,因此继续向这个方向前进的动力 - 通过自动化管理这么多数据库,你会进入吸收它并处理它的领域。 ......不是你从头开始做的方式 - 但也许最便宜,因为你就在你身边。