- ベストアンサー
WebクライアントでDBセッションを維持させたい
C/S系システムをWebシステムに移行することを考えてます。 Webクライアントにおいて、アプリでログイン後にDBセッションをずっと保持させたままにしておきたいのです。(WebクライアントとDBセッションを1対1にしたい) APサーバ上でコネクションプーリングしてDBとのセッションを維持させておくことは知ってます。 実現方法や、実現された事例等がありましたら教えて頂けないでしょうか? DBはORACLEを利用してますが、 Webクライアントと dbms_session.unique_session_id を一意に定めたいのです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
忘れていましたが、セッションIDは当然、暗号化して(ハッシュ)、ページに埋め込みです。一回のコネクションごとの使い捨てです(その辺の仕組みはわかりますよね)。クッキーによるセッションIDのタイムアウトはブラウザ事に違うような気がします。IEは指定しないと30分だったよな。 これは、URL直接指定での動作も同時に考える事ができ、有用に働きますよ。 業務用のアプリでDBを持つアプリは、その辺はほとんど解決していると思うのですが・・・ 何せ、スケーラビリティと、パフォーマンスを同時解決しないといけないですからね。 検索は、キャッシュをかなりのレイヤーの仕組みで多用していますよ。 業務用だと10万アクセスのうち1万の同時アクセスでの検索。プーリングとインデックスとキャッシュを何段階にもレイヤーにくみ、DBへのアクセスを端折るかが鍵ですよね。
その他の回答 (3)
- 0909union
- ベストアンサー率39% (325/818)
問い合わせの内容の事かどうかわかりませんが、コネクションプーリングは、 http://msdn.microsoft.com/ja-jp/library/fbk67b6z(v=vs.80).aspx http://msdn.microsoft.com/ja-jp/library/system.windows.forms.bindingsource(v=vs.80).aspx http://otndnld.oracle.co.jp/tech/windows/odpnet/howto/04_arraybind/content.html http://otndnld.oracle.co.jp/easy/dotnet/oo4otoodp/index.html なんて見るとヒントがでていると思うのですが・・・ つまり、マイクロソフトにおんぶにだっこで、IISなどに特化すれば簡単に実現しています。私も、そのよな業務用ソフトにたずさわりましたが? 2003、4年ころですかね。 移行は、他のシステムでの技術選択がキーになると思います。 結局、一つのアーキテェクチャーではすまなくなり、複数の言語や、フレームワークをチョイスすることなったと思いますよ。
コネクションプーリングでは要件満たせませんし。 ペシミスティックロックの仕組みをそのまま Web に移行したいのだと推測しますが、その部分はあきらめるべきです。 セッション変数に DB コネクションを保持するという事は実装上全くもってお勧めできません。
- MAXIMAX
- ベストアンサー率60% (50/83)
クライアントと1対1に結び付けたい理由がわからず申し訳無いのですが、実現方法の前のお話なのですが、WEB クライアントはどういう仕組みで識別するのでしょうか?? 最も一般的なセッションの仕組みでそれをやると、ブラウザを開き直されるとセッション ID が変わってしまう上、前の接続が切断されたことがわからないため、最悪宙ぶらりんの DB セッションが山ほど出来てリソースがなくなるという自体が起き得ます。ライフタイムが長い cookie を使うと、逆になにかしら新規セッションを開始させなければならないケースなど想定しなくてはならず、ちょっと面倒です。 こういうことがあることもひとつのポイントとしてプールを共有する仕組みが用いられるのですが・・・・・・。
お礼
ありがとうございます。 CS系システムをWeb系システムに移行するに当って、 そのまま移行できればよいなーと思ったことが始まりです。 移行となると、 セッション管理や、排他制御などの仕組みが変わる(考えるのが)メンドウで。。 だったらWEBである必要ないじゃーんって感じもするのは事実なんですが・・
お礼
ありがとうございます。 そうなんです。きっぱりと言って頂けると、背中を押された気分です。 無理とはわかりつつも、淡い期待を抱いてました。 WEB系システムでは、ペシミスティックロックはやらないんですかね??