Dariusz quatscht

Web Development on Microsoft's Platform
Navigation

MongoDb im Stress Test

MongoDb im Stress Test

  • Comments 3

Ich habe mich ein wenig mit MongoDB beschäftigt, ich finde den Ansatz interessant Daten einfach als Binary JSON ablegen zu können. Ich wollte allerdings wissen wie der Einsatz von MongoDB in einer Web Anwendung aussieht. Hierzu habe ich eine ASP.NET MVC Anwendung verwendet die lediglich Daten anzeigt, erzeugt und aktualisert. Dazu erzeuge ich in jedem Request einen Connect und Disconnecte mich wieder im Dispose Event vom Controller. Diese Anwendung habe ich mittels eines Web Tests in Visual Studio 2010 aufgezeichnet und unter Last (nur auf meinem Laptop) mit 5 verschiedenen Browsern testen lassen.

shot3

Die ersten zwei Minuten verlief der Test erstaunlich gut, die Anzahl der Page Requests / Sekunde war faszinierend schnell. Nach zwei Minuten kamen dann aber die ersten Einbrüche. Sieht man im Diagramm oben Links, die blaue Kurve, diese stellt die Pages / Sec dar. Der Peek entsteht durch den Garbage Collector der sich dann ans Aufräumen macht. Trotzdem überzeugen die Resultate

shot3

Das ständige Auf- und abbauen der Connection war auch primär mein Testziel. Ich wollte sehen ob MongoDB an irgendeiner Stelle schlapp macht, aber selbst nach über 39.000 Verbindungen in 10 Minuten ist das Ding noch stabil und performant.

shot4

Noch besser fande ich allerdings den Speicherverbrauch von MongoDB der war während des Tests nicht einmal über 5 MB gegangen. Ok, ich hatte auch nicht wahnsinnig viele Daten die ich erzeugt habe, aber vergleicht man das mit traditionellen Datenbanken ist es schon ein wahnsinnig großer Unterschied.

shot1

Nach diesem Test werde ich MongoDB für mein nächstes Projekt einsetzen. Da es sich bequem über die Kommandozeile starten lässt und ich ein beliebiges Verzeichnis als Datenspeicher definieren kann, ist es auch in Windows Azure einsetzbar. Die Daten lassen sich dann auf ein Cloud Drive legen und sind somit auch an verschiedene VMs anhängbar.

Falls jemand von Euch schon Erfahrungen mit MongoDB oder ähnlichen Datenspeichern gesammelt hat, ich würde mich über Euer Feedback freuen.

  • Die ganze NoSQL Bewegung fasziniert mich zugegebenermaßen auch, weil ich immer wieder Fälle habe, in denen Dokument orientierte Datenbanken mMn eine gute Lösung wären. Ich bin allerdings noch ziemlich am Anfang bei dem Thema. Was mir im Moment noch Sorgen bereitet ist die Konsistenz der Daten, gerade bei Systemen wie MongoDB, die im Grunde mehrere replizierte Server voraussetzen (http://blog.mongodb.org/post/381927266/what-about-durability), von denen nur einer "beschreibbar" ist (so hab ich es zumindest verstanden). Wenn mein Controller nun ein Dokument speichert, kann ich dann das Dokument direkt (d.h. im selben Request) wieder abfragen, oder dauert es ggf. eine Zeit, bis es indiziert wurde? Ich werde zu dem Thema auf jeden Fall in näherer Zukunft noch experimentieren.

  • Ich habe vor ein paar Monaten eine Seminararbeit zu MongoDB geschrieben und habe mich dabei auch mit der Technik dahinter ein wenig auseinandergesetzt. Prinzipiell finde ich die Idee sehr gut und auch die Tatsache, dass einige größere Projekte zum Teil MongoDB einsetzen (z.B. SourceForge, ElectronicArts, o.Ä.) spricht auch für die Technologie. Das wirklich spannende ist allerdings das Sharding und die Replikation um die Skalierbarkeit und Ausfallsicherheit zu gewährleisten. Allerdings muss man dafür bei den ACID-Eigenschaften doch einige Abstriche in Kauf nehmen (keine Transaktionen, nur eventual-consistency und keine garantierte Dauerhaftigkeit).

    Aber für manche Bereiche (z.B. als Backend für Blogs) finde ich MongoDB mehr als gelungen, vor allem im Vergleich zu anderen dokumentenorientierten Systemen wie CouchDB.

  • hallo dariusz,

    netter test. kannst du nicht mal das dazugehörige vs-projekt zum download bereitstellen? besten dank.

    gruß

Page 1 of 1 (3 items)