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

相關文章
相關標籤/搜索