MariaDB:修订间差异
TeodoroSeccombe(留言 | 贡献) 小 创建页面,内容为“。” |
创建页面,内容为“'''MariaDB'''(全称:MariaDB Community Server)是一个开源的[关系型数据库管理系统](RDBMS),是[MySQL]的一个分支。它由MySQL的创始人[Michael Widenius]在2009年主导发起,旨在保持开源并避免MySQL在被Oracle收购后可能出现的闭源风险<ref name="wiki">Wikipedia: MariaDB</ref><ref name="baike">[https://baike.baidu.com/item/mariaDB/6466119 百度百科: MariaDB]</ref>。MariaDB保持了与MySQL的高度…” |
||
| 第1行: | 第1行: | ||
'''MariaDB'''(全称:MariaDB Community Server)是一个开源的[关系型数据库管理系统](RDBMS),是[MySQL]的一个分支。它由MySQL的创始人[Michael Widenius]在2009年主导发起,旨在保持开源并避免MySQL在被Oracle收购后可能出现的闭源风险<ref name="wiki">[[Wikipedia: MariaDB]]</ref><ref name="baike">[https://baike.baidu.com/item/mariaDB/6466119 百度百科: MariaDB]</ref>。MariaDB保持了与MySQL的高度兼容性,被视为MySQL的直接替代方案,并被广泛应用于各类网站和企业级系统<ref name="official_intro">[https://mariadb.org/zh/ MariaDB官方简介]</ref>。 | |||
{| class="infobox" style="border:1px solid #ccc; background:#f8f9fa; width:24em; float:right; margin:0 0 1em 1em; border-spacing:5px;" | |||
! colspan="2" style="text-align:center;" |'''MariaDB''' | |||
|- | |||
|中文名 | |||
|MariaDB数据库管理系统 | |||
|- | |||
|英文名 | |||
|MariaDB | |||
|- | |||
|开发者 | |||
|MariaDB plc, MariaDB基金会 | |||
|- | |||
|首次发布 | |||
|2009年10月29日<ref name="first_release">[https://mariadb.org.cn/en/celebrating-15-years-of-mariadb-server/ MariaDB Server turns fifteen!]</ref> | |||
|- | |||
|编程语言 | |||
|C, C++, Perl, Bash<ref name="wiki" /> | |||
|- | |||
|操作系统 | |||
|Linux, Windows, macOS<ref name="wiki" /> | |||
|- | |||
|类型 | |||
|关系型数据库管理系统 | |||
|- | |||
|许可协议 | |||
|GPLv2, LGPLv2.1(客户端库)<ref name="wiki" /> | |||
|} | |||
== 历史 == | |||
MariaDB的起源与MySQL的商业收购密切相关。2008年,Sun Microsystems收购了MySQL AB公司,随后Sun在2009年被Oracle Corporation收购。这引发了开源社区对MySQL项目未来发展的担忧,担心其有闭源的潜在风险<ref name="baike" />。为了保护MySQL的开源生态,Michael Widenius在2009年基于MySQL的源代码创建了一个分支,并将其命名为MariaDB,取自他小女儿Maria的名字<ref name="official_intro" />。 | |||
2009年10月29日,MariaDB发布了首个版本5.1.38<ref name="first_release" />。最初的大部分原始开发者都加入了该项目,促使MariaDB迅速发展<ref name="official_intro" />。2012年,为了反映其新增的诸多独创功能,MariaDB的版本号从5.5直接跃升至10.0,从此与MySQL的版本号分道扬镳<ref name="official_intro" />。 | |||
MariaDB的治理结构由MariaDB基金会与商业公司MariaDB plc共同构成。其中,MariaDB基金会是一家在美国特拉华州注册的非营利组织,负责维护代码的开源性、社区治理和项目的长期连续性,是MariaDB代码的托管人和社区的守护者<ref name="foundation">[https://mariadb.com/docs/server/clients-and-utilities/server-client-software/mariadb-foundation About the MariaDB Foundation]</ref><ref name="foundation_ppt">[https://mariadb.org/wp-content/uploads/2025/07/Anna-Widenius-What-is-MariaDB-Foundation.pdf What is MariaDB Foundation]</ref>。而MariaDB plc则是一家商业公司,负责MariaDB Enterprise和SkySQL等企业级产品的开发与销售,并为社区版贡献了主要的代码量<ref name="foundation_ppt" />。 | |||
== 重要版本 == | |||
MariaDB早期版本(直至5.5)均遵循MySQL的版本号方案,旨在实现与之直接替换。此后,MariaDB启用了独立的版本体系。 | |||
当前的MariaDB采用混合发布模式,包含长期支持版(LTS)、滚动版和开发版。目前最新的长期稳定版是MariaDB 12.3系列(维护至2029年6月),当前的滚动版是MariaDB 13.0,当前的开发版是MariaDB 13.1<ref name="release_model">[https://mariadb.com/docs/release-notes/community-server MariaDB Release Notes Overview]</ref>。 | |||
MariaDB 12.3于2026年达到稳定(GA)状态,引入了一系列新特性,包括基于InnoDB的新二进制日志实现、对Aria存储引擎的分段键缓存,以及增强了对向量搜索等AI工作负载的支持<ref name="12.3_features">[https://mariadb.com/docs/release-notes/community-server/12.3/mariadb-12.3-changes-and-improvements MariaDB 12.3 Changes & Improvements]</ref><ref name="12.3_ai">[https://mariadb.com/resources/blog/mariadb-community-server-12-3-lts-scales-ai-workloads/ MariaDB Community Server 12.3 LTS: How It Scales AI Workloads]</ref>。 | |||
{| class="wikitable" | |||
|+MariaDB 主要版本历程 | |||
!系列 | |||
!首次发布 | |||
!状态 | |||
!说明 | |||
|- | |||
|5.1 | |||
|2009年10月 | |||
|已终止 | |||
|首个版本,基于MySQL 5.1<ref name="first_release" /> | |||
|- | |||
|5.2-5.5 | |||
|2010-2012 | |||
|已终止 | |||
|遵循MySQL版本号,用于平滑过渡<ref name="official_intro" /> | |||
|- | |||
|10.0 | |||
|2012年11月 | |||
|已终止 | |||
|首个独立版本号,不再跟随MySQL<ref name="official_intro" /> | |||
|- | |||
|10.1-10.5 | |||
|2015-2020 | |||
|多数已终止 | |||
|长期稳定与创新并行开发 | |||
|- | |||
|10.6-10.11 | |||
|2021-2022 | |||
|部分维护中 | |||
|最后一批10.x系列的LTS<ref name="release_model" /> | |||
|- | |||
|11.4 | |||
|2024年2月 | |||
|稳定(LTS) | |||
|长期支持版,维护至2028年2月<ref name="release_model" /> | |||
|- | |||
|11.8 | |||
|2025年2月 | |||
|稳定(LTS) | |||
|长期支持版,维护至2028年6月<ref name="release_model" /> | |||
|- | |||
|12.3 | |||
|2026年2月 | |||
|稳定(LTS) | |||
|最新长期支持版,维护至2029年6月<ref name="12.3_features" /> | |||
|- | |||
|13.0 | |||
|2026年3月 | |||
|滚动版 | |||
|当前滚动预览版<ref name="release_model" /> | |||
|} | |||
== 架构 == | |||
MariaDB沿用了MySQL的可插拔存储引擎架构。在该架构中,数据库的核心功能被抽象化,具体的文件管理、索引创建、数据读写等操作均由存储引擎插件负责实现<ref name="architecture">[https://mariadb.com/docs/server/server-management/install-and-upgrade-mariadb/migrating-to-mariadb/migrating-to-mariadb-from-sql-server/understanding-mariadb-architecture Understanding MariaDB Architecture]</ref>。 | |||
MariaDB作为一个由MySQL衍生而来的关系型数据库,其架构继承了源自MySQL的可插拔存储引擎设计,这种高内聚低耦合的架构允许根据特定场景选择最优的存储引擎<ref name="architecture" />。 | |||
=== 存储引擎 === | |||
存储引擎是MariaDB架构的核心,负责在物理层面管理数据文件、索引和缓存。用户在建表时可以为不同的表指定不同的引擎<ref name="architecture" />。 | |||
主要的存储引擎包括: | |||
* '''InnoDB''':自MariaDB 10.2起成为默认存储引擎,支持事务、行级锁和外键,适用于大多数通用的事务处理场景<ref name="engine_choice">[https://mariadb.com/docs/server/server-usage/storage-engines/choosing-the-right-storage-engine Choosing the Right Storage Engine]</ref>。 | |||
* '''Aria''':MariaDB自研的存储引擎,是MyISAM的现代化改进版,具备崩溃安全性,自MariaDB 10.4起被用作系统表的默认引擎<ref name="engine_choice" />。 | |||
* '''XtraDB''':由Percona开发的InnoDB性能增强版,曾是MariaDB 10.1及更早版本的默认引擎,但后续版本已回归上游InnoDB<ref name="engine_choice" />。 | |||
* '''MyRocks''':基于RocksDB的LSM树存储引擎,具有高压缩比和低写入放大的特点,适合写密集型和容量敏感的场景<ref name="engine_choice" />。 | |||
* '''ColumnStore''':分布式列式存储引擎,采用大规模并行处理架构,专为大数据分析和数据仓库场景设计<ref name="engine_choice" />。 | |||
* '''CONNECT''':一种特殊的存储引擎,允许MariaDB直接访问和查询外部数据源(如文本文件、其他数据库等)<ref name="engine_choice" />。 | |||
== 特性 == | |||
MariaDB作为一款开源数据库,在保持与MySQL高度兼容的同时,也发展出了一系列独特的功能扩展。 | |||
=== 与MySQL的兼容性 === | |||
MariaDB旨在成为MySQL的“直接替代品”。从数据角度看,数据文件和表定义文件(.frm)是二进制兼容的;从客户端协议看,所有的客户端API、结构体和端口均与MySQL保持一致。这意味着所有为MySQL编写的连接器(如PHP、Python、Perl、Java等)无需修改即可与MariaDB协同工作<ref name="compatibility">[https://mariadb.com/docs/release-notes/community-server/about/compatibility-and-differences/mariadb-vs-mysql-compatibility MariaDB versus MySQL - Compatibility]</ref>。 | |||
不过,随着两个项目的独立演进,两者间也开始出现差异。例如,在全局事务标识符的实现格式、JSON数据的存储方式和部分SQL语法上存在不兼容之处。社区建议在迁移前参考官方的兼容性矩阵进行测试<ref name="compatibility_matrix">[https://mariadb.com/docs/server/server-management/install-and-upgrade-mariadb/migrating-to-mariadb/moving-from-mysql/mysql-to-mariadb-compatibility-matrix MySQL to MariaDB Compatibility Matrix]</ref>。 | |||
=== 高可用与分布式 === | |||
MariaDB在分布式和高可用架构方面提供了多种解决方案: | |||
* '''Galera Cluster''':一种基于同步复制的多主集群解决方案,能够提供强一致性保证,支持多节点写入和自动节点管理。Galera Cluster在MariaDB Community Server 12.3及后续版本中继续以包含形式提供,确保已有部署的稳定运行<ref name="galera">[https://mariadb.org/galera-continuity-and-responsibility-how-the-foundation-and-mariadb-plc-move-forward/ Galera, continuity, and responsibility]</ref>。 | |||
* '''MaxScale''':一款数据库代理软件,用于实现读写分离、负载均衡、查询路由和数据库防火墙功能。 | |||
* '''Xpand''':一种原生的分布式存储引擎(原MariaDB Xpand),支持自动数据分片和弹性扩展,适用于对水平扩展能力要求极高的场景<ref name="distributed">[https://cloud.baidu.com/article/3639763 MariaDB分布式架构深度解析]</ref>。 | |||
=== 高级功能 === | |||
MariaDB还包含了许多高级数据库特性: | |||
* **虚拟列**:支持生成列,其值由表中其他列计算得出。 | |||
* **动态列**:支持在表中存储非结构化数据,通过键值对形式实现NoSQL风格的灵活模式。 | |||
* **多源复制**:允许一个从库同时从多个主库接收数据变更,便于数据聚合。 | |||
* **JSON函数与数据类型**:虽然MariaDB将JSON存储为LONGTEXT并进行约束检查,但它提供了一整套JSON函数用于处理非结构化数据<ref name="official_intro" />。 | |||
* **Oracle兼容模式**:提供了SQL模式(SQL_MODE=ORACLE),允许在不需要修改代码的情况下直接运行部分Oracle数据库的应用程序<ref name="official_intro" />。 | |||
== 参考 == | |||
MariaDB被广泛应用于全球范围内的各大企业和开源项目中。 | |||
维基百科在2013年迁移了其MySQL数据库至MariaDB<ref name="official_intro" />。此外,WordPress.com和Google也是MariaDB的著名用户<ref name="official_intro" />。在企业领域,MariaDB被包括新加坡星展银行(DBS Bank)、Virgin Media O2、诺基亚在内的众多组织采用<ref name="customers">[https://mariadb.com/resources/customer-stories/ MariaDB Customers]</ref>。Acronis在其全球备份基础设施中嵌入了MariaDB,Nextcloud将其作为默认数据库<ref name="foundation_ppt" />。 | |||
MariaDB拥有庞大的用户群体。据MariaDB基金会调查,48%的受访者使用MariaDB已超过10年,且社区反馈显示MariaDB的使用量正在持续增长<ref name="survey">[https://mariadb.org/state-of-mariadb-2025-the-results-are-in/ State of MariaDB 2025 Survey Results]</ref>。 | |||
== 参考文献 == | |||
<references /> | |||