主な違いは、データ モデルとクエリ機能です。
キー値ストア
最初のタイプは非常に単純で、おそらくこれ以上の説明は必要ありません。
データ モデル: キーバリュー ストア以上のもの
Cassandra などのデータベースの正しい名前についてはいくつかの議論がありますが、列ファミリー ストアと呼びたいと思います。キーと値のペアは Cassandra の重要な部分ですが、それだけに限定されません。キーと値のペアをネストできるため、キーは複数のサブキーと値のペアを参照できます。
ただし、キーと値のペアを無期限にネストすることはできません。3 レベル (列ファミリー) または 4 レベルの入れ子 (スーパー列ファミリー) に制限されています。列ファミリーという用語がよくわからない場合は、WTF is a SuperColumnの記事を参照してください。これは、Cassandra のデータ モデルの適切な説明です。
CouchDB や MongoDB などのドキュメント データベースは、ドキュメント全体をJSON オブジェクトの形式で格納します。これらのオブジェクトは、ネストされたキーと値のペアと考えることができます。Cassandra とは異なり、キーと値のペアを必要なだけネストできます。JSON は配列もサポートし、文字列、数値、ブール値などのさまざまなデータ型を理解します。
クエリ
列ファミリー ストアは、キーによって、または map-reduce 関数を記述することによってのみクエリを実行できると思います。SQL データベースのように値をクエリすることはできません。アプリケーションがより複雑なクエリを必要とする場合、アプリケーションは目的のデータにアクセスするためにインデックスを作成して維持する必要があります。
ドキュメント データベースは、キーによるクエリと map-reduce 関数もサポートしていますが、「10 件以上の投稿があるすべてのユーザーを教えてください」など、値による基本的なクエリも実行できます。このように、文書データベースはより柔軟です。