[PostgreSQL] 8.1の強化点:最大値・最小値・CSV・置換など

久しぶりにPostgreSQLを触っているので、改めてPostgreSQL 8.0.4から8.1の変更点を見直すと
期待していた機能がいろいろと実装されているのに気づきました。(今さらメモ)

  • REINDEX DATABASEがデータベース内のすべてのインデックスの再作成を行うようになりました。(Tom)
    これまでは、REINDEX DATABASEはシステムテーブルのみのインデックスを再作成しました。
    この新しい動作の方がより直感的です。新しいREINDEX SYSTEMコマンドが、システムテーブルのみの
    インデックス再作成という以前の機能を提供します。
  • initdbがpostgres新しい標準データベースを作成するようになりました。このためユーティリティが
    標準を検索する時にtemplate1ではなくpostgresを使用するように変更されました。(Dave)
  • COPY CSVモードにおける復帰コード、改行コードの処理が適切になりました。(Andrew)
    8.0リリースでは、CSV COPY TOにおける復帰コードと改行コードは一貫性のある方法で
    処理されていませんでした。(これはTODOリストに記載されていました。)
  • COPYにて、先頭行にヘッダ行を記載できるようにCOPY WITH CSV HEADERを追加しました。(Andrew)
    これにより、データファイルの先頭行に列名を記載するという一般的なCSVの使用方法を
    扱うことができます。 COPY TOでは先頭行には列名が記載され、 COPY FROMでは先頭行は
    無視されます。
  • GREATEST()およびLEAST()可変長引数関数を追加しました。(Pavel Stehule)
    これらの関数は可変数の引数を取り、引数の中で最大もしくは最小の値を返します。
  • regexp_replace()を追加しました。 (Atsushi Ogawa)
    これによりsedのように正規表現による置換を行うことができます。省略可能なフラグ引数により、
    全領域の選択(全置換)や大文字小文字の区別モードを指定することができます。


greatest() least() は特に欲しかった機能です。最大値・最小値を取り出すために、
冗長な SQL 文を書いたり、SQL の後処理を書くのはあまり嬉しくなかったので。
select greatest(col1,col2,col3) from table1;

COPY WITH CSV HEADER もかなり有難いですね。
タブ区切りファイル(TSV)より CSV を使うことは多いです。
\encoding SJIS
\copy tbl_zip_raw from KEN_ALL.CSV with csv
\encoding UTF8
select * from tbl_zip_raw limit 10;

regexp_replace() 関数も待望でした。
従来は、文字列置換するために、わざわざ Perl を経由させることもあった。
update tbl_zip_raw set areakana = regexp_replace(areakana,'\\(.*\\)','') where areakana ~ '\\(.*\\)';


////

PostgreSQL は 6.5.3 時代からの付き合いですが、7.3くらいで知識が止まってました。
あとは、クラスタリング関係の強化も期待したいところ。pgpool とか PostgresForest とか。
例えば、もっと低レベルな仕組みで、WAL の内容をネットワーク経由で即時ミラーリングして
参照専用のデータベース(更新は無視される)を作れたりしないのだろうか?

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

なるほど(納得、参考になった、ヘー)

この記事へのコメント

永安@JPUG
2006年12月20日 13:12
今さらなコメントですいません。

> WAL の内容をネットワーク経由で即時ミラーリングして

ご存知かもしれませんが、これは8.2からはできるようになりましたね。前回のユーザ会の勉強会はこれがネタでした。

http://www.postgresql.jp/blog/7b2c4e8c56de52c95f374f1a300171214e8b7d424e86

私のThinkPadにはSolarisの仮想化を使って環境構築してあって、いつでもデモ可です。必要とあればご用命ください(笑)。実は明日社内でもデモ予定です。
永安@JPUG
2006年12月20日 21:12
あ、すいません。
「WALの転送でレプリケーション」はできるようになりましたが、
あくまで active-standby 構成でした。
参照専用DBというのはちょっと難しいかもしれません。Slonyを使うとか?

この記事へのトラックバック