KVS(キーバリューデータ)型の代表格であるGoogleのBigtableとRDBの違いは何か。

KVSの最も大きな特徴は、スケールアウトにより、容易に格納できるデータ量を増やせるということだろう。その反面、一見RDBと同じようなテーブル構造でありながら、制約を設けている。その名の通り、キーとバリュー(値)からなるレコードから校正されている。つまり、あるレコードを検索するためにはキー値でしか検索できないということである。RDBにおけるWhere条件は、どの属性に対しても書け、インデックス定義しておけばより検索スピードが上がったが、KVSではWhere句に書けるのは、キーに対する条件だけということだ。あるキーのレンジで検索して、後はAPで属性が一致するデータを検索することになる。
そういえば、昔のメインフレームでの階層型DBでは、あらかじめキーとしてDBMSに対して定義した(DBDと称した)項目についてのみ検索条件が記述できたことと同じと考えればよい。階層型では、親子関係があるときには、親レコードを特定してその配下の子レコードを取り出すというもう少し複雑な操作が必要であったが、KVSではフラットなテーブル構造のため単純ではある。当然のことながらテーブル間の結合操作はできない。キーを基にレコード単位でアクセスするというインバーテッドリスト型のDBに近いと思えば良いだろう。スケーラビリティを追及するために、アクセスメソッドは先祖帰りもやむなしということだろうか。