さまざまなNoSQLソリューションは、さまざまな用途でさまざまな問題を解決します。そのため、最初に行うべき最善のことは、問題を調べて分析することです。
- あなたは重く書いています ストレージに対して、したがって書き込み速度はあなたにとって重要です
- そのデータに対して集計操作を実行し、その結果を簡単にクエリできるようにしたい
- 読み取り速度は、物事の音からはそれほど重要ではありません。少なくとも、「Webアプリケーションは、何百万人もの人々に本当に応答する必要がある」ような方法では重要ではありません。
- 動的クエリが必要かどうかわかりません
Couch、Mongo、Ravenを非常に高レベルで一般化された方法で見てみましょう
レイヴン
- 高速書き込み
- 高速クエリ(結果整合性、事前計算、map / reduceによる集計)
- 動的クエリは可能ですが、日付などでクエリを実行する可能性が高いため、ユースケースにはあまり適していません。
モンゴ
- 目がくらむほど高速な書き込み(私の意見では、電源がオフになるとデータが失われるため、危険です;-))
- 読み取りが遅く(比較的)、事前計算されていない、map/reduceによる集計
- 動的クエリはwhat_you_doですが、この種のデータで何らかのパフォーマンスが必要な場合は、おそらく列にインデックスを定義する必要があります
ソファ
- 高速書き込み
- 高速な読み取り(事前に計算されていますが、読み取り時にのみ更新されます(IIRC)
- 動的クエリは不可能です。すべてmapまたはmap/reduce関数を介して事前定義されています
つまり、基本的に、この種のデータに対して動的なクエリが必要ですか?読み取り速度はあなたにとって非常に重要ですか?動的クエリが必要な場合は、RavenまたはMongoが必要になります(この種の場合、Couchはおそらくあなたが探しているものではありません)。
FWIW、私の意見ではMongoの唯一のユースケースはロギングであるため、そこに答えがあるかもしれません。