2.2. 接続の方法

Postgresは簡単な「1プロセスに1ユーザ」の クライアント/サーバモデルを使って実装されています。このモデルでは一つの サーバプロセスに対して正確に一つの クライアントプロセスしかありません。 いくつの接続が行われるか事前にはわからないため、接続がリクエストされるた びに新しいプロセスを作るマスタープロセスを使わな ければなりません。このマスタープロセスはpostmasterと呼 ばれ、新しい接続には、指定されたTCP/IPポートを使います。接続のリクエスト があると、postmasterのプロセスはpostgres と呼ばれる新しいサーバプロセスを作ります。それぞれのサーバの タスク(postgresプロセス)はセマフォ 共有メモリを使って、同時にデータに アクセスしても整合性が保たれるようにお互いと連絡をとりあいます。 図\ref{connection}はマスタープロセスの postmaster、サーバプロセスの postgres、そして クライアントアプリケーション、3つの相互連関を表します。

クライアントプロセスはpsqlフロントエンド (対話式SQL問い合わせ用)、もしくはlibpgライブラリを 使って実装されたユーザアプリケーションのいずれかです。ecpg を使って実装されたアプリケーション(Postgres のC言語用の埋め込みSQLプリプロセッサ)もこのライブラリを 使います。

接続が確立されると、クライアントプロセスはバックエンド (サーバ) に問い合わせを送ることができます。フロントエンド (クライアント)では 解析は行われません。つまり問い合わせはプレインテキストを使って伝えられ ます。サーバは 問い合わせを解析し、実行計画を作ります。そして 計画を実行し、検索したタプルを、確立された接続からクライアントに伝えます。