8

私は、IMAPまたはPOPを介して定期的に大量の電子メールを収集し、分析(会話へのクラスタリング、重要な文の抽出など)を実行してから、Webを介して最後までビューを提示するプロジェクトに取り組んでいます。ユーザー。

メインビューは、キャプチャした電子メールからの最新(20程度)の会話の各連絡先のFacebookのようなプロファイルページになります。

私たちにとって、プロフィールページと最近の20個のアイテムを頻繁かつ迅速に取得できることが重要です。また、最近の電子メールをこのフィードに頻繁に挿入している可能性があります。このため、ドキュメントストレージとMongoDBの低コストのアトミック書き込みは非常に魅力的です。

ただし、頻繁にアクセスされない大量の古い電子メール会話もあります(最新の20項目には表示されないため、検索した場合にのみ表示されます。比較的まれです)。さらに、このデータのサイズは、時間の経過とともにコンタクトストアよりも急速に拡大します。

私が読んだところによると、MongoDBではデータセット全体をRAMに残す必要があるようです。これを回避する唯一の方法は、仮想メモリを使用することです。これにより、かなりのオーバーヘッドが発生する可能性があります。特に、Mongoが揮発性データ(プロファイル/フィード)と不揮発性データ(古い電子メール)を区別できない場合、これは非常に厄介になる可能性があります(OSへの仮想メモリの割り当てを委譲しているように見えるため、これがMongoでどのように可能になるかわかりません)。

唯一の選択肢は、(a)すべてを保存するのに十分なRAMを購入することです。これは、揮発性データには問題ありませんが、大量の電子メールをキャプチャするにはコスト効率がほとんどありません。または、(b)仮想メモリを使用して読み取りを確認することです。 /は、揮発性データへの書き込みが遅くなります。

これは正しいですか、それとも何かが足りませんか?MongoDBはこの特定の問題に適していますか?もしそうなら、構成はどのようになりますか?

4

4 に答える 4

3

MongoDBは、「データセット全体をRAMに残す必要はありませ」。仮想メモリをそのように使用する理由/方法の説明については、http://www.mongodb.org/display/DOCS/Cachingを参照してください。

このアプリケーションには問題ありません。並べ替えとフィルタリングがより複雑な場合、たとえば、Map-Reduce操作を使用して「表示可能」なコレクションを作成したい場合がありますが、単純な日付順序セットの場合、既存のインデックスは問題なく機能します。

于 2011-02-04T01:53:31.760 に答える
2

MongoDBは、mmapを使用してドキュメントを仮想メモリ(物理RAMではない)にマップします。Mongoではデータセット全体がRAMにある必要はありませんが、「ワーキングセット」をメモリに入れる必要があります(ワーキングセットはデータセット全体のサブセットである必要があります)。

大量の電子メールを仮想メモリにマッピングすることを避けたい場合は、プロファイルドキュメントに、別のコレクションに保存されている電子メールを参照するObjectIdの配列を含めることができます。

于 2011-02-04T01:49:08.637 に答える
1

@Andrew J通常、ワーキングセットを保持するのに十分なRAMが必要です。これは、RDBMSの場合と同様に、MongoDBにも当てはまります。したがって、ディスクにアクセスせずにすべてのユーザーの最後の20通の電子メールを保持したい場合は、それだけのメモリが必要です。これが単一システムのメモリを超える場合は、MongoDBのシャーディング機能を使用してデータを複数のマシンに分散し、クラスター内のマシンのメモリ、CPU、およびIO帯域幅を集約できます。

@mP MongoDBを使用すると、アプリケーション開発者は、メモリ内の単一ノードからディスク上の複数ノードまで、書き込みの耐久性を指定できます。選択は、ニーズとデータの重要度に応じて異なります。すべてのデータが同じように作成されるわけではありません。さらに、MongoDB 1.8では、-durを指定できます。これにより、すべての書き込みに対してジャーナルファイルが書き込まれます。これにより、書き込みの耐久性がさらに向上し、クラッシュが発生した場合の回復が高速化されます。

于 2011-02-04T01:31:52.550 に答える
-8

そして、もしあなたのコンピュータがモンゴがメモリに持っていたすべてのものにクラッシュした場合はどうなるでしょう。ログがないので、答えはおそらく不運だと思います。

于 2011-02-04T00:23:41.637 に答える