分散KVS記事へのコメントへのコメント
ずいぶん前の話ですが、@ITの記事「もう1つの、DBのかたち、分散Key-Valueストアとは」のはてなブックマークに以下のようなコメントをいただいていました:
kuenishiさん:
"マジレスするとCouchDBもTTもKVSかもだけど分散ではない。レプリケーションするのを分散だというならOracleだってMySQLだって分散DBかと。BigTableはKVSじゃないでしょ。memcachedとOracleRACを比べてるのも変だし。"
これについてコメントさせていただきます。まず、
CouchDBもTTもKVSかもだけど分散ではない。
ですが、これはおっしゃるとおりで、「分散」KVSというくくりでCouchDBとTTを紹介したのは記事として適切ではありませんでした。TTはむしろ集約指向って感じですし。
レプリケーションするのを分散だというならOracleだってMySQLだって分散DBかと。
本記事では別にそれらのDBが分散DBではないとは言ってません。問題は、OracleやMySQLレプリケーション(とりわけマルチマスター)のスケーラビリティはいずれ(数10ノード程度で)頭打ちになるという点で、その理由は「リレーショナルモデルそのものが分散アプリの構築を阻んでいる」という趣旨です。
BigTableはKVSじゃないでしょ。
Bigtableは「行キー+列キー+タイムスタンプ」からなるキーと値のペア保持するデータストアです。分散KVSに関してよく紹介されるこのページでもBigtableそのものやBigtableのデータモデルに基づく分散KVS実装がいくつかリストアップされています。
memcachedとOracleRACを比べてるのも変だし。
OracleRACのスケーラビリティのキモは、Global Cache Service/Cache Fusionによる分散キャッシュです。memcachedも、おもな使われ方としては「複数のサーバー上でmemcachedのキャッシュを分散配置してDB内容をキャッシュする分散キャッシュを構成する」ために用いられています。つまりRACもmemcachedも、「スケールしないRDBをスケールさせるための分散キャッシュ」という側面でこの記事では同列に扱っています(もちろんRACは分散キャッシュ以外にもフェイルオーバー等のたくさんの機能があって、分散キャッシュだけがRACの価値ではありませんが、商用RDBの代表的な分散キャッシュ実装であることは間違いありません)。