Chapter 12. SQLの拡張: 概略

Table of Contents
12.1. 拡張の作用法
12.2. Postgresの型システム
12.3. Postgresシステムカタログについて

あとに続くセクションでは、PostgresSQL問い合わせ言語に、下記を追加することで どのように拡張できるかを説明します。

12.1. 拡張の作用法

Postgresは演算がカタログで駆動されているため 拡張が可能です。もし標準のリレーショナルシステムに親しんでいる方なら、 システムカタログと呼ばれるものの中に、データベース、テーブル、コラム、などの情報 が格納されていることをご存知でしょう。(システムによってはこれをデータ辞書と呼ぶものも あります。)このカタログはユーザの目には他のテーブルと同じように移りますが、 DBMS がその内部情報をそこに格納しているのです。Postgres と標準のリレーショナルシステムの重要な違いは、Postgres はカタログにより多くの情報を格納するということです。テーブルとカラムに関する情報 だけではなく、型、関数、アクセスメソッド、等も格納されています。これらのテーブルは ユーザが変更できます。そして、Postgresは内部演算をこれらの テーブルに基づいて行うので、Postgresはユーザによって拡張 されることができるのです。比べると、一般のデータベースシステムはDBMS 内のハードコーディングされたプロシージャを変えるか、DBMSによって 特別に書かれたモジュールをロードしなければ拡張することができません。

Postgresが他のデータマネージャと違うのは、サーバが動的 ローディングによってユーザの書いたコードを取り入れられることです。つまり、ユーザが 新しい型か関数を実装するオブジェクトコードファイル(例:コンパイルされた.o ファイルか 共有ライブラリ)を指定することができ、Postgresが要求 された通りにロードするのです。SQLで書かれたコードをサーバに 追加するのは更に簡単です。このように演算を簡単に変えることができるため Postgresは新しいアプリケーションや格納構造体の迅速な プロトタイプに適しています。