跳转到内容

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]

参考文献

[编辑 | 编辑源代码]