2010-11-25 6 views

答えて

54

のmemcacheを使用しての概念は、あなたが「余分を持っているという考えから、茎RAM "のどこかに座っている。 MongoDBとMySQL(そして大半のDB)は、1MBのRAMをすべて利用できます。

非常に一般的なMySQL/Memcacheの場合、Memcacheを使用すると、クエリの高速化よりもサーバー上のクエリの負荷が軽減されることがよくわかっています。優れたmemcacheの実装は、基本的には最も一般的なデータをメモリに保持して、データベースサーバをより大きなものに変えることができます。

は実際には、それはのmemcacheの使用は一般的に、システムの性能を維持する memcacheの上依存になることを私の経験をされています。

元の質問に戻ると、余分なRAMはどこにありますか?

Webサーバーに余分なRAMがある場合は、Memcacheを使用することができます。もちろん、MongoをWebサーバー上でローカルに実行することもできます。マスターから必要なデータをスレーブするだけです。

他のコンピュータに余分なRAMがある場合は、memcacheを使用する上でのポイントはありません。あなたのMongoDBレプリカセットまたはシャードにもっと多くのノードを追加するだけです。これは、MongoDBが実際に輝く場所です。シャーディング/レプリケーションのため、MongoにRAMをさらに追加してパフォーマンスを向上させることができます。 SQLでは、結合がうまく拡張されないため、「サーバーを追加するだけ」は非常に困難です。しかし、Mongoでは、単に問題に「ノードを追加する」ことが可能です。

3

最初はありません。パフォーマンスの問題が発生した場合は、後でキャッシングレイヤー(memcache)を追加してください。 Redisはすでにメモリにすべてのデータを保存しているので、Redisを使用する場合は何も得られません。

11

MongoDBは、とにかくすべてのものをメモリに保存し、キーバリューベースのシステムですが、MongoDBは柔軟性があり、BSONオブジェクトを自分自身の中に格納できると考えています。

(ただ、明確化のために、MongoDBのは、オブジェクト内のオブジェクトが含まれ、そのすべてのデータを格納するため、BSON、JSONの特殊な形式を使用しています。)

+3

この機能は、mongoDBのようなものです。 –

+4

この回答は不正確です.MongoDBはキーバリューストアではなく、すべてをRAMに格納していません。異なる。 – Sammaye

0

答えは、使用例によって異なります。
一般に、RAMへのアクセスはディスクへのアクセスよりも数桁高速です。
最速のSSDドライブでさえ、RAMよりもアクセスが約100倍遅くなります。

ここで、Mongoがキャッシュシステムを持っているか(ほとんどの場合そうです)、または追い出しポリシーがあるのか​​どうかはわかりませんが、プログラマーとしては私が保存/取り出し、削除できるキャッシュを好むでしょうアイテムを自由に使用できます。したがって、私はMongoでもキャッシュソリューションを使用する方が好きです。

要約すると、実際にはこれらのソリューションを使用しているかどうかによって異なります。すべての可能な使用をカバーする答えはありません。

関連する問題