水平分割した複数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');
とかしようかと思ってた。。。