理系学生日記

おまえはいつまで学生気分なのか

PoEAA: Serialized LOB

今日は Serialized LOB。

あんまり珍しくないパターンが多かったけど、このパターンには思い出があって、どうやったって仕様が固まらないけど開発だけは進めないといけなかった某サービス開発のときに使った(邪道です)。

Serialized LOB は、言ってみれば複雑な構造を持ちデータベースとマッピングしづらいデータを、プログラムの方でシリアライズしてデータベースの 1 カラムに突っ込むというパターンです。 本の中ではシリアライズの形式として XML が例示されていますが、今だったら JSON とかを使うんでしょうね。

http://qiita.com/tq_jappy/items/d2cd838e4149f019e391

便利ではあるんですけど、厄介なのはシリアライズし DB に叩き込んだデータは一般に SQL のクエリで検索キーにできない(しづらい)点です。最近(?)は Postgresql の JSON サポートとか、Oracle の XML DB とか、色々と RDB 側のサポートもありますね。ぼく自身は使ったことありませんが。 このため、Serialized LOB はトランザクションとしての「記録」には使えるけれども、その後、それらを使ってのデータ抽出なんかは厳しいと思います。