只有一个数据库或多个?

时间:2014-04-08 18:23:21

标签: php mysql database symfony

我尝试使用symfony在php中创建Web应用程序。 它是一种社区创建者。但我的问题是,我应该只为所有应用程序创建一个数据库,还是每次用户创建一个"社区时都应该创建一个数据库"。与此相关的最佳实践是什么?感谢您的所有回复。

1 个答案:

答案 0 :(得分:2)

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

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

第一和第二个原因是迄今为止最重要的原因。

但是,如果您认为需要以某种方式将每个社区与另一个社区分开,我建议为每个社区使用带有前缀的表。在这种情况下,第一个原因是稍微迁移,因为数据库用户只需拥有单个数据库的权限,第三个原因不再有序。