Hatena::Grouppostgresql

PostgreSQL 雑記 このページをアンテナに追加 RSSフィード

2011-02-15EXTENSION in PG9.1 このエントリーを含むブックマーク このエントリーのブックマークコメント

PostgreSQL 9.1 では EXTENSION という管理単位が導入されます。PostgreSQL はユーザ定義関数やデータ型などをサポートしており拡張性に優れますが、これまではパッケージの管理単位が無かったため、関数や型を個別にインストール、管理する必要がありました。hstore モジュールをインストール / アンインストールする場合は、以下のような違いがあります。

  • 9.0以前: シェルから psql -f
$ psql -d dbname -f $PGHOME/share/contrib/hstore.sql
$ psql -d dbname -f $PGHOME/share/contrib/uninstall_hstore.sql
=# CREATE EXTENSION hstore;
=# DROP EXTENSION hstore;

以前も登録/解除用のSQLスクリプトが付属しており psql などで読み込ませれば良かったので、ただ使うだけなら、キータイプ量そのものはそんなに差は無いかもしれませんが、以下のような利点があります。移植性や運用性を考えると、なかなかに痒い所に手が届く機能と言えるでしょう。

  • pg_dump & pg_restore で適切にダンプ、リストアされる。
    • 個別のオブジェクトではなく、"CREATE EXTENSION" という文がダンプされるので、モジュールのアップデートも容易です。
    • pg_catalog 内のオブジェクトがダンプされない問題が解決されたのも textsearch_xxx 系には嬉しいところ。
  • PostgreSQLのインストール先を調べなくて済む。
    • 上記の例では $PGHOME で誤魔化しましたが、実際には環境依存で千差万別です。特に複数バージョンのPGをインストールしている開発者にとっては間違ったバージョンを使うミスも防げます。
  • シェルへのログインが不要。
    • データベースにさえログインできれば良いので、遠隔サーバや pgAdmin を使っているようなケースでも手軽にモジュールをインストールできるようになりました。

L.starL.star2011/02/16 07:32なにこのdatablade...15年の時を経てIllustraとの邂逅か。次はTimeTravel復活でよろしくお願いします。