客户端的多个数据库

时间:2013-05-22 11:48:07

标签: php mysql database database-design

我需要MySQL数据库的帮助。

我正在建立一个客户管理系统,超过1000个用户将使用该系统,每个用户将拥有自己的客户,而这些客户又可以拥有100多个客户或更多客户(无限制)。我想我应该在MySQL中使用单独的数据库,还是在一个数据库中为用户提供所有数据库?因此,当用户创建自己的帐户时,它将自动为该用户创建所有数据库文件,而另一个用户将拥有另一个单独的数据库,依此类推。

请帮忙。

1 个答案:

答案 0 :(得分:1)

我认为您描述的问题被称为“多租户”架构。

没有正确或错误的答案 - 有很多考虑因素。

数据大小肯定是一个 - 但你提到的数字并不足以产生很大的差异。 MySQL中的100万行是微不足道的(只要你可以使用索引)。

其他考虑因素:

  • 可维护性:拥有一个“大”数据库意味着只需迁移一次新版本 - 添加列或表,创建新索引等可能在概念上更容易,因为您不必重复每个客户端的相同脚本。但是,某些操作可能会使您的所有客户离线数小时;这可能是一件坏事。
  • 版本控制:如果您打算随着时间的推移升级解决方案,例如添加新功能等,拥有单个数据库意味着您必须同时升级所有客户端,无论他们是否愿意。它减少了工作量和复杂性,但是一些客户端可能还没有为升级做好准备(例如,如果他们从系统导出数据并且您正在更改架构)。
  • 服务级别:许多SaaS提供商提供不同的服务级别。您可以将共享基础设施视为“青铜”,将专用基础设施视为“黄金”。
  • 行长并不是决定系统性能的唯一因素 - 如果您让用户创建自己的报告,可能会降低系统速度;你可能有一些复杂的脚本,它们会在一夜之间运行以存档数据等。一旦这些问题变得无法克服,可能需要对客户进行分区。