Dans quelle mesure le client Java MariaDB est-il un remplacement parfait pour MySQL JDBC (Connector / J)?


11

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.

Le client MariaDB gère les instructions préparées côté client. Cela pourrait être un problème.
Mat

1
Je peux ajouter que je n'ai rencontré aucun problème. Ce n'est pas une réponse complète, mais c'est un bon signe.
mdahlman

@Mat Update: Il y en a useServerPrepStmtsdepuis 1.3.0, car 1.6.0il est désactivé par défaut. Je ne sais pas pourquoi.
maaartinus

Réponses:


6

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.


2
Le développement a repris en novembre 2014. Cliquez sur le lien «ralenti» dans la réponse de vanOekel pour une mise à jour. Il y a eu une nouvelle version stable en janvier 2015.
David H. Bennett

2

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.


Tu as le choix. Vous pouvez remettre de l'argent à Oracle et ils vous permettront d'utiliser le client avec une licence commerciale!
Josef dit Réintégrer Monica
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.