2

さて、私はNoSQLデータベースについて少し調査を行ってきましたが、それらは私が必要としているものに適したオプションのようです。ただし、問題は、これらのデータベースの多くが、ディスクではなくRAMに対して読み取り/書き込みを行っていることです。これは、サーバーリソースが十分にある場合や、大量のデータブロックが予想されない場合に最適ですが、最悪の事態に備える必要があると思います。

これらのデータソースから受け取ることを期待しているのは、クエリごとに25KBから150KBの範囲で、単一のキー値の場合は最大150KBです。平均的なユーザーは、これらのキーを500から5000の範囲で生成し、無限に成長する可能性があります(ただし、おそらくその5000の範囲のどこかで停止します)。すばやく計算すると(ほとんどのデータは25〜150の上限にあるため、「平均」として100KBを使用します。ほとんどのユーザーは、おそらく2000〜3000のクエリを生成します):100KB*3000-つまりユーザーあたり300MB!あなたがまともなユーザーベースを取得し始めたときの非常識な量のデータ。したがって、最終的には、クエリ内のほとんどのデータを破棄して1KB程度を超えないようにしますが、それでもほとんどのRAM機能をはるかに上回ります。

ですから、私が探しているのは、データをディスクに保存し、オブジェクトをRAMにキャッシュするソリューションだと思います。しかし、私はすべてのソリューションを受け入れています。皆さんの考えを教えてください。私はこのことを速く実行し続けたいです...

編集:

通行人に役立つように少し違った言い方をします。

パフォーマンスを最大化することを検討しているが、NoSQLデータベースで大量のデータを処理する場合、推奨されるNoSQLデータベースは何でしょうか。データをディスクに保存するものだと思いますが、パフォーマンスが大幅に低下する可能性があります。そこに「両方の長所」の解決策はありますか?これらのレコードは、送信された後は変更されず、から読み取られるだけであることに注意することが重要です(ただし、それほど頻繁ではない可能性があります)。

管理が非常にクリーンに見えるため、このようなタスクについてRedisを調べていますが、完全にRAMで実行されるため、小さなデータブロック、または複数のインスタンスを同時に実行する複数のサーバーが必要です。これは私が行っていないことです。にアクセスできます。

4

1 に答える 1

1

まず第一に、データを RAM に格納するのを見たことがあると言うとき、Redis や Memcached のようなメモリ内のキー/値データ ストアについて言及していると思います。しかし、それだけではありません。インメモリ NoSQL オプションに関する議論を締めくくる前に、あなたが正しいと言わなければなりません。メモリは非常に簡単にいっぱいになり、要件から判断すると、大量のメモリが必要になります。したがって、メモリ内オプションは破棄する必要があります (役に立たないわけではありませんが、この特定の状況ではそうではありません)。

私の提案はMongoDbです。必要なことを行います: ディスクにデータを保存し、メモリ内にデータをキャッシュします (可能な限り)。ただし、データ スループットのニーズに対応できるように、いくつかの強力なデータ ストレージ オプションが必要です (SSD を検討する必要があります)。私は Mongo をテストしましたが、データははるかに少なくなっています。値のサイズが 5Kb から 50Kb の 100 万を超える要素コレクションを探していました。

私は主に読み取り速度に興味がありました。私がテストした書き込み速度についても言及する必要がありますが、それらは印象的であると言わざるを得ません. 数分で 100 万の 20Kb 挿入 (クアッド コア、8 GB の RAM、VMware VM の小さなサーバー上)。

読み取り速度に戻ると、約 100 人の同時ユーザーに対して 50 ミリ秒未満の読み取り時間を実現するセミコンカレント クエリを探していました。

MongoDb チームの助けを借りて、私はなんとかその時間に近づくことができましたが、その後別のことに取り掛かり、研究を中止しなければなりませんでした (一時的に、すぐに再開したいと考えています)。集計、マップ/リデュースなどの速度など、調査すべき点ははるかに多くあります。サーバーでのクエリ時間は非常に高速であり、すべてのオーバーヘッドは BSON シリアライゼーション/デシリアライゼーションとネットワーク経由のトランスポートによって追加されたと言えます。

そのため、Mongo が適切ですが、優れたハードウェアでバックアップする必要があります。実際にインストールして、特定の状況でテストし、独自のテストから結論を引き出す必要があります。

それを行うつもりで、クラ​​イアントが .NET の場合は、公式のドライバーを使用する必要があります。それ以外の場合は、ここにリストされている他のものがたくさんあります: http://www.mongodb.org/display/DOCS/Drivers

Mongo の機能の紹介とその使用方法については、http: //www.mongodb.org/display/DOCS/Developer+Zone を参照してください。確かに、彼らのドキュメントは RavenDb (私がテストした別の NOSQL ソリューションですが、それほど高速ではありません) のドキュメントほど良くはありませんが、ここまたは Google グループで適切なサポートを受けることができます。

于 2012-06-16T11:05:30.583 に答える