跳至內容

MariaDB

出自轻之舟百科

MariaDB(全稱:MariaDB Community Server)是一個開源的[關係型資料庫管理系統](RDBMS),是[MySQL]的一個分支。它由MySQL的創始人[Michael Widenius]在2009年主導發起,旨在保持開源並避免MySQL在被Oracle收購後可能出現的閉源風險[1][2]。MariaDB保持了與MySQL的高度兼容性,被視為MySQL的直接替代方案,並被廣泛應用於各類網站和企業級系統[3]

MariaDB
中文名 MariaDB資料庫管理系統
英文名 MariaDB
開發者 MariaDB plc, MariaDB基金會
首次發布 2009年10月29日[4]
程式語言 C, C++, Perl, Bash[1]
作業系統 Linux, Windows, macOS[1]
類型 關係型資料庫管理系統
許可協議 GPLv2, LGPLv2.1(客戶端庫)[1]

MariaDB的起源與MySQL的商業收購密切相關。2008年,Sun Microsystems收購了MySQL AB公司,隨後Sun在2009年被Oracle Corporation收購。這引發了開源社區對MySQL項目未來發展的擔憂,擔心其有閉源的潛在風險[2]。為了保護MySQL的開源生態,Michael Widenius在2009年基於MySQL的原始碼創建了一個分支,並將其命名為MariaDB,取自他小女兒Maria的名字[3]

2009年10月29日,MariaDB發布了首個版本5.1.38[4]。最初的大部分原始開發者都加入了該項目,促使MariaDB迅速發展[3]。2012年,為了反映其新增的諸多獨創功能,MariaDB的版本號從5.5直接躍升至10.0,從此與MySQL的版本號分道揚鑣[3]

MariaDB的治理結構由MariaDB基金會與商業公司MariaDB plc共同構成。其中,MariaDB基金會是一家在美國德拉瓦州註冊的非營利組織,負責維護代碼的開源性、社區治理和項目的長期連續性,是MariaDB代碼的託管人和社區的守護者[5][6]。而MariaDB plc則是一家商業公司,負責MariaDB Enterprise和SkySQL等企業級產品的開發與銷售,並為社區版貢獻了主要的代碼量[6]

重要版本

[編輯 | 編輯原始碼]

MariaDB早期版本(直至5.5)均遵循MySQL的版本號方案,旨在實現與之直接替換。此後,MariaDB啟用了獨立的版本體系。

當前的MariaDB採用混合發布模式,包含長期支持版(LTS)、滾動版和開發版。目前最新的長期穩定版是MariaDB 12.3系列(維護至2029年6月),當前的滾動版是MariaDB 13.0,當前的開發版是MariaDB 13.1[7]

MariaDB 12.3於2026年達到穩定(GA)狀態,引入了一系列新特性,包括基於InnoDB的新二進制日誌實現、對Aria存儲引擎的分段鍵緩存,以及增強了對向量搜索等AI工作負載的支持[8][9]

MariaDB 主要版本歷程
系列 首次發布 狀態 說明
5.1 2009年10月 已終止 首個版本,基於MySQL 5.1[4]
5.2-5.5 2010-2012 已終止 遵循MySQL版本號,用於平滑過渡[3]
10.0 2012年11月 已終止 首個獨立版本號,不再跟隨MySQL[3]
10.1-10.5 2015-2020 多數已終止 長期穩定與創新並行開發
10.6-10.11 2021-2022 部分維護中 最後一批10.x系列的LTS[7]
11.4 2024年2月 穩定(LTS) 長期支持版,維護至2028年2月[7]
11.8 2025年2月 穩定(LTS) 長期支持版,維護至2028年6月[7]
12.3 2026年2月 穩定(LTS) 最新長期支持版,維護至2029年6月[8]
13.0 2026年3月 滾動版 當前滾動預覽版[7]

MariaDB沿用了MySQL的可插拔存儲引擎架構。在該架構中,資料庫的核心功能被抽象化,具體的文件管理、索引創建、數據讀寫等操作均由存儲引擎插件負責實現[10]

MariaDB作為一個由MySQL衍生而來的關係型資料庫,其架構繼承了源自MySQL的可插拔存儲引擎設計,這種高內聚低耦合的架構允許根據特定場景選擇最優的存儲引擎[10]

存儲引擎

