進度條

MariaDB 資料庫是什麼?它跟MySQL有什麼不同?

收購之後的分道揚鑣,淺談MySQL與MariaDB的愛恨糾葛

作者: 進度條編輯群 更新日期:

前一篇文章中,小編針對了MySQL的歷史緣由以及MariaDB的誕生始末,但其中的愛恨糾葛其實並沒有這麼單純,在本文中,小編會針對MariaDB的歷史再做一些著墨,並對兩者的一些差異做出部分的分析比較。

 

 

起初Oracle收購昇陽公司,最重要的當然是要價不菲JAVA這當紅炸子雞,雖然現在後端有更多的選擇,但是當時大型商業架構「翻新」基本上就是獨厚JAVA 。(當時很多系統都是用COBOL製作,許多大型公司例如銀行,從當時就開始改成使用JAVA製作。不過當然還是有些舊系統一直使用至今,2020疫情影響之一 : 紐澤西急需會COBOL的程式高手)

 

 

而且Oracle「公司」是有做資料庫的,並且是明星商品同時也叫做Oracle database。與MySQL並存這樣兩條產品線對Oracle公司本身來說是否有效益還很難講,雖然,Oracle表示仍然會全力開源並且維護MySQL,但畢竟收購來消滅競爭對手是商業上的一種相當主流的作法。

 

 

所以後來開發策略上,Oracle雖然沒有真如悲觀人士所想那樣讓MySQL成為歷史,但是並沒有把重心放在MySQL上,而且開發團隊遭到一定程度的改組。同年作者Michael Widenius(Monty)與部分MySQL開發團隊成員離開昇揚利用MySQL分支加上社群開發的功能推出MariaDB。其中Maria為Monty最小的女兒的名稱,正如同My為Monty大女兒的名稱一樣的命名方式(官方來源)。

 

 

也因為如此,MariaDB直到5.5版本,都依照MySQL的對應的版號版本進行開發,可以想成MySQL為核心,MariaDB再使用自己的Patch加上其他功能。不過在MySQL 5.6以後版號對應有點變化,MySQL 5.6對應的是MariaDB 10.0。

(不過MariaDB並不是唯一做這件事的公司,基本上有興趣的話你也可以製作自己的版本,跟Linux發行版一樣的意思。)

 

而這也是為什麼MariaDB的API和協定相容MySQL,尤其是Client 與 Libaray等可以共用相當方便。但其中還是有差異,最大的差異點,莫過就是封閉與開源的兩大差別,MariaDB因為有著開源社區的幫忙,更是新增了許多MySQL沒有的功能,但卻又可以支援所有使用MySQL的Conveter以及應用程式等,舉例來說,因為MariaDB的資料庫MySQL結構和索引相同,一但有公司想要從MySQL轉換到MariaDB,無需更改應用程式,幾乎可以無痛轉移。

 

補充:

如果你在安裝的時候(例如 apt 或是 yum install)找不到以MariaDB開頭的函式庫或是輔助程式的時候,可以嘗試用MySQL為開頭去找,因為很多程式其實是共用的。
 

 

 

 

 

 

但這並不代表兩者之間可以完全百分百兼容,其實在MariaDB的文檔之中,還是有列出之間不兼容的等等問題,所以移轉上也並非易事,但高支援度以及開源等特性,的確也是許多團隊對移轉做出考量的一大誘因

 

因此,許多過去曾使用MySQL的團隊也紛紛投向了MariaDB的懷抱,例如維基百科就是一個顯著案例。但這也意味著,許多優勝劣敗的比較也此油然而生。因此民間也多了許多像是兩者之間的效能評比,但效能評比還是要考慮到使用場景,所以小編不過多著墨,以下針對一些淺顯易見的分水嶺做一些簡單的比較。
(MariaDB完整官方比較請點此)

 

License 

MariaDB 採用了 GPL v2 並屬於MariaDB基金會管理,而 MySQL 提供GPL v2和 Enterprise license。這就意味著MySQL部分功能可是需要收費的呀!這對企業的選擇上,就會有預算以及效能上的考量囉!不過除了 MariaDB 「基金會」的運作是純粹靠贊助外,MariaDB「公司」是有付費支援與其他雲端整合方案的,所以有需要協助也都還是有付費找人協助解決問題的可能。

 

 

開源 vs 非開源

MariaDB是透過開源社區做開發導向,所以任何有價值的開發都可能成為補丁的形式加入到正式版之中,所以其版本的發佈也比非開源的MySQL頻繁許多,所以一但發現錯誤,會比MySQL容易修正,但這也意味著你必須頻繁的更新MariaDB版本來換取更高的穩定度。

(不過現在都是大公司在玩這些社群,所以並不真的那麼「社群」,相對品質也會相當的好。)

 

 

 

 

所以到底該使用甲骨文公司Comunity版本的MySQL,還是開源版本的MariaDB,並沒有絕對的答案,畢竟在功能上還是有著差異存在,儘管沒有最佳解,但大家還是可以多做功課,來選出最適合自己的解決方案!

 

 

最後工商一下

進度條有MySQL的初階至中階課程,除了基本SQL語法的教學外,也包含資料庫設計理念與實作。對於一直搞不懂資料庫的同學會有相當的幫助喔!

課程連結:從零開始的SQL語法與資料庫設計 - 以MySQL來攻略

 

如果同時對Linux、AWS、Apache與Nginx有興趣的話
也可以考慮我們的組合課程喔!

套裝課程:Linux AWS + MySQL 進階輔助課程組合
 

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