JDBCの基礎知識 |
|
それではまず、接続のプーリングとは何であって、なぜ必要なのかという話から始めましょう。
プーリングというのは、実はデータベースの接続に限ったものではなく、オブジェクトなどを、ある場所(プール)にあらかじめ一定数保持しておき、クライアントなどの要求に応じて使用していないオブジェクトを貸し出し、使い終わったらプールに返却してもらい、またプールに入れて再利用するという仕組みのことです。
接続のプーリングの基本的なプロセス。オブジェクトの再利用の仕組みである |
ではなぜ、データベース接続をプーリングする必要があるのでしょうか? 主な理由には、次の2つがあります。
●パフォーマンスの向上
一般に、オブジェクトのインスタンス化やデータベースへの接続、切断は負荷の高い処理といわれています。Webアプリケーションの場合、基本的にクライアントからのリクエストごとに処理を開始しますので、こういった負荷の高い処理を毎回行っていると応答速度に非常に影響します。プーリングを使うと、こういった処理を大幅に軽減することができ、応答速度を高めることができます。
●リソースの有効利用
また、Webアプリケーションの場合、特に公開系などのシステムでは同時にアクセスするクライアント数を予測することが難しい場合が多く、クライアントからのリクエストに対して際限なくデータベース接続を行ってしまうと、サーバのリソースを圧迫したり、データベース製品の同時接続数のライセンスに違反してしまうことも考えられます。プールで接続を一括して管理することで、同時接続数に制限をつけることもでき、こういった問題を解決することができます。
接続プーリングにおけるリソースの有効利用 |
では、Webアプリケーションでは、データベースの接続プーリングをどのように実現しているのでしょうか。
初期のJDBC(1.0)では、接続プーリングの仕組みは仕様として定義されていませんでした。ですから、当時のアプリケーションサーバなどでは、データベースの接続プーリングは、各ベンダが独自に実装したクラスを使って実現されていました。そのため、プーリングを使ったアプリケーションは、ミドルウェアが変わると、その部分を修正する必要があり、ポータビリティを損なう結果になっていました。
しかし、JDBC 2.0からは標準拡張という形ではあるものの、接続プーリングの仕組みが仕様に取り入れられ、各ベンダも、その仕様にのっとった形で、接続プーリングを実装するようになってきました。現在では、J2EEにJDBCも含まれているため、J2EE準拠のアプリケーションサーバであれば、JDBCに定義された仕様で、接続プーリングが使えるようになってきているようです。
「Java Solution FAQ」 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|