Seufzen. Diese Art von Benchmarks, und ich benutze den Begriff lose in diesem Fall, brechen normalerweise von Anfang an zusammen. MySQL ist keine "langsamere" Datenbank als MongoDB. Einer ist eine relationale Datenbank, der andere ein NoSQL-Dokumentspeicher. Sie werden / sollten in den Funktionsbereichen, für die sie vorgesehen waren, schneller sein. Im Fall von MySQL (oder irgendeinem RDBMS) und MongoDB ist diese Überlappung nicht so groß, wie viele Leute annehmen. Es ist die gleiche Art von gebrochenen Äpfeln und Orangen Vergleich, den Sie mit Redis vs MongoDB Diskussionen bekommen.
Es gibt so viele Variablen (App-Funktionsanforderungen, Hardwareressourcen, Gleichzeitigkeit, Konfiguration, Skalierbarkeit, etc.), um zu berücksichtigen, dass jeder Benchmark oder Artikel, der mit "MongoDB ist schneller als MySQL" endet oder umgekehrt, die Ergebnisse verallgemeinert Punkt der Nutzlosigkeit.
Wenn Sie einen Benchmark erstellen möchten, definieren Sie zuerst eine Reihe von funktionalen Anforderungen und Geschäftsregeln und implementieren Sie diese so effizient wie möglich auf beiden Persistenzlösungen. Das Ergebnis wird sein, dass einer schneller ist als der andere, und in fast allen Fällen hat der schnellere Ansatz einige relevante Nachteile, die die langsamere Lösung abhängig von den Anforderungen noch lebensfähiger machen können.
All dies ignoriert, dass der obige Benchmark kein realistisches Szenario simuliert. Es wird nicht viele Apps geben, die Inserts mit maximalem Durchsatz ohne irgendeine Art von Threading / Concurrency durchführen (was die Leistung der meisten Speicherlösungen erheblich beeinträchtigt).
Schließlich ist das Vergleichen von Einsätzen auch etwas kaputt. MongoDB kann einen erstaunlichen Durchsatz von Einfügungen mit Feuern erzielen und Masseneinfügungen vergessen oder kann mit fsyncierten, replizierten Schreibvorgängen um Größenordnungen langsamer sein. Die Sache hier ist, dass MongoDB Ihnen eine Auswahl anbietet, wo MySQL nicht (oder weniger). Also hier macht der Vergleich nur Sinn der geschäftlichen Anforderungen erlauben für Feuer und vergessen Typ schreibt (Was auf "Ich hoffe, es funktioniert, aber keine biggy, wenn es nicht") kochen.
TL; DR hört auf, einfache Durchsatz-Benchmarks durchzuführen. Sie sind fast immer nutzlos.
Mongodb fügt viel schneller ein, weil mongodb alle Daten in ram einfügt und dann regelmäßig Daten auf die Disc löscht.
%Vor%Sie können die beste Leistung mit mongodb erzielen, wenn Sie Ihre Daten einbetten / denormalisieren. In vielen Situationen erlauben mongodb uns, Joins wegen der Einbettung / Denormalisierung zu vermeiden.
Und wenn Sie nur Daten in eine Sammlung / Tabelle einfügen und zurücklesen durch index mongodb sollte nicht schneller sein, sollte Lesegeschwindigkeit ~ gleich sein, wenn Sie mit SQL-Datenbank vergleichen.
BTW: In mongodb 2.0 Indizes 25% schneller, so dass ich rate 2.0 wird schneller als mysql funktionieren.
Es ist falsch, die Python-Ausführungszeit zu betrachten und die Datenbankqualität zu schätzen. Jede Anfrage besteht aus mindestens 3 Teilen:
Nach meiner Erfahrung braucht die Datenkonvertierung für MongoDB = & gt; python viel mehr Zeit als für MySQL = & gt; python.
Sie sollten auch Indizes in beiden Datenbanken verwenden. MongoDB funktioniert nur, wenn Sie Indizes für Felder haben, die Sie für Abfragen verwenden. Wenn ich über MySQL spreche, ist es besser, die Leistung auf innoDB zu testen, MyISAM unterstützt keine Transaktionen, Fremdschlüssel, Trigger und für mich ist es ein wenig veraltet.