[seasar-dotnet:2402] Re: 初心者的な質問で申し訳ないですが・・・(追加質問ありです)

志水正幸 [E-MAIL ADDRESS DELETED]
2015年 1月 14日 (水) 16:46:10 JST


志水です。
超お世話になっております。

久保さん、早速の回答ありがとうございます。
なるほど、よくわかりました。
浅い知識なので自信がなかったですが
私の認識は間違ってはないようで安心しました。

小谷さん
 ->お手数ですがお願いします。


DBLINKと複数DBは一長一短で判断が難しいですね。。
DBLINKの簡単な方にしたいが、複数DBも視野にいれるべきか・・・・
でも、設定が難しそう・・・、ちょっと逃亡したくなっちゃいました(笑)


設定していてまたまた疑問があり、
追加で質問させてください。

■DBリンクはセッションあたりの接続数が制限(初期値は4)されていますという 
記事を目にしたのですが
外だしSQLで連結して4つを超えると接続エラーとなるということでしょうか?

■commonColumnMap で以下のように、DateTime型でなくて全部 
Varcharにしたいのです。
(私はしたくないんですが・・適当に無理ともいえないorz)
それも、ADD_DT=追加日付、ADD_TM=追加時間って感じで分ける必要があって。
この場合って自動生成後にAccessContextへ自分でメソッド追加し 
ないといけないのでしょうか?

     ; commonColumnMap = map:{
         ; ADD_ID=VARCHAR ; ADD_DT=VARCHAR ; ADD_TM=VARCHAR
         ; UPD_ID=VARCHAR ; UPD_DT=VARCHAR ; UPD_TM=VARCHAR
     }

     ; beforeInsertMap = map:{
         ; ADD_ID = $$AccessContext$$.GetAccessUserOnThread()
         ; ADD_DT = ?
         ; ADD_TM = ?
         ; UPD_ID = entity.RegisterUser
         ; UPD_DT = ?
         ; UPD_TM = ?
     }
     ; beforeUpdateMap = map:{
         ; UPD_ID   = $$AccessContext$$.GetAccessUserOnThread()
         ; UPD_DT   =?
         ; UPD_TM   = ?
     }



以上、宜しくお願いします。。





> 久保です
>
> 志水さん、こんにちは
>
>> ■DBFLUTEはコネクションプーリングをデフォルトで使用していると
>>   勝手に思いこんでいるのですが合ってますか?
> DBFlute.NETの方は、S2Dao.NETを経由しています。
> コネクションプールしてないとお話にならないと思うので、
> どう考えてもしていると思いますが、一瞬どこでやってたっけ?って。。。
>
> to 小谷くん
> Seasar.NETの中でConnectionPoolしてるんだっけかな?
> (JavaだとSeasar自体がConnectionPool持ってるけど)
>
>> ■DBFLUTEは1リクエスト内ではコネクションは張りっぱなしと思っていますが 合ってますか?
> スレッドトランザクション方式になっている、その通りです。
> トランザクションを開始するとDataSourceの常に同じコネクションを戻します。
> (同じスレッド内では)
>
>> ■WEBでは基本的にリクエスト跨いだロック(For Update)はできないと思ってい ますが合ってますか?
> そうですね。リクエスト間でトランザクションを貼りっぱなしに
> しないといけないので、まったくやったことはないです。
>
>> ■お客から接続コストを抑えるためにコネクションをセッションに
>> 保持して使い 回しできないの?って質問されたんですが
> コネクションプールしていればそんなことする必要ないですね。
> というか、セッションに入れたらセッション消えるまでそのコネクションが
> 残っちゃうので、逆に枯渇しそうですね。その方式は聞いたことないです。
>
>> ■DBFLUTEのコネクションプーリングの最大数などは、どこで管理しているので しょうか?
> これもSeasar.NETの方の話次第で。
>
>> ■DBFLUTEでDBLLINKしているテーブルを更新したいのですが
> DBLLINKに対してシノニムを作ればできると思います。For Updateできるかと。
> 手元のテーブルとして扱えるようになります。(こちらマニアックですが実績ありです)
>
>> ■DBLINKって遅いと聞きましたが、どの辺が遅いのでしょうか?
>>   通常のプライマリキーでのSELECTではどうなんでしょう?
> 別インスタンスのDBに対してのSQLゲートウェイな感じなので、
> 直接SQLを投げるよりかは遅いと思います。(経由してる分)
> ただ、どの程度遅いのかはパフォーマンス検証しないとわからないですが。
> (許容できるレベルなのかどうか。許容レベルは業務によって変わるでしょうし)
>
>> ■マスタ類とかの参照があるなら、DBLINK使うより、複数DB接続の方がいいので しょうか?
>>  DBLINKと複数DBのメリットとデメリット(判断基準みたいなもの)ってなんで しょう?
> 直接参照できるなら直接参照の方が世話ないかと。スピードも環境構築も。
> DBLinkのいいところは、手元のテーブルと同じ扱いができるところに尽きます。
> 要は、SQL的に手元のテーブルとリモートのテーブルを結合ができるというところです。
> 複数DBではそれができません。
> マスタ類のデータを個別のクエリで取得するので構わないのであれば、
> 複数DBの方がいいかなと。SQLの中で一緒に扱いたいならDBLinkですね。
>
>> 以上、本当にこんな初心者的な質問、
>> だれも頼る人がいないもので・・・
> そのために、オープンソースコミュニティのMLがあるんですよー!(^^
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


---
このEメールはアバスト アンチウイルスによりウイルススキャンされています。
http://www.avast.com



seasar-dotnet メーリングリストの案内