先に進む前に、PostgreSQL システム構造の基本について理解していなければなりません。PostgreSQL の各構成要素がどのように相互作用するのかを理解できれば、この章で解説していることが明らかとなります。
データベースの用語では PostgreSQL はクライアント/サーバモデルを採用しているといいます。PostgreSQL のセッションは以下に説明するような協調するプロセス(プログラム)で構成さています。
サーバプロセスとは、データベースファイルを管理し、クライアントアプリケーションからデータベースへの接続を受け付け、クライアントに代わってデータベースに対処します。データベースサーバプログラムは postmaster と呼ばれています。
ユーザがデータベース操作を行うクライアント(フロントエンド)アプリケーションとは、その性質上非常に多岐に渡っています。テキスト指向のツール、グラフィカルなアプリケーション、データベースにアクセスし web ページを表示する web サーバ、あるいはデータベースに特化した保守ツールなどがあります。 PostgreSQL の配布物には、ほとんどがユーザによって開発されたいくつかのクライアントアプリケーションが入っています。
典型的なクライアント/サーバアプリケーションにおいて、クライアントとサーバは異なったホスト上にあっても構いません。その場合、クライアントとサーバは TCP/IP ネットワーク接続で通信します。このことに注意して下さい。なぜなら、クライアントマシン上でアクセスできるファイルは、データベースサーバマシン上ではアクセスできない(または、異なるファイル名を使ってのみアクセスできる)可能性があるからです。
PostgreSQL サーバはクライアントからの複数の同時接続を取り扱うことができます。そのため、サーバは接続毎に新しいプロセスを開始("forks")します。その時点から、クライアントと新しいサーバプロセスは元のpostmaster プロセスによる干渉なしに通信を行います。ですから、postmaster は常に稼働を続けてクライアントとの接続を待ちます。一方、クライアントとそれに関連したサーバプロセスは生成されたり消滅したりします。(この過程はもちろんユーザからは見えません。ここでは単に一貫した説明をしたい目的です。)