Przesłanka : Wysyłam aplikację Java, która nawiąże połączenie JDBC z bazą danych MySQL. (W chwili pisania tego tekstu może to być wersja 5.1 lub 5.5, ale mam nadzieję, że pytania i odpowiedzi nie zależą w dużej mierze od wersji.)
Uwaga : Oczywiście mogę użyć sterownika JDBC MySQL ( Connector / J ) lub sterownika JDBC MariaDB ( klient Java MariaDB ), aby nawiązać połączenie z serwerem MySQL. Ogromną korzyścią z punktu widzenia niezależnego dostawcy oprogramowania jest to, że sterownik MariaDB jest licencjonowany na licencji LGPL, podczas gdy sterownik MySQL jest licencjonowany na licencji GPL. Wydajność sterownika MariaDB wydaje się bardzo dobra.
Pytanie : W jakim stopniu sterownik JDBC MariaDB jest doskonałym zamiennikiem sterownika JDBC MySQL?
Nie szukam debaty na temat względnych zalet tych dwóch. Ale raczej mam nadzieję, że ktoś może odpowiedzieć na jedno z poniższych:
- Sterownik JDBC MariaDB ma ważne problemy z X i Y, więc będziesz mieć problemy, jeśli użyjesz jednego z nich.
- W oparciu o jakiś artykuł lub specyfikację, kod lub inne dowody sterownik MariaDB JDBC w pełni implementuje [przynajmniej] wszystkie metody dostępne w sterowniku MySQL. Wydobrzejesz.
useServerPrepStmts
od tego czasu1.3.0
, ponieważ1.6.0
jest domyślnie wyłączony. Nie mam pojęcia dlaczego.Odpowiedzi:
Trochę się denerwuję.
Po pierwsze, zaletą: użyłem sterownika JDBC MariaDB w „zawsze włączonej” usłudze produkcyjnej z pulą połączeń z bazą danych i działa już dobrze od kilku miesięcy. Usługa korzysta tylko z podstawowych funkcji JDBC z prostymi zapytaniami (np. Bez połączeń, bez obiektów blob). Niedługo wypuszczę kolejną „zawsze włączoną” usługę, która korzysta ze sterownika JDBC MariaDB w podobny sposób.
Postanowiłem użyć sterownika JDBC MariaDB po (ponownym) przejrzeniu kodu źródłowego: w porównaniu do kodu źródłowego sterownika JDBC Oracle MySQL kod źródłowy JDBC MariaDB jest znacznie bardziej czytelny i zrozumiały.
Ale mam wrażenie, że rozwój (9/2014) zwolnił (link jest do wykresu pokazującego błędy utworzone i usunięte). Gdy przeglądam otwarte błędy , widzę wiele poważnych błędów otwartych o wiele za długo (problemy z Hibernacją, a także strefy czasowe / daty). Niektóre z nich mogą nie być błędami, ale powinny już zostać zamknięte. Napotkałem również jeden błąd (przez STASH-4012 ), który powinien zostać ponownie otwarty: błąd CONJ-72 jest zamknięty, ale ostatni komentarz (z 4/2014) wskazuje, że problem nie został rozwiązany w przypadku hibernacji.
Podsumowując, nie uważam sterownika MariaDB JDBC za idealny zamiennik sterownika Oracle MySQL JDBC. Cieszę się, że mogę go nadal używać do prostych czynności (gdzie wszystkie zapytania są wcześniej znane i testowane), ale w przyszłości będę musiał wrócić do sterownika JDBC Oracle MySQL.
źródło
Inną rzeczą, o której należy pamiętać, jest to, że nie masz wyboru, jeśli chcesz rozpowszechniać oprogramowanie inne niż GPL. Jeśli dystrybuujesz oprogramowanie na podstawie licencji innej niż GPL, Oracle może pozwać Cię za naruszenie praw autorskich, jeśli użyjesz ich sterowników.
źródło