Inwieweit ist der MariaDB Java-Client ein perfekter Ersatz für MySQL JDBC (Connector / J)?

11

Voraussetzung : Ich versende eine Java-Anwendung, die eine JDBC-Verbindung zu einer MySQL-Datenbank herstellt. (Zum Zeitpunkt dieses Schreibens könnte es 5.1 oder 5.5 sein, aber hoffentlich hängen Frage und Antwort nicht stark von der Version ab.)

Beobachtung : Natürlich kann ich den MySQL JDBC-Treiber ( Connector / J ) oder den MariaDB JDBC-Treiber ( MariaDB Java Client ) verwenden, um die Verbindung zum MySQL-Server herzustellen. Ein großer Vorteil vom Standpunkt eines ISV ist, dass der MariaDB-Treiber LGPL-lizenziert ist, während der MySQL-Treiber GPL-lizenziert ist. Die Leistung des MariaDB-Treibers scheint sehr gut zu sein.

Frage : Inwieweit ist der MariaDB JDBC-Treiber ein perfekter Ersatz für den MySQL JDBC-Treiber?

Ich suche keine Debatte über die relativen Vorzüge der beiden. Ich hoffe vielmehr, dass jemand nach einem der folgenden Punkte antworten kann:

  • Der MariaDB-JDBC-Treiber hat wichtige Probleme mit X und Y, sodass Sie Probleme haben, wenn Sie eines dieser Elemente verwenden.
  • Basierend auf einem Artikel oder einer Spezifikation oder einem Code oder anderen Beweisen implementiert der MariaDB-JDBC-Treiber [zumindest] alle im MySQL-Treiber verfügbaren Methoden vollständig. Es wird Dir gut gehen.
mdahlman
quelle
Der MariaDB-Client verarbeitet vorbereitete Anweisungen auf der Clientseite. Das könnte ein Problem sein.
Mat
1
Ich kann hinzufügen, dass ich keine Probleme festgestellt habe. Das ist kaum eine umfassende Antwort, aber ein gutes Zeichen.
Mdahlman
@ Mat Update: Es gibt useServerPrepStmtsseitdem 1.3.0, da 1.6.0es standardmäßig deaktiviert ist . Keine Ahnung warum.
Maaartinus

Antworten:

6

Ich werde etwas nervös.

Erstens der Vorteil: Ich habe den MariaDB-JDBC-Treiber in einem "Always-On" -Dienst in der Produktion mit einem Datenbankverbindungspool verwendet und er läuft seit einigen Monaten einwandfrei. Der Dienst verwendet nur grundlegende JDBC-Funktionen mit einfachen Abfragen (z. B. keine Verknüpfungen, keine Blobs). Ich bin dabei, einen weiteren "Always On" -Dienst zu veröffentlichen, der den MariaDB-JDBC-Treiber auf ähnliche Weise verwendet.
Ich habe mich nach dem (erneuten) Anzeigen des Quellcodes für die Verwendung des MariaDB JDBC-Treibers entschieden: Im Vergleich zum Quellcode des Oracle MySQL JDBC-Treibers ist der Quellcode des MariaDB JDBC-Treibers viel besser lesbar und verständlicher.

Ich habe jedoch den Eindruck, dass sich die Entwicklung (9/2014) verlangsamt hat (der Link führt zu einer Grafik, in der die erstellten und behobenen Fehler angezeigt werden). Wenn ich durch die offenen Fehler stöbere, werden viele schwerwiegende Fehler viel zu lange geöffnet (Probleme mit dem Ruhezustand und auch Zeitzonen / Daten). Einige davon sind möglicherweise keine Fehler, aber dann sollten sie inzwischen geschlossen sein. Ich habe auch einen Fehler (über STASH-4012 ) festgestellt , der erneut geöffnet werden sollte: Der Fehler CONJ-72 ist geschlossen, aber der letzte Kommentar (ab 4/2014) zeigt an, dass das Problem für den Ruhezustand nicht behoben ist.

Alles in allem halte ich den MariaDB JDBC-Treiber nicht für einen perfekten Ersatz für den Oracle MySQL JDBC-Treiber. Ich bin froh, es weiterhin für die einfachen Dinge zu verwenden (bei denen alle Abfragen vorher bekannt und getestet wurden), aber ich muss möglicherweise in Zukunft wieder auf den Oracle MySQL JDBC-Treiber umsteigen.

vanOekel
quelle
2
Die Entwicklung wurde im November 2014 aufgenommen. Klicken Sie in der Antwort von vanOekel auf den Link "Verlangsamung", um ein Update zu erhalten. Im Januar 2015 gab es eine neue stabile Version.
David H. Bennett
2

Eine andere Sache zu beachten ist, dass Sie keine Wahl haben, wenn Sie Nicht-GPL-Software vertreiben möchten. Wenn Sie Software unter einer anderen Lizenz als der GPL vertreiben, kann Oracle Sie wegen Urheberrechtsverletzung verklagen, wenn Sie deren Treiber verwenden.

Demi
quelle
Du hast eine Wahl. Sie können Oracle Geld geben und Sie können den Client mit einer kommerziellen Lizenz verwenden!
Josef sagt Reinstate Monica