先に進む前に、PostgreSQLシステム構成の基礎を理解すべきです。 PostgreSQLの各部分がどのように相互作用しているかを理解することにより、本章の内容がわかりやすくなります。
データベースの用語で言うと、PostgreSQLはクライアント/サーバモデルを使用しています。 PostgreSQLのセッションは以下の協調動作するプロセス(プログラム)から構成されます。
サーバプロセス。
これは、データベースファイルを管理し、クライアントアプリケーションからのデータベースの接続を受け付け、クライアントに代わってデータベースに対する処理を行います。
データベースサーバプログラムはpostgres
と呼ばれています。
ユーザの、データベース操作を行うクライアント(フロントエンド)アプリケーション。 クライアントアプリケーションはその性質上非常に多様性があります。 テキスト指向のツール、グラフィカルなアプリケーション、データベースにアクセスしWebページを表示するWebサーバ、あるいはデータベースに特化した保守ツールなどがあります。 いくつかのクライアントアプリケーションがPostgreSQLの配布物に同梱されていますが、ほとんどのクライアントアプリケーションはユーザによって開発されます。
クライアント/サーバアプリケーションでは典型的なことですが、クライアントとサーバはホストが異なっても構いません。 その場合、クライアントとサーバはTCP/IPネットワーク接続経由で通信を行います。 このことには注意してください。 なぜなら、クライアントマシンからアクセスできるファイルは、データベースサーバマシンではアクセスできない(または、異なるファイル名でアクセスできるだけである)可能性があるからです。
PostgreSQLサーバはクライアントから複数の同時接続を取り扱うことができます。
これを達成するため、サーバは接続ごとに新しいプロセスを開始(「fork」)します。
その時点から、クライアントと新しいサーバプロセスは元のpostgres
プロセスによる干渉がない状態で通信を行います。
こうして、スーパーバイザサーバプロセスは常に稼働してクライアントからの接続を待ち続け、一方で、クライアントからの接続と関連するサーバプロセスの起動が行われます。
(もちろんこれは全てユーザからはわかりません。完全性を目的として説明しているだけのことです。)