[s2container-php5:134] Re: S2Daoでマルチデータベースの実績はありますでしょうか?

masami sakamaki [E-MAIL ADDRESS DELETED]
2008年 7月 10日 (木) 14:37:49 JST


黒田様
お世話になります。masasです

マルチDBの件でやってみました。ですが、教えていただいたままでは意図したことが
できませんでした。
Daoの指定を下記のように変更したら動きました。

なぜこのようにしないと動かないかは不明ですが、まずは動いたことのご報告にと。

------------------------------
dao1.dicon
<components namespace="dao1">
    <include path="path_to/pdo1.dicon"/>
    <component class="S2Dao_BasicResultSetFactory" />
    <component class="S2Dao_BasicStatementFactory" />
    <component class="S2Dao_FieldAnnotationReaderFactory" />
    <component class="S2Dao_DaoMetaDataFactoryImpl" />

    <component name="interceptor" class="S2DaoInterceptor" /> </components>

    <component name="fooDao" class="FooDao">
        <aspect>dao1.interceptor</aspect>
    </component>

------------------------------
dao2.dicon
<components namespace="dao2">
    <include path="path_to/pdo2.dicon"/>
    ....
    <component name="interceptor" class="S2DaoInterceptor" /> </components>

    <component name="barDao" class="BooDao">
        <aspect>dao2.interceptor</aspect>
    </component>

------------------------------
<components>
    <include path="path_to/dao1.dicon"/>
    <include path="path_to/dao2.dicon"/>
</components>


-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of masami sakamaki
Sent: Wednesday, July 09, 2008 4:05 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [s2container-php5:133] Re: S2Daoでマルチデータベースの実績はありま
すでしょうか?

黒田様
お世話になります。Masasです。

詳細なアドバイスありがとうございます。

黒田様が作ったソフトウェアロードバランサーですが、公開される
のを楽しみにしております。
この手のものはJava,C#にもあるんでしょうか?。個人的にはC#版が
ほしいな〜。


-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of KURODA Eishi
Sent: Wednesday, July 09, 2008 3:47 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [s2container-php5:132] Re: S2Daoでマルチデータベースの実績はありま
すでしょうか?

masas様

> 黒田様が作ったのは、レプリケーションをやろうとした場合、既存のS2Daoを
> そのままではできないから?と認識しましたが、よろしかったでしょうか?
>
> 作ったクラスというのは、Clientアプリ(Webアプリ)から複数のスレーブへ
> アクセスする際の負荷分散的なことを実現するためのクラスなのでしょうか?。

そうです。DNSラウンドロビンとかLVS使わなくても、
アプリケーション側で分散の設定が出来るならそれでいいや、と思いまして。
そんな訳で私の場合はちょっと面倒なことをやってたんですが、
単純に複数のデータベースを使いたいだけなら、
例えば下記のような感じで、
各データソースに対応したS2Container_PDODataSourceの設定ファイルと、
それらそれぞれに対応するS2DaoInterceptorの設定ファイルを用意して、
daoの設定で必要なinterceptorをaspectに書くだけで問題なかったはずです。

------------------------------
pdo1.dicon
<components namespace="pdo1">
    <component name="dataSource" class="S2Container_PDODataSource">
        <property name="dsn">"mysql:host=wwww; dbname=xxxx"</property>
        <property name="user">"yyyy"</property>
        <property name="password">"zzzz"</property>
        <property name="option">
            array(PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING,
PDO::ATTR_AUTOCOMMIT => false);
        </property>
    </component>
    <component name="requiredTx" class="S2Dao_RequiredInterceptor" />
    ....
</components>

------------------------------
dao1.dicon
<components namespace="dao1">
    <include path="path_to/pdo1.dicon"/>
    <component class="S2Dao_BasicResultSetFactory" />
    <component class="S2Dao_BasicStatementFactory" />
    <component class="S2Dao_FieldAnnotationReaderFactory" />
    <component class="S2Dao_DaoMetaDataFactoryImpl" />

    <component name="interceptor" class="S2DaoInterceptor" />
</components>

------------------------------
pdo2.dicon
<components namespace="pdo2">
    <component name="dataSource" class="S2Container_PDODataSource">
        <property name="dsn">"mysql:host=aaaa; dbname=bbbb"</property>
    ....
</components>

------------------------------
dao2.dicon
<components namespace="dao2">
    <include path="path_to/pdo2.dicon"/>
    ....
    <component name="interceptor" class="S2DaoInterceptor" />
</components>

------------------------------
<components>
    <include path="path_to/dao1.dicon"/>
    <include path="path_to/dao2.dicon"/>

    <component name="fooDao" class="FooDao">
        <aspect>dao1.interceptor</aspect>
    </component>
    <component name="barDao" class="BooDao">
        <aspect>dao2.interceptor</aspect>
    </component>
</components>

------------------------------

黒田

_______________________________________________
S2Container-PHP5 mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/s2container-php5



_______________________________________________
S2Container-PHP5 mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/s2container-php5





S2Container-PHP5 メーリングリストの案内