マスターデータベースとスレーブデータベースがあります。負荷の一部を分散するために、すべてのINSERT / UPDATEクエリをマスターに送信し、すべてのSELECTクエリをスレーブに送信する必要があります(スレーブを台無しにせずに書き込むことはできないため)。database.phpでデータベースを定義しています。これが私が切り替えをしようとしている方法です:
AppModel.php beforeFind()内で、次のように設定しています。
$this->useDBConfig = 'readOnly';
beforeSave()内で、次のように設定しています。
$this->useDBConfig = 'writeOnly';
ただし、詳しく調べてみると、useDBConfigがモデルとデータベースの1対1の関係であるかどうか疑問に思っています。つまり、useDBConfigは、単一のモデルを単一のデータベースにポイントするためだけのものである可能性があります。これは、私が期待するように常に機能するとは限らないためです。INSERT / UPDATEは、readOnly権限を持つreadOnlyで実行しようとして、失敗する場合があります。
この場合、CakePHPアプリケーションを変更して、適切なデータベースにリクエストを送信するにはどうすればよいですか?これを別の方法で行う必要がありますか?