Php 只有一个数据库还是多个?

Php 只有一个数据库还是多个?,php,mysql,database,symfony,Php,Mysql,Database,Symfony,我正在尝试使用symfony用php创建web应用程序。 它有点像一个社区创造者。但我的问题是,我应该为所有应用程序只创建一个数据库,还是应该在每次用户创建“社区”时创建一个数据库。与此相关的最佳实践是什么。谢谢你的回复 在我看来,每次用户创建一个新社区时创建一个新数据库是个坏主意,原因不止一个。我会给你一些最重要的: 这很不安全。这意味着连接到数据库服务器的整个数据库用户拥有更高级别的权限(超出标准CRUD操作)。这被认为是不好的安全实践,因为应用程序中的安全漏洞可能会打开数据库进行各种攻击

我正在尝试使用symfony用php创建web应用程序。
它有点像一个社区创造者。但我的问题是,我应该为所有应用程序只创建一个数据库,还是应该在每次用户创建“社区”时创建一个数据库。与此相关的最佳实践是什么。谢谢你的回复

在我看来,每次用户创建一个新社区时创建一个新数据库是个坏主意,原因不止一个。我会给你一些最重要的:

  • 这很不安全。这意味着连接到数据库服务器的整个数据库用户拥有更高级别的权限(超出标准CRUD操作)。这被认为是不好的安全实践,因为应用程序中的安全漏洞可能会打开数据库进行各种攻击
  • 这很难维持。我不确定您希望获得多少社区,但假设代码的更新需要您更新所有这些数据库中的给定表
  • 对于每个数据库,使用另一个连接,这意味着使用另一个套接字连接。当使用持久连接时,这意味着许多数据库连接可能同时打开(取决于应用程序的规模)。这可能会导致瓶颈,从而导致性能问题
第一和第二个原因是迄今为止最重要的


但是,如果您觉得有必要以某种方式将每个社区与另一个社区分开,我建议为每个社区使用带有前缀的表。在这种情况下,第一个原因可能会有所不同,因为数据库用户只需拥有单个数据库的权限,而第三个原因则不再合适。

这取决于具体情况。我想首先,我会选择一个数据库。但是,如果有许多社区有许多用户和大量流量,那么一个MySQL数据库可能不够。拥有独立数据库的优点是,您可以将每个数据库移动到单独的服务器或集群。但是我的朋友,那时候,你可能已经发现MySQL是否适合这样的应用程序了。没有足够的细节来回答,只有意见。但是,如果社区都有相同的基本数据结构,那么一个数据库就有意义了。如果每个社区的结构大不相同,那么就有多个数据库。如果让社区自给自足(也就是说,让它们各自拥有自己的数据库和代码库),那么它将更具可扩展性和可移植性,这样,如果一个社区超出了您的服务器,您就可以简单地将其迁移到其他地方。我认为,当用户创建comunity时,您应该在Comunities表中创建一行)或集合中的文档:)