データの生成速度は約1Gbpsです。現在、MongoDBをテスト中です。これは良い選択ですか?
OK、明らかにすると、データレートは10秒あたり〜1ギガバイトです。だから、20分ごとに1TBのハードドライブを充填していますか?
MongoDBは書き込み率がかなり高いですが、RAMとデータの比率が適度に低い状況で理想的に使用されます。 を少なくとものプライマリインデックスといくつかのデータと共にメモリに保存します。
私の経験では、5-10GBのデータごとに約1GBのRAMが必要です。その数を超えると、読み取りパフォーマンスが大幅に低下します。 100GBのデータに対して1GBのRAMになると、索引がRAMに収まるのを止めると、新しいデータを追加することも遅くなる可能性があります。ここ
大きなキーは、次のとおりです。
何クエリあなたが実行するために、どのようにMongoDBは、簡単にこれらのクエリを実行している作るん計画していますか?
データは非常に迅速に基本的にすべてのクエリがディスクに移動するのに十分な領域を占有します。非常に特定の索引付けとシャーディング戦略がない限り、ディスクスキャンを実行するだけです。
さらに、MongoDBは圧縮をサポートしていません。そうすれば、たくさんのディスク容量を使用することになります。
他のデータベースシステムを使用することはできますか?
圧縮されたフラットファイルはありますか? Cが重要な要件である場合、または、おそらくビッグデータマップ/ Hadoopの(私はHadoopのはJavaで書かれている知っている)
のようなシステムを軽減し、多分あなたはTokyo/Kyoto Cabinetを見てみたいですか?
EDIT:詳細
MongoDBのないサポートフルテキスト検索を行います。そんなことをするためには、他のツール(Sphinx/Solr)を見なければなりません。
インデックスを使用する目的を大きくするために、インデックスを大きくします。
あなたの数字によれば、10Mのドキュメント/ 20分または約30M /時を書いています。各ドキュメントには、インデックスエントリのために約16 +バイトが必要です。 ObjectIDの場合は12バイト、2GBファイルへのポインタの場合は4バイト、ファイルへのポインタ+パディングの場合は1バイト。
すべてのインデックスエントリが約20バイト必要で、インデックスが600MB /時間または14.4GB /日で増加しているとします。これはデフォルトの_id
インデックスです。
4日後、メインインデックスがRAMに収まらなくなり、パフォーマンスが大幅に低下します。 (これはMongoDBで十分に文書化されています)
これで、実行するクエリを特定することが重要になるでしょう。
「redis」試してみてください。http://redis.io/ – Baba