Désolé d'être en retard à la fête. :) Voici ma réponse, basée sur l'utilisation de Mnesia depuis 1996 et de diverses autres technologies de base de données depuis 1988.
Mnesia et MySQL sont en effet des bêtes différentes, et laquelle est la meilleure dépend beaucoup de la façon dont vous comptez l'utiliser.
Si votre application est écrite en Erlang, Mnesia vous permet de stocker les données dans le même espace mémoire que votre application, ce qui signifie que vous pouvez récupérer un seul objet de données aussi rapidement que quelques microsecondes. Ce n'est pas possible dans MySQL, car votre application et la base de données seront séparées en mémoire. La raison pour laquelle Mnesia peut faire cela et être encore robuste, c'est qu'Erlang implémente la «protection» de la mémoire au niveau de la langue.
Dans l'ensemble, les bases de données SQL ont tendance à favoriser le débit par rapport à la latence, et en matière de latence, Mnesia + Erlang sont généralement exceptionnelles. Vous devez décider lequel est le plus important pour vous. Comme il est dit dans les documents (ci-dessus), les applications cibles de Mnesia étaient des applications de commutation de télécommunications, où les exigences de temps de réponse pour, par exemple, une configuration d'appel étaient d'environ 20 ms. Cela signifiait essentiellement que vous ne pouviez lire à partir de la base de données que si les données étaient dans la mémoire partagée, mais éviteriez d'écrire sur le stockage persistant sur une base de configuration par appel. OTOH, ces applications n'ont pratiquement pas besoin de prise en charge de requêtes ad hoc et n'utilisent pas de très grands ensembles de données. Certains travaux ont été effectués pour étendre l'adéquation de Mnesia à d'autres domaines, mais ce n'est pas une priorité pour l'équipe de développement d'Erlang / OTP. La mnésie est ce qu'elle est et est susceptible de rester ainsi.
Dans le lien ci-dessus où Mnesia et MySQL sont comparés pour la vitesse, il faut se rappeler qu'il est dans eJabberd, qui s'exécute sur un seul serveur si c'est MySQL et exécute une base de données entièrement répliquée si c'est Mnesia - et les grands clusters eJabberd peuvent avoir autant que 10 nœuds erlang ou plus (et donc, 10 répliques Mnesia ou plus). Du point de vue de la redondance, c'est assez ridicule et coûteux, et Mnesia ne vous y oblige en aucun cas. Il donne évidemment des lectures rapides sur chaque nœud, mais les écritures seront très coûteuses. Plusieurs comparaisons que j'ai lues ont fini par comparer la Mnesia distribuée avec un MySQL à nœud unique; si la redondance n'est pas nécessaire pour MySQL, elle ne devrait pas l'être non plus pour Mnesia. Mnesia est assez flexible pour vous permettre de choisir des modèles de réplication et l'emplacement des données est transparent pour l'application.
Mnesia n'est pas non plus limité à 2 Go par table (bien qu'une option de stockage particulière le soit). La plus grande base de données Mnesia que je connaisse a environ 600 Go de données dans (64 bits) RAM + disque - bien que je ne le recommande pas. Tout ce qui peut aller jusqu'à 10-20 Go devrait être parfaitement adapté au matériel moderne, mais ignorez entièrement disc_only_copies et utilisez disc_copies - achetez plus de RAM si vous le devez. J'y réfléchirais à deux fois avant d'utiliser le support de partitionnement (mnesia_frag) - cela fonctionne, mais vaut rarement la peine.
La plus grande différence entre Mnesia et MySQL est peut-être SQL lui-même: Mnesia n'a pas vraiment de fonctionnalités comparables; QLC offre un certain support pour les requêtes ad-hoc, mais ce n'est pas dans la même ligue que SQL, ni le niveau d'optimisation des requêtes. Dans l'outillage et l'approvisionnement, MySQL est également supérieur, et si vous avez besoin d'analyses, il ne fait aucun doute lequel vous devez choisir (c.-à-d. PAS Mnesia).
La meilleure façon de voir Mnesia est une extension de la langue Erlang. Il met les données à portée de main et est excellent pour les petits ensembles de données où la structure des données et les modèles d'accès sont bien connus. À cette fin, l'utilisation de MySQL est à peu près aussi inconfortable que l'utilisation de Mnesia pour les choses où MySQL fonctionne le mieux.
La plupart des demandes se situent quelque part entre les deux, et c'est là que cela devient un appel au jugement. Vous pourriez bien finir par utiliser les deux ...