Предпосылка : я поставляю приложение Java, которое установит соединение JDBC с базой данных MySQL. (На момент написания этой статьи это могло быть 5.1 или 5.5, но, надеюсь, вопрос и ответ не сильно зависят от версии.)
Замечание : Ясно, что я могу использовать драйвер MySQL JDBC ( Connector / J ) или драйвер MariaDB JDBC ( MariaDB Java Client ), чтобы установить соединение с сервером MySQL. Одним из огромных преимуществ с точки зрения ISV является то, что драйвер MariaDB лицензируется по лицензии LGPL, а драйвер MySQL - по лицензии GPL. Производительность драйвера MariaDB кажется очень хорошей.
Вопрос : Насколько драйвер JDBC MariaDB является идеальной заменой драйвера JDBC MySQL?
Я не ищу дебатов об относительных достоинствах этих двух. Но скорее я надеюсь, что кто-то может ответить в соответствии с одним из них:
- Драйвер MariaDB JDBC имеет важные проблемы с X и Y, поэтому у вас будут проблемы, если вы будете использовать любой из них.
- Основанный на некоторой статье или спецификации или коде или другом свидетельстве, драйвер JDBC MariaDB полностью реализует [по крайней мере] все методы, доступные в драйвере MySQL. Вам будет хорошо.
useServerPrepStmts
тех пор1.3.0
, как1.6.0
он выключен по умолчанию. Понятия не имею почему.Ответы:
Я немного нервничаю.
Во-первых, положительный момент: я использовал драйвер JDBC MariaDB в «постоянно включенной» службе на производстве с пулом соединений с базой данных, и он работает нормально уже пару месяцев. Сервис использует только базовые функции JDBC с простыми запросами (например, без объединений, без BLOB-объектов). Я собираюсь выпустить еще один "всегда включенный" сервис, который аналогичным образом использует драйвер JDBC MariaDB.
Я решил использовать драйвер MariaDB JDBC после (повторного) просмотра исходного кода: по сравнению с исходным кодом драйвера Oracle MySQL JDBC исходный код драйвера MariaDB JDBC гораздо более читабелен и понятен.
Но у меня сложилось впечатление (9/2014) разработка замедлилась (ссылка на график, показывающий ошибки, созданные и устраненные). Если я просматриваю открытые ошибки, я вижу много серьезных ошибок, открытых слишком долго (проблемы с Hibernate, а также часовые пояса / даты). Некоторые из них, возможно, не являются ошибками, но тогда они уже должны были быть закрыты. Я также столкнулся с одной ошибкой (через STASH-4012 ), которая должна быть повторно открыта: ошибка CONJ-72 закрыта, но последний комментарий (от 4/2014) указывает, что проблема не решена для Hibernate.
В общем, я не считаю драйвер JDBC MariaDB идеальной заменой драйвера JDBC Oracle MySQL. Я рад продолжать использовать его для простых вещей (где все запросы заранее известны и проверены), но в будущем мне, возможно, придется вернуться к драйверу Oracle MySQL JDBC.
источник
Еще одна вещь, которую нужно иметь в виду, это то, что у вас нет выбора, если вы хотите распространять программное обеспечение не-GPL. Если вы распространяете программное обеспечение по какой-либо лицензии, кроме GPL, Oracle может подать в суд на вас за нарушение авторских прав, если вы используете их драйверы.
источник