decoy
youtu****@gmail*****
2009年 7月 22日 (水) 23:16:18 JST
decoyです。 私の場合は下記のような感じで更新系と参照系を分けています。 1. system/application/config/autoload.php に通常であれば $autoload['libraries'] = array('database'); と書くところを 下記のような感じで書く。 $autoload['libraries'] = array( 'database' => array( 'db' => 'Master', 'slavedb' => 'Slave', ), ); 2. system/application/config/database.php に繋ぎたいDBサーバの数だけ設定を書く。 $db['Master'] = array( ・・・ ); $db['Slave'] = array( ・・・ ); 3. Loader.phpを継承したMY_Loader.phpを作成し、 Loader::databaseやLoader::_ci_autoloader辺りをオーバーライドし、 2で設定した数だけDBに接続するようにする。 こうすることで、モデル辺りで更新系の処理を行いたければ、 $this->db の後にSQLを書いたり、$this->db->insert(); したり、 参照系の処理を行いたければ、$this->slavedb の後に SQLを書いたり、$this->slavedb->get(); したりすればOKです。 以上、ご参考まで。 // decoy ----- Original Message ----- From: <usagi****@ezweb*****> To: <codei****@lists*****> Sent: Tuesday, July 21, 2009 8:24 PM Subject: Re: [Codeigniter-users] CIのDBクラスを使った場合の処理で質問 > kunitsujiです。 > やはり、DBクラスのラッパーを作って、 > アクティブレコードでインサートとか書いたら、そこで切り分けるしかないかな。。。 > > 誰もやってないんですかね。 > > ちなみにPNEは、リード、ライトの上で、処理関数を使ってますが、そこで吸収してますよ。少し凄いですね(笑) > まあ、PEARのDBクラスをラッピングしてるんですが。 > >>安藤です。 >> >>2009/07/21 19:54 に <usagi****@ezweb*****> さんは書きました: >>> kunitsujiです。 >>> 安藤さん、どうも。 >>> 例えば、最初1つのDBでアプリを動かして、あとで1台追加する場合、アプリ側は意識をしたくないんですよ。 >>> >>> 設定に一つ足すだけで、フレームワーク側が吸収して欲しいのです。 >>> CIを考えた場合は確かに、CIの責務ではないように感じますね。 >>> アプリケーションのベースでやるべきかな。 >>> MyNETS2のベースでやるべきだとは思いますが、DBまわりって継承簡単に出来ない仕組みなんですよね(笑) >> >>単純に考えるなら、本でも書きましたが、 >>read系、write系ってモデルを切り分けることでしょうかね。 >>これだと、OpenPNEと一緒になってしまいますがw >> >>ちょっと考えましたが、writeでもreadはするので、共通モデルの >>汎用性ががた落ちになりそうですね。 >> >>//安藤 >> >> >>> >>>>安藤です。 >>>> >>>>2009/07/21 19:36 に kunitsuji<tsuji****@m-s*****> さんは書きました: >>>>> kunitsujiです。 >>>>> >>>>> CIのDBクラスを使って、接続先DBを変えることができます。 >>>>> たとえば、MySQLでマスターとスレーブを切り替えるような場合ですね。 >>>>> >>>>> この時に思ったのですが、 >>>>> subのDBに記述がある場合、自動的に更新系の処理はdefault、SELECT系の処理は >>>>> >>>>> sub、見たいなことってできないもんでしょうかね。。。 >>>>> >>>>> 実際ほとんどのアプリではdatabaseをつかうので、autoloadで読み込みしたりし >>>>> >>>>> てますので、都度modelで呼び出すのもどうかと思うし。 >>>>> >>>>> このあたりうまく処理してるひといますか? >>>> >>>>この辺って、フレームワーク側でやるなら明示的にやる場合が多いと思います。 >>>>自動だと、誰もが望む構成になりえないと言うか。 >>>> >>>>自動的ってなると、負荷分散側に任せたほうが良くないでしょうか? >>>>#クラスタリング >>>> >>>>//安藤 >>>> >>>>> >>>>> _______________________________________________ >>>>> Codeigniter-users mailing list >>>>> Codei****@lists***** >>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >>>>> >>>> >>>> >>>> >>>>-- >>>>---------------------------------------------------------------------------------------- >>>>株式会社 音生 >>>>安藤 建一 >>>>愛知県名古屋市中区金山5丁目11−6 >>>>名古屋ソフトウェアセンタービル1F >>>>TEL : 052-884-0017 >>>>FAX : 052-884-0018 >>>>URL : http://neo-navi.net/ >>>>---------------------------------------------------------------------------------------- >>>> >>>>_______________________________________________ >>>>Codeigniter-users mailing list >>>>Codei****@lists***** >>>>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >>> >>> _______________________________________________ >>> Codeigniter-users mailing list >>> Codei****@lists***** >>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> >>_______________________________________________ >>Codeigniter-users mailing list >>Codei****@lists***** >>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users