MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。[4]
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。
MariaDB由MySQL的创始人米卡埃尔·维德纽斯(Ulf Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自米卡埃尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。
版本
MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。
从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。
发展
成立于2009年,MySQL之父Michael “Monty” Widenius用他的新项目MariaDB完成了对MySQL的“反戈一击”。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的:
1、数据和表定义文件(.frm)是二进制兼容的
2、所有客户端API、协议和结构都是完全一致的
3、所有文件名、二进制、路径、端口等都是一致的
4、所有的MySQL连接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不变
5、mysql-client包在MariaDB服务器中也能够正常运行
6、共享的客户端库与MySQL也是二进制兼容的
也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。 [2]
起源
为何改了个名字呢,这其中是有些典故的。
MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。
MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。
在Oracle控制下的MySQL开发,有两个主要问题:1. MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。2. MySQL新版本的发布速度,在Oracle收购Sun之后大为减缓。Widenius有一个ppt,用数据比较了收购之前和之后新版本的发布速度。有很多bugfix和新的feature,都没有及时加入到发布版本之中。
以上这两个问题,导致了各个大公司,都开发了自己定制的MySQL版本,包括Yahoo!/Facebook/Google/阿里巴巴+淘宝网等等。
MySQL是开源社区的资产,任何个人/组织都无权据为己有。为了依靠广大MySQL社区的力量来更快速的发展MySQL,另外开分支是必须的。
MariaDB默认的存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。可以通过以下语句,转换为支持事务的Maria引擎。ALTER TABLE `tablename` ENGINE=MARIA TRANSACTIONAL=1;
特点
MariaDB 是一个采用 Maria 存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。 [3]
MariaDB相关书籍
MariaDB相关书籍
这个项目的很多代码都改编于 MySQL 6.0,例如 “pool of threads”功能提供解决多数据连接问题。MariaDB 5.1.41 RC可以到这里下载,32位和64位已编译Linux版本,还包括源代码包。MariaDB基于GPL 2.0发布。
与 MySQL 相比较,MariaDB 更强的地方在于:
Maria 存储引擎
PBXT 存储引擎
XtraDB 存储引擎
FederatedX 存储引擎
更快的复制查询处理
线程池
更少的警告和bug
运行速度更快
更多的 Extensions (More index parts, new startup options etc)
更好的功能测试
数据表消除
慢查询日志的扩展统计
支持对 Unicode 的排序
相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。详情见列表。
High Performance
|
Developers
|
DBAs
|
NoSQL
|
---|---|---|---|
Thread pool
线程池
|
Microsecond precision & type
微秒支持
|
Segmented MyISAM keycache
MyISAM缓存分段
|
HandleSocket
直接InnoDB/XtrDB访问
|
Group commit for the binary log
binlog组提交
|
SphinxSE for full-text search
SphinxSE全文索引支持
|
Authentication plugins – PAM, Active Directory
授权插件
|
Dynamic columns
动态列
|
Non-blocking client library
非阻塞库
|
Subqueries materialize
子查询优化
|
LIMIT ROWS EXAMINED
LIMIT行检查限制
|
|
GIS functionality
地理信息系统支持
|
Progress reporting
进度报告
|
目标
目标是提供一个由社区开发的、稳定的、总是免费的MySQL分支,在用户级别上兼容主流版本。我们为自己的版本和上游、社区版的互操作性提高而努力。
MariaDB分支与最新的MySQL发布版本的分支保持一致性, 例如MariaDB 5.1.47对应MySQL 5.1.47,等等。
其他介绍
数据库应用程序与主应用程序分开存在,并存储数据集合。 每个数据库都使用一个或多个API来创建,访问,管理,搜索和复制其包含的数据。
数据库还使用非关系数据源,例如对象或文件。 然而,数据库证明是大数据集的最佳选择,这将遭受缓慢的检索和与其他数据源写入。
关系数据库管理系统或RDBMS将数据存储在各种表中。这些表之间的关系使用主键和外键建立。
RDBMS提供以下功能 –
- 它们使您能够使用表,列和索引来实现数据源。
- 它们确保多个表行间引用的完整性。
- 他们自动更新索引。
- 他们解释SQL查询和操作从表操作或源数据。
RDBMS术语
在我们开始讨论MariaDB之前,让我们来看一下与数据库相关的一些术语。
- Database – 数据库是由保存相关数据的表组成的数据源。
- Table -表,这意味着电子表格,是包含数据的矩阵。
- Column – 表示数据元素的列是保存一种类型的数据的结构;例如,送货日期。
- Row – 行是对相关数据进行分组的结构;例如,用于客户的数据。它也被称为元组,条目或记录。
- Redundancy – 此术语指的是存储数据两次,以加速系统。
- Primary Key – 这指的是唯一的标识值。此值不能在表中出现两次,并且只有一个行与其关联。
- Foreign Key – 外键用作两个表之间的链接。
- Compound Key -复合键,或复合键,是指多个列的关键。它指的是多列由于缺乏独特的质量一列。
- Index – 索引实际上与书的索引相同。
- Referential Integrity – 此术语指确保所有外键值指向现有行。
MARIA数据库
MariaDB是由MySQL的原始开发人员创建的MySQL的流行分支。 它源于与MySQL收购Oracle有关的问题。 它支持小数据处理任务和企业需求。 它旨在成为MySQL的替代,只需要简单的卸载MySQL和安装MariaDB。 MariaDB提供与MySQL等相同的功能。
MariaDB的主要特性
MariaDB的重要特性是 –
- 所有MariaDB都在GPL,LGPL或BSD下。
- MariaDB包括各种存储引擎,包括高性能存储引擎,用于与其他RDBMS数据源一起工作。
- MariaDB使用标准和流行的查询语言。
- MariaDB在多个操作系统上运行,并支持各种各样的编程语言。
- MariaDB提供对PHP的支持,PHP是最流行的Web开发语言之一。
- MariaDB提供Galera集群技术。
- MariaDB还提供了许多在MySQL中不可用的操作和命令,并消除/取代影响性能的功能。
入门
在开始本教程之前,请确保您具有PHP和HTML的一些基本知识,特别是我们的PHP和HTML教程中讨论的材料。
本指南重点介绍在PHP环境中使用MariaDB,因此我们的示例将对PHP开发人员最有用。
如果您不熟悉或需要查看,我们强烈建议您查看我们的PHP教程。