いろいろ準備中

[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);
	}
}

今日はこれくらいで、引き続き考えていきます。

コメントを投稿する