php - Zend 的多个数据库

标签 php mysql database-design zend-framework zend-db

我正在构建一个应用程序(使用 zend 框架),我们将有多个客户端登录并使用该应用程序,并且每个客户端都将存储大量有关其用户的数据(顺便说一句,我正在使用 MySQL) .

基本上我想知道两件事:

  1. 拥有多个数据库,每个客户端一个(即 ipd_client_CLIENTNAME),表相同是不是一个愚蠢的想法?或者如果我们有 50 个客户在“他们的”数据库中有 20,000 个用户的数据,它实际上会更快地响应(比将所有内容都放在一个数据库中)吗? 我已经设法构建了相同的系统,但都在一个数据库上,我的模型类只是获取登录客户端的名称(在模型类的 init() 方法中),然后动态更改它们获取的表的名称来自的数据,这会好吗?

  2. 如果“系统上的每个客户端都有自己的数据库”是有道理的,那么我将如何动态更改我的数据库模型连接到的数据库(基于登录的客户端)?

如果这没有意义,下面是数据库在两种不同情况下的示例(假设有 2 个客户端在系统上注册):

多个数据库:

ClientA 有一个名为“ipd_clients_ClientA”的数据库,其中包含表“users”、“lists”。

ClientB 有一个名为“ipd_clients_ClientB”的数据库,其中包含表“users”、“lists”。

单一数据库:

ClientA 有名为“users_ClientA”、“lists_ClientA”的表。

ClientB 有名为“users_ClientB”、“lists_ClientB”的表。

希望这是有道理的。

非常感谢任何帮助,谢谢!

最佳答案

我会使用解决方案 2,结合 MySQL 主/从复制为您的客户提供多个表。 MySQL Master Slave

如果想使用不同的数据库,可以使用Zend Framework的原生函数: Tutorial multipe dbs

然后通过某种前缀为客户选择一个。

关于php - Zend 的多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3783509/

相关文章:

MySQL 触发器无法更新触发器分配到的同一个表中的行。建议的解决方法?

php - 如何更改mysql数据类型?

php - .htaccess 中的特定重定向不起作用

mysql - 数据步骤/SQL 加入/合并/联合 2 个数据集/表并删除相同的行/观察

mysql - MYSQL 的 JDBC 连接配置在 Jmeter 中不起作用

php - 为什么相同编码的字符串在 MySQL 和 HTML 上呈现不同的效果?

mysql - 创建博客数据库

php - 需要从已附加 Javascript 的 <form> 访问 &lt;input&gt; 数据

javascript - Ajax/Jquery 表单无法工作

mysql - 数据库历史化