Entschuldige, dass du zu spät zur Party gekommen bist. :) Hier ist meine Antwort, basierend auf der Verwendung von Mnesia seit 1996 und verschiedenen anderen Datenbanktechnologien seit 1988.
Mnesia und MySQL sind in der Tat verschiedene Biester, und welches das beste ist, hängt sehr davon ab, wie Sie es verwenden möchten.
Wenn Ihre Anwendung in Erlang geschrieben ist, können Sie mit Mnesia die Daten im selben Speicherbereich wie Ihre Anwendung speichern, sodass Sie ein einzelnes Datenobjekt innerhalb weniger Mikrosekunden abrufen können. Dies ist in MySQL nicht möglich, da Ihre Anwendung und die Datenbank im Speicher getrennt werden. Der Grund, warum Mnesia dies kann und dennoch robust ist, besteht darin, dass Erlang den Speicherschutz auf Sprachebene implementiert.
Insgesamt bevorzugen SQL-Datenbanken den Durchsatz gegenüber der Latenz, und wenn es um die Latenz geht, sind Mnesia + Erlang im Allgemeinen hervorragend. Sie müssen sich entscheiden, welches für Sie am wichtigsten ist. Wie es in den Dokumenten (oben) heißt, waren Mnesias Zielanwendungen Telekommunikationsvermittlungsanwendungen, bei denen die Anforderungen an die Antwortzeit für z. B. einen Anrufaufbau etwa 20 ms betrugen. Dies bedeutete im Wesentlichen, dass Sie nur dann aus der Datenbank lesen konnten, wenn sich die Daten im gemeinsam genutzten Speicher befanden, aber das Schreiben in einen dauerhaften Speicher auf der Basis von Aufrufen vermeiden konnten. OTOH, diese Anwendungen benötigen praktisch keine Unterstützung für Ad-hoc-Abfragen und verwenden keine sehr großen Datenmengen. Es wurden einige Anstrengungen unternommen, um die Eignung von Mnesia für andere Domänen zu verbessern. Für das Erlang / OTP-Entwicklungsteam hat dies jedoch keine Priorität. Mnesia ist, was es ist, und wird wahrscheinlich so bleiben.
In dem obigen Link, in dem Mnesia und MySQL aus Geschwindigkeitsgründen verglichen werden, muss beachtet werden, dass es sich um eJabberd handelt, das auf einem einzelnen Server ausgeführt wird, wenn es sich um MySQL handelt, und eine vollständig replizierte Datenbank ausführt, wenn es sich um Mnesia handelt 10 oder mehr Langknoten (und damit 10 oder mehr Mnesia-Replikate). Vom Standpunkt der Redundanz aus ist dies ziemlich lächerlich und kostspielig, und Mnesia zwingt Sie keineswegs dazu. Es gibt offensichtlich unglaublich schnelle Lesevorgänge auf jedem Knoten, aber Schreibvorgänge sind sehr teuer. Mehrere Vergleiche, die ich gelesen habe, haben ergeben, dass verteilte Mnesia mit einem einzelnen MySQL-Knoten verglichen wurden. Wenn für MySQL keine Redundanz erforderlich ist, sollte dies auch für Mnesia nicht erforderlich sein. Mnesia ist sehr flexibel bei der Auswahl von Replikationsmustern, und der Speicherort der Daten ist für die Anwendung transparent.
Mnesia wird auch auf 2 GB pro Tabelle nicht beschränkt (obwohl eine bestimmte Speicher Option ist). Die größte mir bekannte Mnesia-Datenbank verfügt über ca. 600 GB Daten im (64-Bit) RAM + Datenträger - obwohl ich dies nicht empfehle. Alles bis zu 10-20 GB sollte mit moderner Hardware vollkommen in Ordnung sein, aber lassen Sie disc_only_copies komplett aus und verwenden Sie disc_copies - kaufen Sie mehr RAM, wenn Sie müssen. Ich würde es mir zweimal überlegen, bevor ich die Sharding-Unterstützung (mnesia_frag) benutze - es funktioniert, aber die Mühe lohnt sich selten.
Der vielleicht größte Unterschied zwischen Mnesia und MySQL ist SQL selbst: Mnesia hat keine wirklich vergleichbare Funktionalität; QLC bietet eine gewisse Unterstützung für Ad-hoc-Abfragen, gehört jedoch nicht zur selben Liga wie SQL, und auch nicht zum Grad der Abfrageoptimierung. In Sachen Tooling und Provisioning ist MySQL ebenfalls überlegen, und wenn Sie Analysen benötigen, steht außer Frage, welches Sie wählen sollten (dh NICHT Mnesia).
Die beste Möglichkeit, Mnesia zu betrachten, ist die Erweiterung der Erlang-Sprache. Sie haben Daten immer zur Hand und eignen sich hervorragend für kleine Datenmengen, bei denen die Datenstruktur und die Zugriffsmuster bekannt sind. Zu diesem Zweck ist die Verwendung von MySQL ungefähr so unkomfortabel wie die Verwendung von Mnesia für die Dinge, bei denen MySQL am besten funktioniert.
Die meisten Anwendungen liegen irgendwo dazwischen, und hier wird es zu einem Urteilsspruch. Sie können gut mit beiden enden ...