分散キー・バリュー型データストアって要するに何?
今話題のキー・バリュー型データストア(key-value store, KVS)を調べてみたんだけど、どうも見えてこない。
- もう1つの、DBのかたち、分散Key-Valueストアとは (1/3) - @IT これ一番良いかも。なぜGoogleの検索で一番上に来ない・・
- 「キー・バリュー型データストア」開発者が大集合した夜 - 記者の眼:ITpro これはモノの紹介だけ
- peer-to-peer の方から来ました (key-value store 勉強会, February 20, 2009) これならちょっと雰囲気は掴める。
- OPC Diary: Key-Value Store(s)という流れ 難しく書くとこんな感じ?
- キー・バリュー型データストア - Float on the flow 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ストアの基礎知識