[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

コネクションプーリング (connection pooling)

pointこの用語のポイント

point最初から接続した状態を用意しておくよ

point使いたい人には、接続した状態を貸し出すよ

point接続にかかる負担を軽減するための仕組みだよ

スポンサーリンク

簡単に書くよ

コネクションプーリング (connection pooling)とは

ゲストカード貸出型接続方式のこと。
もう少し真面目に書くと

接続した状態を最初からいくつか用意しておいて、何か用事がある人にはその接続を貸してあげることで、いちいち接続する手間を軽減する機能のこと
です。

image piyo

詳しく書くよ

※このページの説明は「コネクションプール」の説明と同じです。既に「コネクションプール」の説明をご覧になった方は、読んでも意味が無いと思います。

あらかじめ接続した状態を用意しておいて、それを貸し出すことで使うときに接続する手間を減らす機能が「コネクションプーリング」です。

……と、いきなり言われても、分かりませんよね。
そもそも「接続した状態」ってなんだよ!と思う方もいるでしょう。

大丈夫です。
順番に見ていきましょう。

ここにピヨ太君の所有するぴよぴよビルがあります。

コネクションプーリング

ぴよぴよビルはセキュリティばっちりです。
ビルの中を移動するときは身分証明書代わりのカードが必要です。
ピッってやることで、はじめてドアが開きます。

カードは、入口のところにいる警備員さんに身分証明書を見せると作ってもらえます。
意外と警備はザルです。
身分証明書さえ見せれば、あっさり作ってくれます。
これでフロアの中の移動は自由です。

ただし、カードの持ち出しはできません。
ビルから出るときは警備員さんに返すことになります。

そして、それで終わりです。
過去にカードを作ったことがあっても関係ありません。
もう一度ビルに入りたくなったら、再び身分証明書を見せてカードを作ってもらう必要があります。

セキュリティ的には安全ですが、少し面倒くさいですね。
利用者の皆様方から「出入りするのに時間が掛かってイヤなんですけどー!」と苦情が出ました。
警備員さんからも「ぶっちゃけ、カードを作るのが面倒くさいっすよー」と泣きが入りました。

ですが、実際問題、カードは必要です。
カードがないとドアが開きません。
ビル内の移動ができないです。

ピヨ太君は考えます。
足りない頭を必死に絞って考えます。
頭から煙が出るくらい考えました。

そして、ついに閃いたのです。

ピヨ太君は言いました。

「よし、ゲストカードを作ろう!」

ピヨ太君は警備員さんに依頼して、5枚のゲストカードを作りました。
ビルに入りたい人には、このゲストカードを貸し出すことにしたのです。
ゲストカードの管理は警備員が行います。

これでビルに入りたい人は、身分証明書を見せたりなんだりの手続きがなくなって楽になりました。
警備員さんもカードを作成する手間がなくなりました。
ゲストカードが紛失しないように管理すれば、それで十分です。

残念ながら、その分の弊害も出ましたけどね。
例えば、ゲストカードは5枚しかありません。
ですから、5枚とも貸し出されているときはビルに入れません。
誰かがゲストカードを返却してくれるまで、6人目は待つ必要があります。

えっ?
ゲストカードをもっと増やせ?

確かにゲストカードの数を増やせば解決する問題ではあります。
ですが、今度は警備員さんがゲストカードを管理する手間が増えてしまいます。

ビルに入りたい人には喜んでもらいたいけど警備員さんたちに必要以上の負担を掛けたくもない。
ピヨ太君としては中々に悩ましいところですね。

弊害はともかくとして、このようなゲストカード貸出方式で接続させるやり方がコネクションプーリングです。
必要なもの(ゲストカード、接続した状態)をあらかじめ用意しておいて、それを貸し出すことで、負荷(カード作成の手続き、接続処理)を軽減するための仕組みです。

もう少しコンピュータに近い例も見てみましょう。
今度はデータベースさんに登場してもらいます。

コネクションプーリング2

データベースを利用するときは、データベースに接続します。

コネクションプーリング3

使い終わったら切断します。

コネクションプーリング4

……これだと少しイメージしにくいですね。
言い方を変えましょう。

データベースを利用するときは、データベースの壁に穴を開けます。

コネクションプーリング5

穴を開けたら、穴から壁の向こうに、つまりデータベースの中に上半身を突っ込んであれやこれと作業をします。

データベースを使い終わったら、上半身を穴から出します。
その後、開いていた穴を閉じます。

コネクションプーリング6

これがデータベース接続の一般的な流れです。

ただし、壁に穴を開けたり閉じたりするのは結構大変です。
接続するという行為には、それなりの負荷がかかるのです。

そこで、あらかじめ壁に、いくつかの穴を開けておく方法が生み出されました。

コネクションプーリング7

壁には最初から穴が開いています。
ということは、いきなり上半身を突っ込めますね。
接続する際の手間(穴を開ける行為)を省けます。

コネクションプーリング8

使い終わったら穴から上半身を引っこ抜きます。
ただし穴は塞ぎません。
開いた状態で残します。

コネクションプーリング9

このようなやり方にすれば、穴を開けたり塞いだりする手間が軽減されます。
また、穴は使いまわします。
「同時に」使う人の数が穴の数を超えなければ、使う人が多くなっても問題ありません。

このようなやり方・仕組み・機能がコネクションプーリングです。
コネクション(接続)をプール(蓄える)することで、接続に関する負荷を軽減する狙いです。

穴の数には限りがあるので、穴の数より使いたい人の数が多くなったら順番待ちが発生しますけどね。
実際には条件次第でデメリットもあったりします。
細かいことは専門的に解説しているところで情報を補完してください。

image piyo2

一言でまとめるよ

まぁ「コネクションプーリング」って単語が出てきたら「接続した状態を用意しておいて、それを貸し出しますよ機能なんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク