SQL の拡張

PostgreSQL 8.0.0 文書
前のページ | 巻戻し |  | 早送り | 次のページ

# 第 31章SQL の拡張

本節では、PostgreSQLのSQL問い合わせ言語を、以下のようなもの追加することで、どのように拡張できるかを説明します。

- 関数。(項31.3から)

- 集約。(項31.10から)

- データ型。(項31.11から)

- 演算子。(項31.12から)

- インデックス用演算子クラス。(項31.14から)

# 31.1. 拡張の作用法

PostgreSQLは、自分自身の操作がカタログに定義された方法で駆動されているため拡張が可能です。 もし標準のリレーショナルデータベースシステムに慣れ親しんでいるのであれば、システムカタログと呼ばれるものの中に、データベース、テーブル、列などの情報が格納されていることは知っていると思います。 （システムによってはデータディクショナリと呼ぶものもあります。） このカタログは、ユーザの目には他のテーブルと同じように見えますが、DBMSは内部情報をそこに格納しているのです。 PostgreSQLと標準のリレーショナルデータベースシステムの重要な違いは、PostgreSQLはカタログにより多くの情報を格納するということです。 テーブルと列に関する情報だけではなく、データ型、関数、アクセスメソッドなどの情報も格納されています。 これらのテーブルはユーザが変更できます。 そして、PostgreSQLは操作をこれらのテーブルに基づいて行うので、PostgreSQLはユーザによって拡張することができるのです。 それに対して一般のデータベースシステムでは、ソースコード内にハードコーディングされたプロシージャを変えるか、DBMSベンダによって特別に書かれたモジュールをロードしなければ拡張することができません。

更にPostgreSQLサーバは動的ローディングによってユーザの作成したコードを取り入れることができます。 つまり、ユーザが新しい型か関数を実装するオブジェクトコードファイル（例えば共有ライブラリ）を指定することができ、PostgreSQLは要求された通りにロードするのです。 SQLで作成されたコードをサーバに追加するのは更に簡単です。 このように演算を"その場で"変えることができるためPostgreSQLは新しいアプリケーションや格納構造体のラピットプロトタイピングに適しています。

前のページ | ホーム | 次のページ
サーバプログラミング | 上に戻る | PostgreSQLの型システム