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