Prémisse : J'expédie une application Java qui établira une connexion JDBC à une base de données MySQL. (Au moment d'écrire ces lignes, cela pourrait être 5.1 ou 5.5, mais j'espère que la question et la réponse ne dépendent pas beaucoup de la version.)
Observation : Il est clair que je peux utiliser le pilote MySQL JDBC ( Connector / J ) ou le pilote MariaDB JDBC ( MariaDB Java Client ) pour établir la connexion avec le serveur MySQL. Un énorme avantage du point de vue d'un ISV est que le pilote MariaDB est sous licence LGPL tandis que le pilote MySQL est sous licence GPL. Les performances du pilote MariaDB semblent très bonnes.
Question : Dans quelle mesure le pilote JDBC MariaDB est-il un remplacement parfait du pilote JDBC MySQL?
Je ne cherche pas un débat sur les mérites relatifs des deux. Mais j'espère plutôt que quelqu'un pourra répondre dans le sens de l'une d'entre elles:
- Le pilote MariaDB JDBC a des problèmes importants avec X et Y, vous aurez donc des problèmes si vous utilisez l'un ou l'autre.
- Sur la base d'un article ou d'une spécification ou d'un code ou d'autres preuves, le pilote MariaDB JDBC implémente entièrement [au moins] toutes les méthodes disponibles dans le pilote MySQL. Ça ira.
useServerPrepStmts
depuis1.3.0
, car1.6.0
il est désactivé par défaut. Je ne sais pas pourquoi.Réponses:
Je deviens un peu nerveux.
Tout d'abord, l'avantage: j'ai utilisé le pilote MariaDB JDBC dans un service "toujours actif" en production avec un pool de connexion à la base de données et il fonctionne bien depuis quelques mois maintenant. Le service utilise uniquement des fonctions JDBC de base avec des requêtes simples (par exemple, pas de jointures, pas de blobs). Je suis sur le point de publier un autre service "toujours activé" qui utilise le pilote MariaDB JDBC de la même manière.
J'ai décidé d'utiliser le pilote MariaDB JDBC après avoir (re) consulté le code source: comparé au code source du pilote Oracle MySQL JDBC, le code source du pilote MariaDB JDBC est beaucoup plus lisible et compréhensible.
Mais j'ai l'impression (9/2014) que le développement a ralenti (lien vers un graphique montrant les bugs créés vs résolus). Si je parcours les bogues ouverts, je vois de nombreux bogues graves ouverts depuis trop longtemps (problèmes avec Hibernate et aussi les fuseaux horaires / dates). Certains d'entre eux ne sont peut-être pas des bogues, mais ils auraient dû être fermés maintenant. J'ai également rencontré un bogue (via STASH-4012 ) qui devrait être rouvert: le bogue CONJ-72 est fermé mais le dernier commentaire (de 4/2014) indique que le problème n'est pas résolu pour Hibernate.
Dans l'ensemble, je ne considère pas le pilote JDBC MariaDB comme un remplacement parfait pour le pilote JDBC Oracle MySQL. Je suis heureux de continuer à l'utiliser pour les choses simples (où toutes les requêtes sont connues et testées à l'avance) pour l'instant, mais je devrai peut-être revenir au pilote Oracle MySQL JDBC à l'avenir.
la source
Une autre chose à garder à l'esprit est que vous n'avez pas le choix si vous souhaitez distribuer des logiciels non GPL. Si vous distribuez des logiciels sous une licence autre que la GPL, Oracle pourrait vous poursuivre pour violation de droits d'auteur si vous utilisez leurs pilotes.
la source