パスワードを忘れた? アカウント作成
691764 journal

Oliverの日記: PostgreSQLと配列とRuby's DBD::Pg 1

日記 by Oliver

研究実習としてRuby用の汎用オブジェクトリポジトリを実装しているのは何度かこれまでも書いた。とうぜん、配列を属性に持つクラスも少なくなく格納しなければいけない。RDBMS的基本としては、別テーブルに格納してJOINして読み出すわけだが、これはあまり効率が良くない。まず、動的にテーブルを作るので、どのテーブルに格納されているか読まなければいけない。次に別クエリーーかJOINでそのテーブルからデータを読む。キャッシュを別にすれば2クエリー(含むJOIN一回)とタブリのフィルタもしくは3クエリーが単一のオブジェクトの読みだしに必要となる。そこで、SQL99では任意の型の配列型が利用可能になった。PostgreSQLもサポートしている。
が、RubyのDBI用のPostgreSQLドライバDBD::Pgがこれに対応してなかった。普段はちゃんとDBの値をRubyの型に変換して返してくれるのだが、配列だと不明な型として、配列エスケープしてある文字列として帰ってくる。MLにこれのパーズを実装を書いた人がいないか聞いたみたが返答なし。だれもRDBMSで配列は使ってないらしい。
ということで自分で書いた。途中でDBD::Pgが型情報をDBから読むコードでのバグ (たまたま正しく動いてた)も見つけた。もっと利用者がいるに違いないPerlのDBD::Pgにもない機能だし、PostgreSQL付属のJDBCドライバは次元が多いと例外を出してしまう。うちのはちゃんと多次元にも対応してる。自分にちょっと満足。mergeしてもらえるといいな。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2003年02月12日 5時59分 (#256702)
    ruby-listのオリバーさんはやっぱりオリバーさんだったのか。

    #小物なのでAC
typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...