0

我需要有关数据库 MySQL 的帮助。

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

请帮忙。

4

1 回答 1

1

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

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

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

其他注意事项:

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