[Codeigniter-users] CIのDBクラスを使った場合の処理で質問

Back to archive index

kunitsuji tsuji****@m-s*****
2009年 7月 23日 (木) 13:02:29 JST


 kunitsujiです。

decoyさん。
なるほど。了解です。
loaderはどちらにしても手をいれているので、やってみます。

>decoyです。
>
>> autoloadで配列でわたせるんですね。。。知りませんでした(笑)
>
>配列で渡せるというか、
>下記のような配列で渡して複数のDBサーバへ接続出来るよう改造(Loader.phpを拡張)
>しています。
>デフォルトでは無理ですね。
>
>// decoy
>
>2009/07/23 11:34 に kunitsuji<tsuji****@m-s*****> さんは書きました:
>>  kunitsujiです。
>>
>> decoyさん。
>>
>> をを、こんな感じのものが欲しかったんですー。
>> autoloadで配列でわたせるんですね。。。知りませんでした(笑)
>> 参考にさせていただきます!
>>
>>>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
>>>
>>>_______________________________________________
>>>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 メーリングリストの案内
Back to archive index