★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

40.2. 接続の確立

PostgreSQL は単純な「1 プロセスに 1 ユーザ」のクライアント/サーバモデルによって実装されています。 このモデルでは 1 つのサーバプロセスに対し厳密に 1 つのクライアントプロセスしか存在しません。 いくつの接続が行われるか事前にわからないので、接続要求の度に新しいプロセスを作るマスタープロセスを使わなければなりません。 このマスタープロセスは postmaster と呼ばれ、指定された TCP/IP ポートで入ってくる接続要求を監視します。 接続要求を検出すると、postmaster プロセスは postgres と呼ばれる新しいサーバプロセスを産み出します。 それぞれのサーバのタスク(postgres プロセス)はセマフォ共有メモリを活用して、同時にデータにアクセスしても整合性が保たれるようにお互いと連絡を取り合います。

クライアントプロセスは 第42章 に記載された PostgreSQL プロトコルを理解できるどんなプログラムでも構いません。 多くのクライアントは libpq C 言語ライブラリに基づいていますが、Java JDBC ドライバのようにいくつかの独立したプロトコル実装も存在します。

いったん接続が確立されると、クライアントプロセスはバックエンド(サーバ)に問い合わせを送ることができます。 問い合わせは平文で送信されます。 つまり、フロントエンド (クライアント)は構文解析を行いません。 サーバは問い合わせの構文解析を行い、実行計画を作り、そして計画を実行し、抽出した行を確立された接続を通じてクライアントに返します。