我正在构建一个应用程序(使用 zend 框架),我们将有多个客户端登录并使用该应用程序,并且每个客户端都将存储大量有关其用户的数据(顺便说一句,我正在使用 MySQL) .
基本上我想知道两件事:
拥有多个数据库,每个客户端一个(即 ipd_client_CLIENTNAME),表相同是不是一个愚蠢的想法?或者如果我们有 50 个客户在“他们的”数据库中有 20,000 个用户的数据,它实际上会更快地响应(比将所有内容都放在一个数据库中)吗? 我已经设法构建了相同的系统,但都在一个数据库上,我的模型类只是获取登录客户端的名称(在模型类的 init() 方法中),然后动态更改它们获取的表的名称来自的数据,这会好吗?
如果“系统上的每个客户端都有自己的数据库”是有道理的,那么我将如何动态更改我的数据库模型连接到的数据库(基于登录的客户端)?
如果这没有意义,下面是数据库在两种不同情况下的示例(假设有 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/