1

Mongo は mapreduce 機能で優れたパフォーマンスを発揮するといつも思っていましたが、今ではその実装が遅いと読んでいます。では、ベンチマークに代わるものを選ぶ必要があるとしたら、それは何にすべきでしょうか?

私のソフトウェアは、ユーザーが数百万のレコードを持つことが多く、数万または数十万の予測不可能なサブセットを並べ替えたり処理したりするようなものになります。数百万のレコードをすべて使用するデータの分析のほとんどは、要約テーブルなどで実行できます。私は当初、Hypertable が実行可能な代替手段であると考えていましたが、調査を行っていると、彼らのドキュメントで、Mongo がよりパフォーマンスの高いオプションであり、Hypertable には他の利点があると言及されているのを見ました。しかし、私のアプリケーションの速度は、私の最優先事項です。

4

1 に答える 1

1

まず第一に、何が「十分に速い」かを決定することが重要です。間違いなく、MongoDBのmap / reduceよりも高速なソリューションがありますが、ほとんどの場合、大幅に高い開発コストを検討している可能性があります。

つまり、MongoDBのmap / reduceは、執筆時点では単一のスレッドで実行されます。つまり、MongoDBで使用可能なすべてのCPUを利用するわけではありません。また、MongoDBにはネイティブアグリゲーション機能がほとんどありません。これはバージョン2.1以降で修正され、パフォーマンスが向上するはずです(https://jira.mongodb.org/browse/SERVER-447およびhttp://www.slideshare.net/cwestin63/mongodb-aggregation-mongosf-mayを参照) -2011)。

さて、MongoDBが得意なのは、特に読み取りに関しては、簡単にスケールアップできることです。そして、これは重要です。なぜなら、大規模なデータセットでの数の処理に最適なソリューションは、Augustoが提案したようなmap/reduceクラウドであることは間違いないからです。MongoDBが必要なデータを高速で利用できるようにする間、そのようなm/rに数値計算を実行させます。データベースクエリのスループットが低すぎる場合は、mongoシャードを追加することで簡単に解決できます。m / rボックスを追加することで、数値の処理/集計のパフォーマンスが遅すぎることが解決されます。基本的に、パフォーマンスは、問題のために予約したインスタンスの数、つまりコストの関数になります。

于 2011-06-27T08:25:24.573 に答える