2010年9月11日土曜日

redis その1

ここ十数年, あらゆるデータ・ストレージがSQLに偏っていくのを苦々しく見ていた山田です.

80年代前半はSQLもまだ成熟していませんでしたが, リレーショナルなデータベースの理論には面白いところもありました. BSD版UNIXには, UCBで作られたIngresが付いてきましたよね. Ingresはその後, いろいろあってPostgreSQLへとつながっていくわけですが, 当時はRDBMSを本番のデータ・ストレージに使うなんてとんでもない! という (今とはまったく逆の) 雰囲気でした.

問題はリレーショナルなモデルそのものというよりは, SQLとか, 「データ中心モデリング」などという考え方にあるというのは, 後々に分かってくることです.

当時メイン・フレームやミニコンはともかく, Unixなどで何をデータ・ストレージに使っていたかというと, ファイル・システム (それ以前のファイル・システムに較べて, Unixのそれはそれなりに良くできていたのです) やBerkley DB (これはその後ライセンスが難しくなり, 使いにくかった) だったわけです. Berkley DBはいわゆるkey-value storeですね. 今はオラクルのものになってしまいましたが...

その後オブジェクトの時代になります. オブジェクトにはオブジェクトの容れ物 (OODB) があり, とても面白く, ある面では使いにくかった. その1つにGemStoneがあり, これは今vmwareに買収されて, 新しい局面を迎えています.

OODBは広く普及することはなく, ORマッパが広まっていきます. 中でもその初期に, NeXTが提供していたEOF (Enterprise Object Framework) は, 今のような, 単純にクラスと表を対応付けるだけのものとは微妙に違って, 表をオブジェクト的に活用する, (癖はあるものの) 興味深いORマッパでした.

当時は, 大量の不定型なデータを扱うようなものを作っていたので, 「全部オブジェクト・ネットワークのまま, メモリに入れとけばいいじゃん」とか, 「RDBMSったって, 巨大な表が1つだけあればいいんだよ」とか, 「所詮はみんなハッシュ表なんだから, そんなストレージを作ろうよ」とか言っては, DBAといわれる人たちに白眼視されていたわけです.

さて, 時は流れ, noSQLと言われるものがもてはやされる時代になりました. 温故知新. すべてのものをRDBMSに入れようとするアーキテクチャとか, DOAなどという馬鹿なものは消えてしまえばいいのにと心から思っている今日この頃です.

そこでRedisという, vmwareがサポートするオープン・ソースなkey-value storeが2.0になり, Grailsでもサポートされたのを機に, 何回かに分けて見ていこうと思います.

とりあえず, Grailsのプラグイン GORM for Redis のユーザ・ガイドを訳してみました.


ごく短いものですが, これを見るだけでRedis, 及びそのGrailsへの統合がおよそどのようなものか, 見当が付くと思います.

この後, Redis本体を調べつつ, プラグインのコードを読んだり, Grailsで実際的なモデルやコードを書きながら, 「表」じゃない, データ・モデルを探っていこうと思います. Redis本体に直接言及するわけではなく, 外堀から征くのがうちらしいやり方だ:-)