在大型项目上使用MySQL - 是否有多个数据库?

时间:2017-12-20 10:47:07

标签: php mysql database laravel eloquent

我们正在努力开发一个以不错的速度增长的项目,目前我们正在计划如何在2018年进一步扩展。

我们办公室里有一位技术人员告诉我们他自己在使用PHP + MySQL的大型项目上与其他公司合作的经历。

我是我们项目中唯一的开发人员,所以当我感到困惑时,我没有其他人可以辩论或提问,所以我会在这里尝试。

这位技术人员问我数据库是如何构建的,我告诉他MySQL。他询问是否有一个数据库包含所有表或多个数据库,每个数据库都有各自的表(例如按任务/功能分组的数据库等),而且我只回复了一个包含项目中所有表的数据库。

然后他建议将我的表拆分为多个数据库。这是个坏主意吗?

我们运行一个不同游戏格式的锦标赛平台,如小组赛阶段,单淘汰赛和双淘汰季后赛等等。小组赛阶段的功能正在进行中,他建议创建一个名为" tournament_groups"并将所有相关表格放在此内。

NB:我使用Laravel 5.4进行Eloquent ORM开发。

总结如下:多个数据库中每个都有几个表,或者一个数据库中包含所有表?

2 个答案:

答案 0 :(得分:0)

嗯,答案并不那么明显。有许多事情需要考虑:

1)易于开发 - 事实上,拥有单个数据库要容易得多 - 只运行迁移到这个单一数据库中,如果要在实时数据库中验证某些内容,只验证单个数据库,但需要添加多个模型条件,例如where('company_id', 5),您需要非常小心,不要让一家公司的人员访问其他公司的数据

2)安全或商业/法律要求 - 在某些情况下,由于合法的事情,每个客户应该有单独的数据库。例如,如果公司的管理员应该访问数据库,您可以轻松地访问他的公司数据库,但是您不能让他访问拥有多家公司的数据库。

3)性能 - 取决于您因性能原因而预期的数据量,如果您希望表中有数百万行,则为每个客户端建立单独的数据库可能会更好

我在两种情况下工作,对于我作为开发人员而言,拥有单一数据库要方便得多,但正如我所说,在某些情况下,唯一的选择可能是拥有多个数据库。

答案 1 :(得分:0)

我认为您的同事正在谈论的是microservice架构,您不仅要拆分数据库,还要将整个应用程序拆分为一组独立的组件。它不只是拆分数据库。

Martin Fowler的article可能是一个很好的起点。