分散キー・バリュー型データストアって要するに何?

今話題のキー・バリュー型データストア(key-value store, KVS)を調べてみたんだけど、どうも見えてこない。

んー、今ひとつ雰囲気が掴めないけど・・・

要するに
  • ハッシュ(キーと値のペア)ですべてのデータを管理するっぽい。
  • 複数台のサーバーに分散させた場合、その実データに至る経路をいかに短く導き出すか(いかにホップ数を減らすか)が課題。そこにはDHT(分散ハッシュ表)っていうのを使うみたい。
利点
  • RDBみたいにリレーションとか張らないから、データを複数台のサーバーに分散させるのが容易
  • 大量のデータから高速に検索・集計するのに適してる
  • 複数台のサーバーに分散できるため、サーバー台数に比例した高可用性を確保できる

だからクラウドコンピューティングを実現するには不可欠な技術だそうな。

欠点

トランザクションがかけられないそうな。だから同じキーに対する値がたくさんあって、それをアプリ側で集約してやらないといけないんだって。

トリビア的なもの

mixiの足跡機能もmixiお手製のTokyo Tyrantっていう分散KVSを使ってるんだって。

ずいぶん前に、リレーション張ると関連のデータを見に行って遅くなるから、Googleはリレーション張ってないって話を聞いたことがある。
他にも、価格.comはデータの高速性を重視してMySQLを選択したとか。その頃のMySQLはリレーション関係がそりゃもうかなり弱かったけど高速性に定評があった。
それと似た話なのかなぁ。

なんかパラレルケーブルがシリアルケーブルになったり、SCSIが廃れてUSBが台頭してきたのと似てる気がする。気のせい?

余談。
O(log n)とか懐かしい。

2009/11/11追記

そんなキーバリュー型データストア利用のデータベース一覧をリストアップした記事を見つけたので、リンクしておくよ。

2010/1/27追記

ウマい解説記事を見つけたので、こっちもリンクしちゃうよー。
key-valueストアの基礎知識