!!!PostgreSQL 8.3.5 内部の概要 [PostgreSQL 8.3.5]{{category 編集中}} !!構造的な基本事項 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 {{ref_image postgres01.jpg}} !!接続の確立 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