PostgreSQLは「1プロセスに1ユーザ」のクライアント/サーバモデルを実装しています。 このモデルでは、各クライアントプロセスは厳密に1つのバックエンドプロセスに接続します。 いくつの接続が行われるか事前にわからないので、接続要求の度に新しいバックエンドプロセスを作る「スーパーバイザプロセス」を使わなければなりません。 このスーパーバイザプロセスはpostmasterと呼ばれ、指定されたTCP/IPポートで入ってくる接続要求を監視します。 接続要求を検出すると、新しいバックエンドプロセスを生み出します。 このバックエンドプロセスはセマフォと共有メモリを活用してお互いに連絡を取り合い、instanceの他のプロセスと通信し、同時にデータにアクセスしても整合性が保たれるようにします。
クライアントプロセスは第53章に記載されたPostgreSQLプロトコルを理解できるどんなプログラムでも構いません。 多くのクライアントはlibpq C言語ライブラリに基づいていますが、Java JDBCドライバのようにいくつかの独立したプロトコル実装も存在します。
いったん接続が確立されると、クライアントプロセスは接続されたバックエンドプロセスに問い合わせを送ることができます。 問い合わせは平文で送信されます。 つまり、クライアントでは構文解析を行いません。 バックエンドプロセスは問い合わせの構文解析を行い、実行計画を作り、そして計画を実行し、抽出した行を確立された接続を通じてクライアントに返します。