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

Back to archive index

kunitsuji tsuji****@m-s*****
2009年 7月 23日 (木) 11:34:32 JST


 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 メーリングリストの案内
Back to archive index