7

I have a MS SQL database that's used to capture bandwidth stats. We have a raw data table and to improve reporting speed at different drill-down levels we aggregate and rollup data on an hourly, daily and weekly basis to separate tables.

Would a NoSQL database such as Mongo or Raven be a good candidate for this type of application?

4

1 に答える 1

17

さまざまなNoSQLソリューションは、さまざまな用途でさまざまな問題を解決します。そのため、まず最初に、問題を調べて分析するのが最善の方法です。

  • ストレージへの書き込みが多いため、書き込み速度が重要です
  • そのデータに対して集計操作を実行し、その結果を簡単にクエリできるようにしたい
  • 少なくとも「Webアプリケーションは何百万人もの人々に本当に応答しなければならない」というような方法では、読み取り速度は物事の音からはそれほど重要ではありません。
  • 動的クエリが必要かどうかわかりません

Couch、Mongo、Ravenを非常に高レベルで一般化された方法で見てみましょう

カラス

  • 高速書き込み
  • 高速クエリ(結果整合性、事前計算、map / reduceによる集計)
  • 動的クエリは可能ですが、日付などでクエリを実行する可能性が高いため、ユースケースにはあまり適していません。

Mongo

  • 目がくらむほど高速な書き込み(私の意見では、電源がオフになるとデータが失われるため、危険です;-))
  • 読み取りが遅い(比較的)、事前計算されていないmap/reduceによる集計
  • 動的クエリはwhat_you_doですが、この種のデータで何らかのパフォーマンスが必要な場合は、おそらく列にインデックスを定義する必要があります

ソファー

  • 高速書き込み
  • 速い読み取り(事前に計算されていますが、読み取ったときにのみ更新されます(IIRC)
  • 動的クエリは不可能です。すべてmapまたはmap/reduce関数を介して事前定義されています

つまり、基本的に、この種のデータに対して動的なクエリが必要ですか?読み取り速度はあなたにとって非常に重要ですか?動的クエリが必要な場合は、RavenまたはMongoが必要になります(この種の場合、Couchはおそらくあなたが探しているものではありません)。

FWIW、私の意見ではMongoの唯一のユースケースはロギングであるため、そこに答えがあるかもしれません。

于 2011-01-20T11:55:17.907 に答える