我有一个基于 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/