私はCouchDBのようなドキュメント指向のデータストアについて多くのことを聞いてきました。CassandraなどのストアのようなBigTableの使用法を理解しています。この質問を読んだ後、ドキュメントストアを使用するメリットは何でしょうか。
2 に答える
BigtableやCassandraなどの列ファミリーストアのクエリ機能は非常に限られています。アプリケーションは、より複雑なデータモデルをクエリするためにインデックスを維持する責任があります。
ドキュメントデータベースを使用すると、キーだけでなくコンテンツをクエリできます。また、インデックスを管理し、アプリケーションの複雑さを軽減します。
ドメイン駆動設計は、集計と値オブジェクトの使用を広めます。Ayendeが指摘しているように、(複雑な)集計は、複数のテーブルまたは列ファミリーに正規化するのではなく、単一のドキュメントとして保存される非常に自然な候補です。これにより、永続層の複雑さが軽減されます。また、すべてのデータが1つのドキュメントに含まれているため、関連するデータが複数のノードに分散する可能性も低くなります。
アプリケーションでポリモーフィックオブジェクトを格納する必要がある場合は、ドキュメントデータベースも適しています。もちろん、これはCassandraに保存することもできますが、クエリ機能はそれほど多くありません。少なくとも箱から出してはいけません。
ドキュメントデータベースを豪華なスポーツカーと考えてください。AからBに移動するのにプロのドライバー(複雑なアプリケーションを読む)は必要ありません。エアコンや快適な座席などの機能を備えており、許容可能な時間で高スケーラビリティのトラックを周回します。ただし、拡張性の高いトラックでラップレコードを設定する場合は、プロのドライバーと、エアコンなどの機能を備えていない高度に最適化された車(Cassandraなど)が必要になります。
CouchDBのもう1つの機能は、手動で保存されたドキュメントとしてではなく、ビュー(保存されたデータから派生し、自動的に更新される)としてこれらの集計を作成できることです。
これは、パワーウィンドウ、ヒーター付きシート、またはキックステレオのようなものです。