2010-11-25 8 views

Antwort

54

Das Konzept memcache des Verwendens von der Idee stammt, die Sie haben „extra RAM "irgendwo rumsitzen. Sowohl MongoDB als auch MySQL (und die meisten DBs) nehmen jeden Megabyte RAM, den sie bekommen können.

Im Fall des sehr häufigen MySQL/Memcache ist es sehr gut dokumentiert, dass die Verwendung von Memcache mehr dazu dient, die Abfragebelastung auf dem Server zu reduzieren als die Beschleunigung von Abfragen. Eine gute Memcache-Implementierung versucht im Grunde nur die gebräuchlichsten Daten im Speicher zu halten, so dass der Datenbankserver auf größeren Datenmengen zugreifen kann.

In der Tat ist es meine Erfahrung, dass Verwendung von memcache wird im Allgemeinen ein Vertrauen auf memcache Systemleistung aufrechtzuerhalten.

Also zurück zur ursprünglichen Frage, wo hast du extra RAM?

Wenn Sie über zusätzlichen RAM auf Webservern verfügen, können Sie Memcache möglicherweise verwenden. Natürlich können Sie Mongo auch lokal auf dem Webserver ausführen. Stellen Sie einfach die Daten, die Sie benötigen, vom Master bereit.

Wenn Sie auf anderen Computern über zusätzlichen Arbeitsspeicher verfügen, ist die Verwendung von Memcache nicht wirklich sinnvoll. Fügen Sie einfach weitere Knoten zu Ihrem MongoDB-Replikat-Set oder Shard hinzu. Hier glänzt MongoDB. Aufgrund von Sharding/Replikation können Sie Mongo horizontal mehr RAM hinzufügen, um die Leistung zu erhöhen. Mit SQL ist es sehr schwierig "nur weitere Server hinzuzufügen", da Joins nicht sehr gut skaliert werden können. Aber mit Mongo ist es durchaus möglich, einem Problem einfach "mehr Knoten hinzuzufügen".

3

Zuerst nein. Wenn später Leistungsprobleme auftreten, fügen Sie eine Cache-Ebene (Memcache) hinzu. Aber Sie werden nichts gewinnen, wenn Sie beispielsweise Redis verwenden, da Redis bereits alles im Speicher speichert.

11

MongoDB speichert sowieso alles im Speicher und arbeitet auf ähnliche Weise, da es ein auf Schlüsselwerten basierendes System ist. Ich glaube jedoch, dass MongoDB flexibler ist, da es BSON-Objekte in sich speichern kann.

(Nur zur Klarstellung, MongoDB verwendet BSON, eine spezielle Form von JSON, für alle seine Daten zu speichern, die Objekte innerhalb von Objekten enthält.)

+3

Diese Funktion macht mich wie mongoDB mehr als andere Schlüssel-Wert-Datenbanken :) –

+4

Diese Antwort ist ungenau, MongoDB ist kein Schlüssel-Wert-Speicher und es enthält nicht alles im RAM, es maps zu Virtual Memory, die ziemlich ist anders. – Sammaye

0

Die Antwort hängt von Ihren Anwendungsfällen ab.
Im Allgemeinen ist der Zugriff auf RAM um Größenordnungen schneller als der Zugriff auf die Festplatte.
Selbst die schnellsten SSD-Laufwerke sind etwa 100 Mal langsamer als RAM.

Nun, ich weiß nicht, ob Mongo ein Caching-System an Ort und Stelle hat (wahrscheinlich ist es), oder was die Räumungsrichtlinie ist, aber als Programmierer würde ich einen Cache bevorzugen, wo ich speichern/abrufen und löschen kann Artikel nach Belieben. Daher würde ich lieber eine Caching-Lösung auch mit Mongo verwenden.

Zusammenfassend hängt es wirklich davon ab, wofür Sie diese Lösungen verwenden. Es gibt keine eindeutige Antwort auf alle möglichen Anwendungen.

Verwandte Themen