php - 单个数据库或多个数据库(用于单个应用程序中的多个用户)

标签 php mysql database content-management-system

我是 php/mysql 的新手,我正在编写一个简单的 CMS。但在这种情况下,我将托管多家公司(每家公司都有多个用户),这些公司需要付费才能使用该系统。

所以...我的问题是关于如何组织数据库...谈到安全、管理和性能,我只想知道你们这些人的意见是最好的:

  1. 将所有公司托管在一个数据库中,并获得一个与用户匹配的公司 ID。

  2. 每家公司都有一个单独的数据库来保存用户(不再需要公司 ID)。

我会在第一种情况之后开始开发......但是我想如果我有一些黑客攻击/sql 注入(inject),每个客户端都会受到伤害。分离数据库后,损害只会影响一个客户。因此,就安全性而言,第二种情况可能会更好。但不能对管理和性能说同样的话。

因此,根据您的经验,任何帮助或提示都会很棒!

提前致谢,抱歉我的英语不好。

最佳答案

我会选择单独的数据库。但不仅仅是为了黑客。

可扩展性: 假设您有一台服务器可处理 10 个网站,但其中 1 个网站的请求、内容等增长很快。您的服务器很难托管所有这些网站。

使用单独的数据库,分布在多个服务器上是小菜一碟。对于单个数据库,您将不得不升级当前的数据库或将其集群化,但这有时对于托管公司来说是不可能的,或者非常昂贵。

性能: 你他们都在 1 个数据库上,多个用户的数据在 1 个表中,锁可能会减慢其他用户的速度。

大表,意味着大索引,大查找等。所以拆分到不同的数据库实际上会加快速度。

您将不得不处理每个数据库的额外内存和 CPU 开销,但它们通常不会产生非常大的影响。

是的,管理多个数据库需要更多工作,但是拥有适当的更新脚本并密切关注数据库模式的版本将大大减少您的管理问题。

更新:另见这篇文章。 http://msdn.microsoft.com/en-us/library/aa479086.aspx

关于php - 单个数据库或多个数据库(用于单个应用程序中的多个用户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16194336/

相关文章:

php - POST 可以进行 SQL 注入(inject)吗?

php - 加入类上的 Doctrine QueryBuilder indexBy - p 已定义错误

php - undefined variable 和mysqli错误

php - 消息系统 - MySql/PHP/Kohana

PHP + HTML 表格 : Fire appropriate MySql query from each cell of the table

python - Django 上的 Mysql 错误

database - 填充报告/数据仓库数据库的策略

java - 当域对象发生变化但数据库没有变化时,有哪些设计模式可以处理?

mysql - 有两个用户 ID 表和它们之间的链接

MySQL联结表连接