¿En qué medida el cliente MariaDB Java es un reemplazo perfecto para MySQL JDBC (Connector / J)?


11

Premisa : envío una aplicación Java que hará una conexión JDBC a una base de datos MySQL. (Al momento de escribir esto, podría ser 5.1 o 5.5, pero espero que la pregunta y la respuesta no dependan en gran medida de la versión).

Observación : Claramente, puedo usar el controlador MySQL JDBC ( Connector / J ) o el controlador MariaDB JDBC ( MariaDB Java Client ) para hacer la conexión al servidor MySQL. Una gran ventaja desde el punto de vista de un ISV es que el controlador MariaDB tiene licencia LGPL mientras que el controlador MySQL tiene licencia GPL. El rendimiento del controlador MariaDB parece muy bueno.

Pregunta : ¿Hasta qué punto es el controlador MariaDB JDBC un reemplazo perfecto para el controlador MySQL JDBC?

No estoy buscando un debate sobre los méritos relativos de los dos. Pero más bien espero que alguien pueda responder en la línea de uno de estos:

  • El controlador MariaDB JDBC tiene problemas importantes con X e Y, por lo que tendrá problemas si utiliza cualquiera de estos.
  • Basado en algún artículo o especificación o código u otra evidencia, el controlador MariaDB JDBC implementa completamente [al menos] todos los métodos disponibles en el controlador MySQL. Estarás bien.

El cliente MariaDB maneja las declaraciones preparadas en el lado del cliente. Eso podría ser un problema.
Mat

1
Puedo agregar que no he encontrado ningún problema. Esa no es una respuesta completa, pero es una buena señal.
mdahlman

@Mat Update: hay useServerPrepStmtsdesde 1.3.0, ya 1.6.0que está desactivado de forma predeterminada. No tengo idea de por qué.
maaartinus 05 de

Respuestas:


6

Me estoy poniendo un poco nervioso.

Primero, la ventaja: he usado el controlador MariaDB JDBC en un servicio "siempre activo" en producción con un grupo de conexiones de base de datos y funciona bien desde hace un par de meses. El servicio solo utiliza funciones JDBC básicas con consultas simples (por ejemplo, sin combinaciones, sin blobs). Estoy a punto de lanzar otro servicio "siempre activo" que utiliza el controlador MariaDB JDBC de manera similar.
Decidí usar el controlador MariaDB JDBC después de (re) ver el código fuente: en comparación con el código fuente del controlador Oracle MySQL JDBC, el código fuente del controlador MariaDB JDBC es mucho más legible y comprensible.

Pero me da la impresión (9/2014) el desarrollo se ha ralentizado (el enlace es a un gráfico que muestra los errores creados frente a los resueltos). Si navego a través de los errores abiertos , veo muchos errores graves abiertos durante demasiado tiempo (problemas con Hibernate y también zonas horarias / fechas). Algunos de estos pueden no ser errores, pero ya deberían haberse cerrado. También encontré un error (a través de STASH-4012 ) que debería volver a abrirse: el error CONJ-72 está cerrado pero el último comentario (del 4/2014) indica que el problema no está resuelto para Hibernate.

En general, no considero que el controlador MariaDB JDBC sea un reemplazo perfecto para el controlador Oracle MySQL JDBC. Estoy feliz de seguir usándolo para cosas simples (donde todas las consultas se conocen y prueban de antemano) por ahora, pero es posible que tenga que volver al controlador JDBC de Oracle MySQL en el futuro.


2
El desarrollo comenzó en noviembre de 2014. Haga clic en el enlace "ralentizado" en la respuesta de vanOekel para obtener una actualización. Hubo un nuevo lanzamiento estable en enero de 2015.
David H. Bennett

2

Otra cosa a tener en cuenta es que no tiene otra opción si desea distribuir software que no sea GPL. Si distribuye software bajo cualquier licencia que no sea la GPL, Oracle podría demandarlo por infracción de derechos de autor si utiliza sus controladores.


Tienes una opción. ¡Puede entregar dinero a Oracle y le permitirán usar el cliente con una licencia comercial!
Josef dice Reinstate Monica
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.