Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql是一个数据库还是多个数据库?_Mysql_Database_Database Design - Fatal编程技术网

mysql是一个数据库还是多个数据库?

mysql是一个数据库还是多个数据库?,mysql,database,database-design,Mysql,Database,Database Design,我正在寻找用MySQL建模数据库的答案,但没有找到 最好的做法是,在一个存储库中对一个数据库和所有表和数据进行建模,或者将其拆分为多个数据库来处理模块之类的每一个内容 例如,我有一个包含55个表的项目,当我在一个域中使用php开发一个服务时,这个项目会多得多;还启动了另一个项目,到目前为止有22个表。对于两者,我使用不同的用户登录、信息和数据;像6或10个表和关系被组织在一个布局中(感谢MySQL scheme支持这一点)。但是,如果我将两个用户句柄拆分为一个外部数据库,并使用该数据库处理这两个

我正在寻找用MySQL建模数据库的答案,但没有找到

最好的做法是,在一个存储库中对一个数据库和所有表和数据进行建模,或者将其拆分为多个数据库来处理模块之类的每一个内容

例如,我有一个包含55个表的项目,当我在一个域中使用php开发一个服务时,这个项目会多得多;还启动了另一个项目,到目前为止有22个表。对于两者,我使用不同的用户登录、信息和数据;像6或10个表和关系被组织在一个布局中(感谢MySQL scheme支持这一点)。但是,如果我将两个用户句柄拆分为一个外部数据库,并使用该数据库处理这两个数据库,该怎么办


我只是想,如果我将所有布局拆分成其他数据库,用php编程将是一场噩梦(花了几个月的时间,而且有很多进步),但很容易进行维护。我说得对吗?

除非你有特定的理由违反这条规则,否则你应该坚持使用一个数据库和一个数据库。有效理由的例子包括:

  • 您有一个多租户应用程序,而该应用程序的实例不共享数据,因此您可以将它们分布在多个数据库中,以消除单点故障。即使如此,这些实例只是相同基本模式的克隆
  • 由于性能原因或存储限制,您需要在多个实例之间共享数据,而这些限制无法通过任何其他方式以经济高效的方式解决。这些碎片共享一个模式,但只共享完整数据集的一部分
  • 出于数据仓库和/或报告原因,您需要创建数据的副本或派生集。这些实例可能具有完全不同的模式,因为它们是围绕读取活动而不是写入进行优化的
除非您正在做一些真正涉及的事情,突破MySQL的限制,否则请坚持使用一个数据库。你的开发者会很感激的


五十、六十个表对于一个非平凡的应用程序来说不是很多表。有些应用程序有上百个,但有了正确的命名约定和良好的文档,这不是问题。一个好的命名系统意味着您可以快速搜索所需内容,并通过tab键依靠auto complete(自动完成)直接到达您想要去的地方。

目前,我是唯一的设计师和开发人员。但我理解你的观点。因为你别无选择,不得不将数据库拆分为多个部分,这比拥有一个从未真正需要的过度设计的解决方案要好得多,这通常是规模(和成功!)所迫。尽可能简单,但不要简单。另一个可能的要点是:不同的用户可以
被授予对不同
数据库的不同(或不)访问权限。当然,这可以在
级别完成,但db级别似乎更干净。这是事实,对于某些需要在两个不同数据集之间强制执行绝对分离的应用程序来说很重要,但实际上大多数应用程序都不是这样工作的,客户端无法直接访问数据库,所有身份验证都在应用程序层完成。