【问题标题】:Multiple databases for clients [closed]客户的多个数据库[关闭]
【发布时间】:2013-05-22 11:48:07
【问题描述】:

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

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

请帮忙。

【问题讨论】:

  • 100,000 条记录并不是很多数据。拥有单独的数据库会很疯狂。
  • 我使用的数据库有 1M+ 记录,没问题,你应该为每个用户使用相同的数据库,使用更多会造成混乱
  • 好吧,我会把它们都放在同一个数据库中,拥有多个数据库不会提高效率。数据库只是对某些表进行分组的一种逻辑方式,因此在您的情况下,一切都是相关的,因此应该进入数据库。如果您在有几百万条记录的数据库上进行简单的选择,您真的应该担心。
  • 同样从维护的角度来看,如果 12 个月后您决定稍微改变它的结构而不是改变一个数据库模式,那么您现在已经摆脱了现在结构错误的数据库负载

标签: php mysql database database-design


【解决方案1】:

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

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

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

其他注意事项:

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

【讨论】:

  • 感谢您提供信息内维尔
  • 我可能需要更多地研究 mysql 数据库
猜你喜欢
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2015-03-20
  • 2012-01-07
  • 2014-01-17
相关资源
最近更新 更多