mingyuanyun / yii2-idb
Database read-write splitting for saas mode based on Yii framework
v1.1.210522
2021-07-21 10:03 UTC
This package is auto-updated.
Last update: 2021-09-21 10:50:23 UTC
README
yii2自定义组件,实现基于saas租户代码的读写分离组件,支持显式和隐式读写用法
安装
1 安装最新发布版本 composer require mingyuanyun/yii2-idb
2 安装指定发布版本 composer require mingyuanyun/yii2-idb:版本号
更新版本 修改composer.json文件,调整版本依赖如:"mingyuanyun/yii2-idb": "~1.0"表示允许大于等于1.0小于2.0的发布版本, 再执行
composer update mingyuanyun/yii2-idb
使用
修改web配置
增加iDb组件
'components' => [
'iDb' => [
'class' => 'iDb\Connection',
'configProviderClass' => 'iDb\providers\YfwDbConfigProvider',
'enableSlaves' => false
],
]
其中configProviderClass是数据库读取类,实现接口iDb\interfaces\DbConfigProviderInterface,用户提供自定义的租户读取方法
注意:目前云服务和工程协同的租户数据库读取类已经内置,如果需要调整可以联系组件提供方进行调整,另外云服务使用该组件时需要在rds表中补全rds.idb_readonly_host字段标识从库的数据库主机地址。
代码中使用
显示调用:指明是操作主库还是从库
// 获取主库连接:
\Yii::$app->iDb->getMasterDb('租户code');
// 获取从库连接,如果该组件的enableSlaves为false则返回主库,否则返回从库
\Yii::$app->iDb->getSlaveDb('租户code');
隐式调用:组件内部根据最终执行的是query还是execute来调用主从
// 获取Yii默认的数据库连接:
// 如果该组件的enableSlaves为false则数据库语句会在主库上执行,否则根据读写操作进行主从分配
\Yii::$app->iDb->getDb('租户code')
\Yii::$app->iDb->getAppDb('租户code', '产品Code')
新增产品级别的数据库配置(产品级隔离)
增加iDb组件
'components' => [
'iDb' => [
'class' => 'iDb\AppConnection',
'configProviderClass' => 'YfSdk\common\db\idb\providers\YfwAppDbConfigProvider',
'enableSlaves' => true
],
]
代码中使用(产品级隔离)
显示调用:指明是操作主库还是从库
// 获取主库连接:
\Yii::$app->iDb->getAppMasterDb('租户code', '产品Code');
// 获取从库连接,如果该组件的enableSlaves为false则返回主库,否则返回从库
\Yii::$app->iDb->getAppSlaveDb('租户code', '产品Code');