私は両方の世界であなたの質問に適切かつ完全に答えるのに十分な経験を持っていないと感じていますが、私はしばらくの間ドキュメントデータベースを使用しており、ここにいくつかの個人的なヒントがあります。
ドキュメントデータベースは、キー、値、および静的ビューの概念に基づいており、特定の値を持つドキュメントのセットを見つけるのに非常に便利です。
それらは、ドキュメント間の関係を概念化するものではありません。
したがって、ソフトウェアが高度な「クエリ」を提供する必要があり、選択基準が複数の「タイプのドキュメント」に作用する場合、または単に複数の要素を使用して選択を実行する必要がある場合、[key、value]の概念は適切ではありません。
ドキュメントデータベースが不適切な場合も他にもたくさんあります。「ページングされた」テーブルに大きなデータセットを表示し、複数の列で並べ替えることができるのは、パフォーマンスが低く、ディスク領域の使用量が多い場合の1つです。
そのため、多くの場合、ピースを取得するために「サーバー側」の処理を実行する必要があります。レールやその他のRubyベースのフレームワークでは、パフォーマンスの問題が発生する可能性があります。
グラフデータベースはトリプルストアの概念に基づいています。つまり、エンティティ間の関係も概念化されています。
グラフは、リレーション(およびエンティティの役割)を使用してトラバースでき、リレーション構造のデータ全体で検索を実行する場合に便利な場合があります。
私はグラフデータベースの経験がないので、グラフデータベースがいくつかの基準で簡単にクエリ/トラバースできるかどうかはわかりませんが、アドバイスを受けた読者がそのような情報を持っている場合は、そのようなクエリ/トラバーサルの例を本当に感謝します。
私は現在InfoGridについて読んでおり、関係を含む非常に大量のデータセットに対して複雑な要求を実行するためにそのようなデータベースが便利であるかどうかを理解しようとしています...。
私が読むことができることから、InfoGrahは、MongoなどのNoSQLデータベースでもある複数のソース(ストア)からのデータを検索/マイニングできる「データフェデレーター」と見なす必要があります。
Wichは、更新にmongoストアを使用し、データ検索にInfoGraphを使用でき、 nosqlデータベース内の複雑な検索に関しては多くのCPUとディスクを節約できることを意味します。
もちろん、アプリが巨大なバイナリファイルの大規模なセットをデータベースに保存するだけで、単純なキークエリを実行して結果を取得するだけの場合は、少し「やり過ぎ」に見えるかもしれません。その場合、mongoやcouchなどのnosqlデータベースがおそらく便利です。
これのいくつかが役立つことを願っています;)