水平分割した複数DBへのアクセス
個人的なメモ&間違ってたら指摘してください:-)
ユーザー毎のDB接続先をDBで管理している場合、モデルはすべてのDBで同一になるので、database.ymlの設定でいけそう。
all: service_db1: class: sfPropelDatabase param: dsn: pgsql://dbuser:dbpass@dbserver1:5432/service_db persistent: true service_db2: class: sfPropelDatabase param: dsn: pgsql://dbuser:dbpass@dbserver2:5432/service_db persistent: true service_db3: class: sfPropelDatabase param: dsn: pgsql://dbuser:dbpass@dbserver3:5432/service_db persistent: true
PHP側ではこんな感じでConnectionを取り出せた。
<?php // service_db1 $db = Propel::getConnection(); // service_db2 $db = Propel::getConnection('service_db2'); // service_db3 $db = Propel::getConnection('service_db3');
一瞬、
<?php $db = Creole::getConnection('pgsql://dbuser:dbpass@dbserver3:5432/service_db');
とかしようかと思ってた。。。