我记得在stackoverflow播客中,Fog Creek为每个客户使用了一个数据库,用于Fogbugz。我认为这意味着Fogbugz On Demand服务器具有成千上万个数据库。
我们才刚刚开始开发Web应用程序,并且有类似的问题要解决(很多拥有自己孤立数据的客户)。
我对每个客户使用数据库有什么问题?我该如何解决?
我的初步想法
每个客户的数据库优势
- 更简单的数据库架构
- 更简单的备份-您可以依次备份每个客户,而不会真正影响其他客户。
- 轻松导出给定的客户数据。
- 更好的缓存性能-写入更活跃的表之一只会影响执行写入操作的单个客户。
- 跨硬件更容易扩展。例如,当我们需要从1台服务器转到2台服务器时,我们只需将一半的客户转移到新服务器上。
缺点
- MySQL可以应付5,000个数据库吗?性能会糟透吗?
- 对模式的更改可能很难在所有数据库中复制出来。我们真的真的需要为此制定一个自动化计划,例如对架构进行版本控制以及一个脚本,该脚本可以了解如何将数据库从一个版本移植到另一个版本。
- 做所有客户共同的事情可能很尴尬或不可能
- 与上述类似,但是我们想要对所有客户执行的任何分析都是不可能的。例如,我们应如何跟踪所有客户的使用情况?
USE CompanyData;