[編輯 | 編輯原始碼]

存儲引擎是MariaDB架構的核心,負責在物理層面管理數據文件、索引和緩存。用戶在建表時可以為不同的表指定不同的引擎[10]

主要的存儲引擎包括:

  • InnoDB:自MariaDB 10.2起成為默認存儲引擎,支持事務、行級鎖和外鍵,適用於大多數通用的事務處理場景[11]
  • Aria:MariaDB自研的存儲引擎,是MyISAM的現代化改進版,具備崩潰安全性,自MariaDB 10.4起被用作系統表的默認引擎[11]
  • XtraDB:由Percona開發的InnoDB性能增強版,曾是MariaDB 10.1及更早版本的默認引擎,但後續版本已回歸上游InnoDB[11]
  • MyRocks:基於RocksDB的LSM樹存儲引擎,具有高壓縮比和低寫入放大的特點,適合寫密集型和容量敏感的場景[11]
  • ColumnStore:分布式列式存儲引擎,採用大規模並行處理架構,專為大數據分析和數據倉庫場景設計[11]
  • CONNECT:一種特殊的存儲引擎,允許MariaDB直接訪問和查詢外部數據源(如文本文件、其他資料庫等)[11]

MariaDB作為一款開源資料庫,在保持與MySQL高度兼容的同時,也發展出了一系列獨特的功能擴展。

與MySQL的兼容性

[編輯 | 編輯原始碼]

MariaDB旨在成為MySQL的「直接替代品」。從數據角度看,數據文件和表定義文件(.frm)是二進制兼容的;從客戶端協議看,所有的客戶端API、結構體和埠均與MySQL保持一致。這意味著所有為MySQL編寫的連接器(如PHP、Python、Perl、Java等)無需修改即可與MariaDB協同工作[12]

不過,隨著兩個項目的獨立演進,兩者間也開始出現差異。例如,在全局事務標識符的實現格式、JSON數據的存儲方式和部分SQL語法上存在不兼容之處。社區建議在遷移前參考官方的兼容性矩陣進行測試[13]

高可用與分布式

[編輯 | 編輯原始碼]

MariaDB在分布式和高可用架構方面提供了多種解決方案:

  • Galera Cluster:一種基於同步複製的多主集群解決方案,能夠提供強一致性保證,支持多節點寫入和自動節點管理。Galera Cluster在MariaDB Community Server 12.3及後續版本中繼續以包含形式提供,確保已有部署的穩定運行[14]
  • MaxScale:一款資料庫代理軟體,用於實現讀寫分離、負載均衡、查詢路由和資料庫防火牆功能。
  • Xpand:一種原生的分布式存儲引擎(原MariaDB Xpand),支持自動數據分片和彈性擴展,適用於對水平擴展能力要求極高的場景[15]

高級功能

[編輯 | 編輯原始碼]

MariaDB還包含了許多高級資料庫特性:

  • **虛擬列**:支持生成列,其值由表中其他列計算得出。
  • **動態列**:支持在表中存儲非結構化數據,通過鍵值對形式實現NoSQL風格的靈活模式。
  • **多源複製**:允許一個從庫同時從多個主庫接收數據變更,便於數據聚合。
  • **JSON函數與數據類型**:雖然MariaDB將JSON存儲為LONGTEXT並進行約束檢查,但它提供了一整套JSON函數用於處理非結構化數據[3]
  • **Oracle兼容模式**:提供了SQL模式(SQL_MODE=ORACLE),允許在不需要修改代碼的情況下直接運行部分Oracle資料庫的應用程式[3]

MariaDB被廣泛應用於全球範圍內的各大企業和開源項目中。

維基百科在2013年遷移了其MySQL資料庫至MariaDB[3]。此外,WordPress.com和Google也是MariaDB的著名用戶[3]。在企業領域,MariaDB被包括新加坡星展銀行(DBS Bank)、Virgin Media O2、諾基亞在內的眾多組織採用[16]。Acronis在其全球備份基礎設施中嵌入了MariaDB,Nextcloud將其作為默認資料庫[6]

MariaDB擁有龐大的用戶群體。據MariaDB基金會調查,48%的受訪者使用MariaDB已超過10年,且社區反饋顯示MariaDB的使用量正在持續增長[17]

參考文獻

[編輯 | 編輯原始碼]