Ich bin daran interessiert, die Auswirkungen der Verwendung von MySQL als Schlüssel-Wert-Datenbank im Vergleich zu Redis / MongoDB / CouchDB zu verstehen. Ich habe in der Vergangenheit sowohl Redis als auch CouchDB verwendet, daher kenne ich ihre Anwendungsfälle sehr gut und weiß, dass es besser ist, Schlüssel / Wert-Paare in zB NoSQL vs. MySQL zu speichern.
Aber hier ist die Situation:
Im Grunde genommen suche ich nach Informationen über die Skalierbarkeit einer Schlüssel / Wert-Tabelle in MySQL. Vielleicht auf drei verschiedenen willkürlichen Ebenen:
Ein praktisches Beispiel ist der Aufbau von Echtzeit-Webanalyse-Tracker von MixPanel , für die sehr oft geschrieben werden müsste auf Verkehr.
Wordpress und andere populäre Software verwenden dies die ganze Zeit: Post hat "Meta" -Modell, das nur Schlüssel / Wert ist, so dass Sie einem Objekt, das durchsucht werden kann, beliebige Eigenschaften hinzufügen können.
Eine andere Möglichkeit ist es, einen serialisierbaren Hash in einem Blob zu speichern, aber das scheint schlimmer zu sein.
Was ist Ihre Meinung?
Es besteht kein Zweifel daran, dass die Verwendung einer NOSQL-Lösung schneller sein wird, da es einfacher ist
NOSQL und Relational konkurrieren nicht miteinander, sie sind verschiedene Werkzeuge, die verschiedene Probleme lösen können.
Das heißt für 1000 Schreibvorgänge / Tag oder pro Stunde, MySQL wird kein Problem haben.
Für 1000 pro Sekunde benötigen Sie einige ausgefallene Hardware, um dorthin zu gelangen. Für die NOSQL-Lösung werden Sie wahrscheinlich noch ein verteiltes Dateisystem benötigen.
Es hängt auch davon ab, was Sie speichern.
SQL
-Datenbanken werden mehr und mehr als persistenter Layer verwendet, wobei Berechnungen und Lieferung in Key-Value
repositories zwischengespeichert werden.
In diesem Sinne haben diese Jungs hier einen ziemlich großen Test gemacht:
Um Ihre Frage zu beantworten, wird ein Key-Value
-Repository MySQL
wahrscheinlich um mehrere Größenordnungen übertreffen:
Verarbeitung von 100,000,000
-Elementen:
OK, dein Test war 1,000
ops pro Sekunde, aber es kann nicht schaden, 1,000
mal mehr machen zu können!
Siehe dies für weitere Details (sie vergleichen es auch mit Tokyo Cabinet
).
Ich würde sagen, dass Sie Ihren eigenen Benchmark ausführen müssen, weil nur Sie die folgenden wichtigen Aspekte kennen:
Ich würde auch sagen, dass Sie abhängig von den Haltbarkeitsanforderungen für diese Daten auch mehrere Engines testen möchten: InnoDB, MyISAM.
Obwohl ich davon ausgehe, dass manche NoSQL-Lösungen schneller sind, können Sie aufgrund Ihrer Einschränkungen herausfinden, dass MySQL gut genug für Ihre Anforderungen ist.
Sehen Sie sich die Blogserie hier an, in der der Autor Tests zum Vergleich der Leistung von MongoDB und MySQL durchführt und die Leistungsoptimierung von MySQL durchläuft Chaos. MongoDB machte ~ 100K Zeilenlesevorgänge pro Sekunde, MySQL im c / s-Modus machte 43K max, aber mit der eingebetteten Bibliothek schaffte er es, es auf 172K Zeilenlesevorgänge pro Sekunde zu bringen.
Es klingt ein wenig kompliziert, so hoch auf einem einzelnen Knoten zu kommen, also ymmv.
Die Schreib / Zweit-Frage ist ein wenig schwieriger, aber das könnte Ihnen noch einige Ideen für die Konfiguration geben.
Tags und Links sql mysql performance nosql key-value-store