[Zend Framework][MySQL] MySQLでレプリケーションをしている場合のZend_Db_Table
12月 19th, 2007 Posted in Zend Framework
Zend FrameworkでMySQLのマスター/スレーブ形式のレプリケーションに対応させるには自力のようです。
Zend_Db_Tableでマスター/スレーブを使い分ける方法として、どういうのがいいのかと考えています。まず思い浮かぶところでは、Zend_Db_Table_Abstractを拡張したテーブルクラスでDBを振り分けて、そのクラスをさらに拡張して各テーブルを抽象化する(前エントリーのBarクラスのようなもの)というところでしょうか。
require_once 'Zend/Db/Table/Abstract.php'; class Zend_Db_Table_Wrapper extends Zend_Db_Table_Abstract { public function insert(array $data) { /* ここでDBの設定(master) */ return parent::insert($data); } public function update(array $data, $where) { /* ここでDBの設定(master) */ return parent::update($data, $where); } public function delete($where) { /* ここでDBの設定(master) */ return parent::delete($where); } public function find($key) { /* ここでDBの設定(slave) */ return parent::find($key); } public function fetchAll($where = null, $order = null, $count = null, $offset = null) { /* ここでDBの設定(slave) */ return parent::fetchAll($where, $order, $count, $offset); } public function fetchRow($where = null, $order = null) { /* ここでDBの設定(slave) */ return parent::fetchRow($where, $order); } }
今日はこれくらいで、引き続き考えていきます。