mariaDB vs mysql

mariaDB vs mysql

今天遇到一个库使用的是mariaDB的数据库版本html

Server version: 10.1.20-MariaDB MariaDB Server

理了一下mariaDB和mysql的关系。mysql

分支

简要来讲,mariaDB是mysql上的分支。首先为何要有这个分支呢?mysql被oracle收购以后,本来的那些mysql的开发者(MySQL 的联合创始人兼CEO Michael Widenius)以为mysql后续的发展之路会受到oracle公司的影响。因此单独出来,建立了一家公司Monty Program Ab。这个公司从mysql上拉一个分支出来进行开发和维护,命名为mariaDB。git

mariaDB的github上的项目地址为:https://github.com/MariaDBgithub

mariaDB的主页为:https://mariadb.org/sql

mysql如今最新版本是5.7。mariaDB在5.5以前都兼容了mysql全部的新特性。也就是说,mariaDB是mysql的超集。可是固然mariaDB每次须要同步mysql的新的特性到本身的分支,这个是很是痛苦的事情。可是mariaDB的目标是另外建立一个独立产品和社区。因此mariaDB建立了10的版本号。从这个版本号开始,mariaDB的特性和功能就愈来愈走向独立了。数据库

功能

mariaDB的能够看做是mysql的超集。mysql有的特性mariaDB都有,可是mariaDB有的功能不必定mysql有。好比Dynamic columns。json

Dynamic columns

这个功能有点像json,表中有一个字段,能够存储key,value格式的数据,而且这个value的数据类型能够动态定义。这样,就好像mysql的表扩展了多个动态列。oracle

好比:ide

CREATE TABLE bird_sightings
(
    sighting_id INT AUTO_INCREMENT KEY,
    human_id INT,
    time_seen DATETIME,
    observations BLOB
);

这里的observations是BLOB类型,能够存储key-value的格式。post

INSERT INTO bird_sightings
(human_id, time_seen, observations)
VALUES
  (36, NOW(),
   COLUMN_CREATE(
       'wing-shape','rounded',
       'wingspan','60',
       'bill-shape','all-purpose',
       'main-color','orange'
      ));

看这里的observations就存储了四个key-value。
当select的时候

ECT name_first AS 'Birder',
DATE_FORMAT(time_seen, '%b %d') AS 'Date',
COLUMN_GET(observations, 'wing-shape' AS CHAR) AS 'Wings',
COLUMN_GET(observations, 'wingspan' AS INT) AS 'Span (cm)',
COLUMN_GET(observations, 'bill-shape' AS CHAR) AS 'Beak'
FROM bird_sightings
JOIN humans USING(human_id);

+---------+--------+---------+-----------+-------------+
| Birder  | Date   | Wings   | Span (cm) | Beak        |
+---------+--------+---------+-----------+-------------+
| Anahit  | Apr 14 | pointed |      NULL | all-purpose |
| Michael | Apr 14 | rounded |        60 | all-purpose |
+---------+--------+---------+-----------+-------------+

这里的COLUMN_GET有个输出类型的设置。这一个功能就是mariaDB特有的。感受和postgres里面的jsonb结构很类似。

存储引擎

mariaDB提供的XtraDB存储引擎替换InnoDB。XtraDB 是 Percona 开发维护的 InnoDB 威力增强版,整合 Google、Facebook 等公司和 MySQL 社区的补丁。

性能

在性能上,mariaDB的性能有必定程度优于mysql是不争的事实。好比维基百科就从mysql迁移到mariaDB了。反馈,总的来讲,mariaDB会比mysql在qps上有2-10%的提高。固然我相信不一样的场景,不一样的语言可能会有不一样的性能提高程度。

参考

http://radar.oreilly.com/2015/04/dynamic-columns-in-mariadb.html
https://seravo.fi/2015/10-reasons-to-migrate-to-mariadb-if-still-using-mysql
https://softwareengineering.stackexchange.com/questions/120178/whats-the-difference-between-mariadb-and-mysql

相关文章
相关标签/搜索