Voldemort(DB)では、読込専用のストア(テーブル)を作ることが出来る。
で、そのストア用のデータは、Hadoopを使って作成する。
このデータ作成の実験に先週は失敗した(Voldemortに負けた)が、やっと上手くいった。
要するにVoldemort起動シェル(voldemort-server.sh)で組み込んでいるHadoopのバージョン(0.18)と実際に稼動していたHadoopのバージョン(0.20)が異なっていたのがいけなかったらしい。
コンパイル時点ならまだしも、実行時に違ってちゃ、確かにダメかもしれない…(苦笑)
(publicメソッドやクラスの増減のことを考えると、コンパイル時点でもバージョンを合わせるべきではある)
DBがどの言語で実装されているかなんて、基本的にはどうでもいいはずだけど、何か障害があった時には知ってる言語(見るのに慣れている言語・環境)でないと調査しづらい面があるんだな~という事を改めて認識。
ところでVoldemortの身辺調査をしていてちょっと見えてきたのは、
Voldemortは上から下まで自分で全部やっている(DBとして全部作りこんでいる)というわけではなく、足元は他人に任せてフロントエンド(前面)に力を入れている感じ。
つまりバックエンドで各ノード(コンピューター)上に実際にデータを保存するにはBerkeleyDBやMySQLといった既存のRDBを利用、あるいはメモリー上にキャッシュするといった方法をとる。
フロントエンドとしてKVSをネットワーク上に分散させたり、読込専用ストアを定義してみたりといった機能をVoldemort自身が提供している。
CassandraやHBaseがファイルシステムへのアクセスも(一応)自分でやっているのとは対照的な考え方で、興味深い。
ただし、デメリットとしてはVoldemort以外の設定も熟知しないとスケールする設定には出来ない点です。デフォルトでも永続化層はBDBを使うのですが、その設定も熟知していないとスケールメリットが得られにくいのです。
でも逆にBDBやMySQLに詳しい人にとっては、活躍の場があって嬉しいかもしれませんね(笑)