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