web-dev-qa-db-ja.com

MongoDBを使用したシャーディングされたKey-Valueストア

複数のマシンに分割されたKey-Valueストアを設定したい。

現在、MongoDBを使用していますが、この目的でMongoDBを使用しない理由はありますか?

私たちはRedisも使用していますが、この使用例では、ハードドライブを使用し、RedisはRAM内のみです。

5
Chris Dutrow

MongoDBを純粋なKey-Valueストアとして使用しない理由はいくつかありますが、考慮すべき理由もいくつかあります。 Mongoはドキュメントストアとして最適化されています。ドキュメントのすべてのフィールドにインデックスを付け、JSONオブジェクトと階層用の豊富なプリミティブを備えています。 Key-Valueストアとして使用できますが、シングルスレッドの性質により、ハードウェアのパフォーマンスが向上しません。単純なブロブを保存すると、Mongoの多くの利点が失われます。 Mongoには、挿入時にデータチャンクを分割するアルゴリズムがあり、ラグが発生する可能性があります。 Monogoの再パーティション化のシステムも扱いにくいです。 Key-Valueシステムの利点は、それが非常にシンプルで非常に高速である必要があることです。これにより、サーバーと管理のコストを削減できます。

その他のシステムは、キーと値の使用に合わせて調整されています。最高のKey-Valueストアの1つであるRedisについて言及しましたが、Redisの再パーティション化/クラスタリングはまだアルファレベルであり、DRAMの要件があります。一部の人々は、Redisに独自のシャードレイヤーとパーティションレイヤーを構築しています。これは、一部の大規模な中国のソーシャルネットワークでは非常に一般的です。

Cassandraは、Key-Valueストアとして使用される場合があります。 Cassandraの「スーパーカラムファミリ」は豊富なインデックスを提供するため、これはCassandraの最適な使用法ではありません。 Cassandraは、RedisやMongoなどのCで書かれたデータベースほど高速ではありませんが、強力なクラスタリング機能を備えています。

この領域で強く検討すべき1つのストアはAerospikeです。 Aerospikeは非常に柔軟なクラスター管理-起動することで単一のノードを追加するだけでなく、DRAMとSSD/Flashの両方のサポート-とHAの簡単なレプリケーションを備えています。巨大なキーバリューストアを必要とする広告プラットフォーム企業が非常に高いレベルで使用しています。 Aerospikeには、200Gまでのノードサイズをサポートする無料バージョンがあります。

CoucheBase(以前はMemBase)は、キーと値の使用を調べる別のシステムです。いくつかのクラスタリングプリミティブを提供し、メモリ内での使用に重点を置いています。

6
Brian Bulkowski

クラスタリング機能がアルファ版であることを除いて、この目的でRedisを使用する方が理に適っているという@ブライアンに同意します(この時点ではまだです-公式 クラスター仕様 を参照してください)進捗)。ただし、言及されていない別のオプションは、シャーディングを自動的に処理するホストされたRedisサービスを使用することです。私はこれを聞いたことがあります Redis Garantia Dataによるサービス。RackSpaceによって購入された RedisToGo もあり、おそらく他にもいくつかあります。私自身はこれを試していませんが、ベンダーは既存のRedisユーザーに対して透過的であり、バックグラウンドですべてのシャーディング/クラスタリングを処理していると主張しています。ただし、これらは商用製品であることを考慮に入れてください。データ量によっては、コストがかなり高くなる可能性があります。ちなみに、 CassandraCouchbase には、クラスタリングを容易にするというオプションがホストされています。

0
Lena Weber