ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

Grain Data Storage Library

現状のYakiBikiのデータ保存はお世辞にも上手とは言えない。RDBを使っていないのはさておき、数十バイト〜数百バイトのデータを保存する為だけにファイルを一つ分消費してしまう。ブロックサイズ(2KB - 4KB)より小さなデータのファイルが大量に作成されてしまい、特に記事データのattributesファイルが大量に作成されるのが勿体なさすぎる。
また、小さな文章記事においてもやはりブロックサイズより小さなデータファイルが大量に作成される・・・まぁこちらはしょうがないと思っている。

なおかつ、マスタ系も含め、Hoge Separated Valueなフォーマットになっているため、これはこれでデータ構造の自由度が低い。要するに一度決まってしまうと後から手を入れづらくなると言うこと。カラム一つ追加するにも、移行用のスクリプトを用意しなくちゃならない。RDBも駄目。結局テーブルのスキーマに束縛されてしまう。

Googleを支える技術」を読んでいても感じたのだが、最近の風潮は「反RDB」な感じが心持ちしないでもない。つまり、Webサービスのようにましてやぽんぽん新しい機能や追加拡張が入るような仕掛けは、RDBとはソリが合わないような気がする。特にカラムを増やしたり削ったりするのがRDBだと面倒くさい。まずSQLを書かなければならないという時点で駄目だ。
かといって、カラム自体のメタ化をRDBでやってしまうとSELECTクエリやINSERT/UPDATEなどが面倒くさくなる。じゃぁXMLDBかよというところだが、XMLは今ひとつ食指が動かない。PHP4で簡単にかつ高速に扱えるのなら話は別だが(拡張書けよという論は却下。FTPでのUPしかできないようなレンタルサーバを考慮している。)。

となるともはや道は一つ。Hadoopとまでは行かなくとも、YakiBikiに特化して、RDBにおけるカラムレベルのデータを大量に保存できるライブラリを作るほか無い。

ということで、Grain(粒) Data Storage Library というようなものを作ってみることにしました。
暫くはYakiBikiのtrunkソースツリーが滅茶苦茶不安定になります。(branch切れよ)