- - PR -
PostgreSQLのコネクションプーリングについて
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-02-02 04:07
こんばんは
TomcatとStrutsにてシステム構築を開始しました。 DBはPostgreSQLなのですが、 今回年度ごとにデーターベースを分けるという仕様に なってしまいました。 最初のログインの前に何年度版のDBかを選択するというイメージです。 いつもはコネクションプーリングを利用していましたが、 これをログイン毎にDBと接続するというパターンに 変更しないといけなさそうです。 コネクションプーリングではServer.xmlに記載する場合 PostgreSQLのデーターべース名まで記載が必要だからです。 このような場合、通常ログインは最初に行い セッション内で常に接続を維持しておくというのが一般的なのでしょうか? それともアクセスのたびにDBログイン・ログアウトを行うというのが 一般的なのでしょうか? | ||||
|
投稿日時: 2005-02-02 05:03
データベースへのコネクションはシステムリソースを大変消費しますのでセッション毎に保持することは通常しません。
データベース毎にデータソースを用意してはいかがでしょうか? コネクション数は [最大スレッド数xデータソース数] で済みます。 | ||||
|
投稿日時: 2005-02-03 00:31
ありがとうございます。 弊社の部品ではコネクションプーリングのデータソースは ひとつだけの指定です。 これをあらかじめ複数立ち上げるようにカスタマイズが必要ですね・・・ 当初手を抜いてデータソースごとにContextを作成し(実のJavaアプリフォルダーはひとつ)、 ログインの際に、接続するURLを変更しては?と考えていましたが邪道ですよね・・・ 例) 2002年度版DBアクセス ⇒http://hostnm/foo2002/any.java 2003年度版DBアクセス ⇒http://hostnm/foo2003/any.java 2004年度版DBアクセス ⇒http://hostnm/foo2004/any.java 2005年度版DBアクセス ⇒http://hostnm/foo2005/any.java これだと今の部品を直さずに使えるのですが・・・ Contextをひとつにすると、 1.Tomcat起動時のコネクションプールング作成のロジックの多重化 2.DBアクセスの実装時のコネクションのクラスの選択ロジック 等々大変ですね・・・ Oracleのようにユーザー名で管理できるとコネクションプーリングを 1本にできるのですが・・・ Postgresでスキーマ管理を行うように持ち掛けてもいいのですが、 きっとDBの改廃が手間なのでデータベースで管理したいのでしょう・・・ もう少し勉強します。 | ||||
|
投稿日時: 2005-02-03 03:09
現在のアプリケーションに影響を与えないソリューションとしては良さそうですね。
アプリケーションの規模にもよるかと思いますが、複数のコンテキストにデプロイしてもそんなに大きな負担ではないと思います。 ただし、OutOfMemoryError を避けるためにヒープサイズやパーマネント領域を十分に確保するよう気をつけた方が良さそうです。 | ||||
1
