2017-10-20 103 views
1

我正在寻找使用MySQL建模数据库的答案,但找不到它。mysql一个或多个数据库?

什么是最佳实践,建模1数据库和所有表&数据在1储存库,或分裂成多个数据库来处理每个东西,如模块?

例如,我有55个表的1个项目,而且会更多,而我会用php开发一个域中的服务;到目前为止还开始了另外一个包含22个表格而对于这两者,我使用不同的用户登录,信息和数据;并像6或10表&关系在布局中组织(谢谢你的MySQL方案支持这一点)。但是如果我将两个用户句柄拆分成一个外部数据库并用这个句柄处理这两个数据库呢?

我只是想象如果我将所有的布局分割到其他数据库中,在PHP中编程(使用数月并且有很多提前)是噩梦,但易于维护。我对吗?

回答

1

您应该只使用一个数据库和一个数据库,除非您有特定的理由违反该规则。正当的理由的例子包括:

  • 你已经有了一个多租户应用程序,该应用程序不共享数据的情况下,让你传播出来跨多个数据库,以消除单一故障点。即使这样,这些实例也只是相同基本模式的克隆。
  • 出于性能原因,或者因为存储限制,无法通过其他方式以经济高效的方式解决,您需要在多个实例中分割数据。这些碎片共享一个模式,但只是完整数据集的一部分。
  • 您需要为数据仓库和/或报告原因创建副本或衍生数据集。这些实例可能具有完全不同的模式,因为它们围绕读取活动进行优化,而不是写入。

除非你正在做一些真正涉及的事情,推动MySQL的限制,坚持一个数据库。你的开发人员会很感激。

对于非平凡应用程序,五十六十张表格并不是很多表格。有些应用程序的数量超过了数百个,但是使用正确的命名约定和良好的文档,这不是问题。一个好的命名系统意味着你可以快速搜索你想要的内容,再加上通过Tab键自动完成的选择,你可以直接到你想去的地方。

+0

现在,我是唯一的设计师和开发人员。但我理解你的观点。 – Epistomai

+1

因为你没有选择,通常会因为规模(和成功!)而强加给你的东西,而不是拥有一些过度工程化的解决方案,从来没有真正的必要。保持尽可能简单,但不简单。 – tadman

+0

另一个可能的项目符号:不同的用户可以被授予不同的(或不)访问不同的'DATABASEs'。当然,这可以在'TABLE'级别完成,但数据库级别看起来更清晰。 –