Mysql

MariaDB Java 客戶端在多大程度上是 MySQL JDBC (Connector/J) 的完美替代品?

  • March 1, 2015

前提:我發布了一個 Java 應用程序,它將與 MySQL 數據庫建立 JDBC 連接。(在撰寫本文時,它可能是 5.1 或 5.5,但希望問題和答案不會嚴重依賴於版本。)

觀察:顯然,我可以使用 MySQL JDBC 驅動程序 ( Connector/J ) 或 MariaDB JDBC 驅動程序 ( MariaDB Java Client ) 來連接 MySQL 伺服器。從 ISV 的角度來看,一個巨大的好處是 MariaDB 驅動程序是 LGPL 許可的,而 MySQL 驅動程序是 GPL 許可的。MariaDB 驅動程序的性能似乎非常好。

問題:MariaDB JDBC 驅動程序在多大程度上是 MySQL JDBC 驅動程序的完美替代品?

我不是在尋找關於兩者相對優點的辯論。但我希望有人可以按照以下方式之一回答:

  • MariaDB JDBC 驅動程序在 X 和 Y 方面存在重要問題,因此如果使用其中任何一個,您都會遇到麻煩。
  • 基於一些文章或規範或程式碼或其他證據,MariaDB JDBC 驅動程序完全實現$$ at least $$MySQL 驅動程序中可用的所有方法。你會沒事的。

我有點緊張了。

首先,好處是:我在生產環境中的“永遠線上”服務中使用了 MariaDB JDBC 驅動程序,並帶有一個數據庫連接池,現在它已經執行了好幾個月了。該服務僅使用帶有簡單查詢的基本 JDBC 函式(例如,無連接、無 blob)。我即將發布另一個以類似方式使用 MariaDB JDBC 驅動程序的“永遠線上”服務。

在(重新)查看原始碼後,我決定使用 MariaDB JDBC 驅動程序:與 Oracle MySQL JDBC 驅動程序原始碼相比,MariaDB JDBC 驅動程序原始碼更具可讀性和可理解性。

但我得到的印象(9/2014)開發已經放緩(連結是顯示錯誤創建與解決的圖表)。如果我瀏覽打開的錯誤,我會看到許多嚴重錯誤打開的時間太長(Hibernate 以及時區/日期的問題)。其中一些可能不是錯誤,但它們現在應該已經關閉。我還遇到了一個應該重新打開的錯誤(通過STASH-4012 ):錯誤CONJ-72已關閉,但最後一條評論(從 4/2014 開始)表明 Hibernate 沒有解決問題。

總而言之,我不認為 MariaDB JDBC 驅動程序是 Oracle MySQL JDBC 驅動程序的完美替代品。我很高興現在繼續將它用於簡單的東西(所有查詢都是事先知道並經過測試的),但將來我可能不得不切換回 Oracle MySQL JDBC 驅動程序。

要記住的另一件事是,如果您想分發非 GPL 軟體,您*別無選擇。*如果您根據 GPL 以外的任何許可分發軟體,如果您使用他們的驅動程序,Oracle 可能會因侵犯版權而起訴您。

引用自:https://dba.stackexchange.com/questions/44611