「PostgreSQL 8.3.5 内部の概要」の版間の差分
ナビゲーションに移動
検索に移動
19行目: | 19行目: | ||
*クライアント/サーバアプリケーションでは、クライアントとサーバはホストが異なっても構いません。 | *クライアント/サーバアプリケーションでは、クライアントとサーバはホストが異なっても構いません。 | ||
− | * | + | *クライアントとサーバは[[TCP/IP]]ネットワーク接続経由で通信を行います。 |
*サーバはクライアントから複数の同時接続を取り扱うことができます。 | *サーバはクライアントから複数の同時接続を取り扱うことができます。 | ||
*サーバは接続ごとに新しいプロセスを開始("fork")します。 | *サーバは接続ごとに新しいプロセスを開始("fork")します。 |
2022年2月15日 (火) 13:46時点における最新版
目次
PostgreSQL 8.3.5 内部の概要
構造的な基本事項
http://www.postgresql.jp/document/pg835doc/html/tutorial-arch.html
PostgreSQLはクライアント/サーバモデルを使用しており、セッションは以下の協調動作するプロセス(プログラム)から構成される。
プロセス(プログラム) | 内容 |
---|---|
サーバプロセス | データベースファイルを管理し、クライアントアプリケーションからのデータベースの接続を受け付け、クライアントに代わってデータベースに対する処理を行います。データベースサーバプログラムはpostgresと呼ばれています。 |
クライアント(フロントエンド)アプリケーション | さまざまなツールがある。PostgreSQLの配布物では、いくつかのクライアントアプリケーションを用意しています。 |
- クライアント/サーバアプリケーションでは、クライアントとサーバはホストが異なっても構いません。
- クライアントとサーバはTCP/IPネットワーク接続経由で通信を行います。
- サーバはクライアントから複数の同時接続を取り扱うことができます。
- サーバは接続ごとに新しいプロセスを開始("fork")します。
問い合わせの経路
http://www.postgresql.jp/document/pg835doc/html/query-path.html
接続の確立
http://www.postgresql.jp/document/pg835doc/html/connect-estab.html
- PostgreSQLは単純な「1プロセスに1ユーザ」のクライアント/サーバモデル
- 1つのサーバプロセスに対し厳密に1つのクライアントプロセスしか存在しない
- 接続要求の度に新しいプロセスを作るマスタープロセス(postgres と呼ばれる)
構文解析過程
http://www.postgresql.jp/document/pg835doc/html/parser-stage.html
パーサ
- 構文チェックを行い正しい場合は構文解析ツリーが作られて返されます。 正しくない場合はエラーが返されます
- パーサと字句解析はlexとyaccを使用して実装されている
書き換えプロセス
- 構文解析が終わった後に入力としてパーサから戻されたツリーを書き換えプロセスが引き受け、どのテーブル、関数、そして演算子が問い合わせによって参照されているのかの判断に必要な語義翻訳を行う
- の情報を表すために作成されるデータ構造を問い合わせツリーと呼ぶ
PostgreSQLルールシステム
http://www.postgresql.jp/document/pg835doc/html/rule-system.html
© 2006 矢木浩人