php - PHP 和 MySQL 的 Multi-Tenancy

标签 php mysql codeigniter activerecord multi-tenant

我有一个基于 CodeIgniter PHP 和 MYSQL 数据库构建的 Web 应用程序,我们使用 PHPActiveRecords。我们不断发展和扩张,现在需要提供白标应用程序。我已经完成了大部分工作,我遇到的唯一问题是如何处理数据库。我不想有两个数据库连接,因为两个站点之间的大量数据将被共享。我研究了 Multi-Tenancy ,这听起来是一个不错的选择,但如果我必须重写每个 ActiveRecord 发现有一个条件,其中tenant_id =“此站点”,然后必须培训我的员工在现在编写代码时执行相同的操作,它不可扩展。有谁知道如何 A) 将 Multi-Tenancy 集成到 PHPActiveRecords 中而无需进行大量修改,或者 B) 比 Multi-Tenancy 更好的解决方案。

提前谢谢您。

最佳答案

根据您拥有的客户端数量,您可以在一台主机上为每个客户端创建一个架构。在公用表的表名前加上公用数据库名称作为前缀,并依靠客户端查询来使用默认数据库。

您的入口点可能会执行以下操作:

$pdo->query('USE client_12345');

您的查询可能类似于:

$pdo->query('SELECT * FROM clientspecificdata WHERE ...');

还有

$pdo->query('SELECT * FROM common.data WHERE ...');

请注意:这会将数据暴露给错误客户端的风险相对较高。确保这适合您的场景。使用多个连接可能会更好。

关于php - PHP 和 MySQL 的 Multi-Tenancy ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14611792/

相关文章:

php - 如何从多个相似的行mysql结果创建复杂的结构化json

php - 查询指定时间?

php - 如何检查图像是否与其他表单数据一起提交

mysql - 如何在 session 变量中更新更改的用户名而不注销或 session 销毁

php - Wordpress - 获取帖子的链接

PHP - 图像快捷方式

php - 邀请 Facebook 好友使用来自 Objective C 或 PHP 的应用程序

javascript - 动态 JQUERY 数组适用于某些记录

mysql - 如果其他表中不存在,搜索连接查询不会显示另一行

php - 同名 collison 的 Codeigniter Controller 和模型