來源 | OSCHINA 社區(qū)
作者 | 愛可生開源社區(qū)
在本文中,我們將探討 MySQL 和 MariaDB 服務(wù)生命周期和版本管理方式兩個(gè)方面目前的狀況及相關(guān)歷史背景。
需要說明的是 MySQL 和 MariaD B 都有社區(qū)版和企業(yè)版。對(duì)于 MySQL,這兩個(gè)版本都是由同一家公司(Oracle)提供,遵循相同的版本編號(hào)體系,企業(yè)版包含更豐富的功能。對(duì)于 MariaDB,社區(qū)版由 MariaDB 基金會(huì)提供,而企業(yè)版由 MariaDB PLC 提供,采用獨(dú)有的生命周期 與功能配置。為簡(jiǎn)單起見,我們將重點(diǎn)關(guān)注社區(qū)版。
MariaDB
你可能了解到,MariaDB 起初是 MySQL 的一個(gè)分支。早期。兩者發(fā)展模式相似。但從 2014 年 MariaDB 10 版開始,情況大為不同。這一次,MariaDB 不再與 MySQL 版本匹配,從而拋棄了之前與 MySQL 5.1 和 MySQL 5.5 版本一致的模式。
獲得獨(dú)立的版本體系允許 MariaDB 以更快的節(jié)奏獨(dú)立創(chuàng)新,而不會(huì)因?yàn)榕c MySQL 版本號(hào)相同而產(chǎn)生用戶誤導(dǎo)。例如,MariaDB 曾經(jīng)有 5.2 和 5.3 兩個(gè)版本,但 MySQL 沒有對(duì)應(yīng)的版本號(hào)。
MariaDB 發(fā)展迅速。緊接著 2015 年發(fā)布了 MariaDB 10.1 版本,2017 年發(fā)布了 MariaDB 10.2 版本。此后,主版本每個(gè) 1-2 年發(fā)布一次,2021 年發(fā)布了 MariaDB 10.6 版。不過,每一個(gè)版本都提供 5 年的長(zhǎng)期支持期限,這給工程團(tuán)隊(duì)帶來了額外負(fù)擔(dān)。
為了解決這個(gè)問題,MariaDB 從 2021 年底開始實(shí)施 “創(chuàng)新版模型”。與 Ubuntu Linux 發(fā)布模式類似,每個(gè)季度發(fā)布一個(gè)短期支持版本(支持 1 年),同時(shí)還會(huì)選擇性發(fā)布 LTS 版本(至少 5 年)。短期支持版本和長(zhǎng)期支持版本遵循相同的版本編號(hào)方式。
最近,MariaDB 也將主版本從 10 改為 11。產(chǎn)品經(jīng)理 Kaj Arno 解釋說,這主要是計(jì)劃對(duì)優(yōu)化器及其成本模型進(jìn)行復(fù)雜修改所致。目前新 11 系列還沒有 LTS 版本,最新的 LTS 版本是 MariaDB 10.11,支持周期至 2028 年 2 月。
MySQL
起初,在 Oracle 的領(lǐng)導(dǎo)下,MySQL 繼續(xù)遵循原有的版本生發(fā)周期。每隔幾年,就會(huì)有大的功能版本,還會(huì)有 “僅修復(fù)錯(cuò)誤” 的小版本。MySQL 5.5、MySQL 5.6 和 MySQL 5.7 就是這種情況。
這種發(fā)布周期的好處是穩(wěn)定!次要版本升級(jí)的風(fēng)險(xiǎn)相當(dāng)?shù)?,如果需要回滾,可以通過快速交換二進(jìn)制文件來完成,而不需要對(duì)數(shù)據(jù)執(zhí)行任何操作。然而,與所有事情一樣,都需要權(quán)衡。這種方法的缺點(diǎn)是新功能的推出緩慢以及主要版本之間的巨大變化,使得升級(jí)可能變得混亂且耗時(shí)。
在 MySQL 8 中發(fā)生了巨大的變化。MySQL 8 看起來像是一個(gè) “長(zhǎng)期迭代版”。雖然最初的 GA 版本于 2018 年 4 月發(fā)布,但我們已經(jīng)五年沒有看到新的主要版本了!這并不意味著 MySQL 8 沒有創(chuàng)新;相反,現(xiàn)在的 MySQL 8 與 2018 年發(fā)布的版本有很大不同,因?yàn)樵诿總€(gè)小版本中,都會(huì)引入新功能并修復(fù)錯(cuò)誤。
如果您喜歡更快地獲得新功能,那一定會(huì)喜歡這種新的發(fā)布方法。從理論上講,這也意味著這些 “功能版本” 升級(jí)的風(fēng)險(xiǎn)較小,與過去主要版本需要數(shù)年的工作相比,這些升級(jí)只需要幾個(gè)月的開發(fā)工作。然而,實(shí)際情況并非如此,因?yàn)槟承┌姹景鹿δ?,其中的錯(cuò)誤足以導(dǎo)致版本召回。更糟糕的是,MySQL 8 一旦升級(jí)到新的版本,無法保證以前的版本能夠操作相同的數(shù)據(jù)。
MySQL 團(tuán)隊(duì)也認(rèn)識(shí)到 MySQL 8 發(fā)布方式的問題;因此,接下來將引入新的發(fā)布模型。該模型引入了 Innovation 版本,大約每季度發(fā)布一次,并且僅支持最新的創(chuàng)新版本(即,任何錯(cuò)誤修復(fù)都將與新功能一起推出,并作為下一個(gè)創(chuàng)新版本推出,類似于 MySQL 8.0 現(xiàn)在的運(yùn)行方式)。另一種版本是 LTS 版本,該版本每隔幾年發(fā)布一次,并由 Oracle 支持 8 年(5 年標(biāo)準(zhǔn) + 3 年擴(kuò)展)。
MySQL LTS 版本的運(yùn)行方式與 MySQL 8 之前的 MySQL 運(yùn)行方式類似。 創(chuàng)新版本有點(diǎn)類似于 MySQL 團(tuán)隊(duì)在某些時(shí)候使用的 “里程碑版本”,但里程碑版本不被視為 “生產(chǎn)就緒”,而是用于開發(fā)和預(yù)覽版、創(chuàng)新版被視為 “生產(chǎn)級(jí)質(zhì)量”。
MySQL 8.0 在此版本模型中占有特殊的地位。目前,它基本上是一個(gè)創(chuàng)新風(fēng)格版本,但隨著 MySQL 8.0.34 的發(fā)布,它將成為僅修復(fù)錯(cuò)誤的 LTS 版本。
差異
有趣的是,兩個(gè)社區(qū)似乎都認(rèn)識(shí)到我們 既需要高速創(chuàng)新又需要穩(wěn)定,但也不能在同一個(gè)發(fā)行系列中真正同時(shí)擁有這兩種方式。還需要控制支持和維護(hù)成本;因此,不能擁有太多積極支持的版本。
MariaDB 和 MySQL 都得出結(jié)論,他們需要同時(shí)注重創(chuàng)新速度的 LTS 版本和版本。
MySQL 和 MariaDB 的 LTS 發(fā)布節(jié)奏也可能相似。MySQL 的 LTS 版本大約每?jī)赡臧l(fā)布一次,這與 MariaDB 類似,“至少每隔一年” 發(fā)布一次。不同之處在于,MariaDB 還與主要 Linux 發(fā)行版合作,使 MariaDB LTS 版本與 Linux 發(fā)行版 LTS 發(fā)行計(jì)劃保持一致,而 MySQL 沒有聲明任何此類目標(biāo)。
存在差異的地方在于非 LTS 版本的處理方式。
當(dāng)在有限時(shí)間內(nèi)發(fā)布 “僅修復(fù)錯(cuò)誤” 的版本時(shí),MariaDB 會(huì)選擇 “短期支持” 路線,而 MySQL 選擇支持滾動(dòng)創(chuàng)新版本的路徑,其中錯(cuò)誤修復(fù)僅包含在最新的創(chuàng)新版本中。看看這些選擇如何發(fā)揮作用將會(huì)很有趣:
MariaDB 的方法更加 “用戶友好”,因?yàn)樗褂脩艨梢愿玫乜刂坪螘r(shí)升級(jí)到下一個(gè)功能版本。
MySQL 的方法減少了支持版本所需的工作。
另一個(gè)重要的區(qū)別是支持什么類型的升級(jí)。
MySQL 僅支持升級(jí)到下一個(gè)主要版本(即,您不能直接從 MySQL 5.6 升級(jí)到 MySQL 8)。
MariaDB 支持在升級(jí)中跳過主要版本。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208721 -
開源
+關(guān)注
關(guān)注
3文章
3215瀏覽量
42329 -
MySQL
+關(guān)注
關(guān)注
1文章
797瀏覽量
26399
原文標(biāo)題:MySQL和MariaDB版本管理的歷史背景及差異
文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論