在之前的一篇文章中,我們介紹了Apache Web伺服器的故事,它在互聯網興起中的作用,以及它的市場份額如何被Nginx等競爭對手所吞噬。 Apache是LAMP堆棧的一部分-Linux + Apache + MySQL + PHP–並且說超過一半的互聯網都歸功於LAMP並不是輕描淡寫。
今天我們來看看MariaDB和MySQL之間的一些差異,兩種類似但不同的資料庫技術用於為全球數百萬個網站提供支持。
- 什麼是MySQL
- 什麼是MariaDB
- MariaDB vs MySQL:兼容性
- MariaDB與MySQL:分叉背後的原因
- MariaDB與MySQL:關鍵差異
MariaDB與MySQL的差異
即使MariaDB是MySQL的一個分支,這兩個資料庫管理系統仍然完全不同:
- MariaDB完全獲得GPL許可,而MySQL則採用雙許可方式。
- 每個句柄線程以不同的方式彙集。
- MariaDB支持許多不同的存儲引擎。
- 在許多情況下,MariaDB提供了改進的性能。
支持什麼是MySQL
MySQL是一個關係資料庫(RDBMS),它首先在1995年由Michael Monty Widenius和David Axmark創建。它是在市場由微軟和甲骨文的專有(和昂貴)解決方案主導時創建的。
厭倦了緩慢的WordPress主機和subpar支持?我們在Kinsta做不同的事情。查看我們的託管計劃
MySQL現在是一個典型的品牌。正如我們今天所知,它在建立互聯網方面的作用很大。 Linux Journal上的這篇文章對它的早期發表了一些看法。
隨著早期採用雙重許可 – 並使用GNU GPL作為其免費版本 – MySQL為後來出現的許多其他軟體供應商鋪平了道路。
在Michael Widenius關於雙重許可的話中:
…由於MySQL是一種可以輕鬆嵌入到其他產品中的基礎設施產品,我們可以向那些想要將MySQL嵌入其產品但不想讓他們的產品開源的人銷售許可證。
伺服器部署的Web應用程序作為LAMP堆棧的一部分,通常不會嵌入MySQL並分發其代碼。這意味著任何人都可以自由地將軟體用於自己的網路產品。
在公開發布不到十年之後,MySQL一直主導著開源關係資料庫市場。
谷歌趨勢顯示,全球網路搜索對MySQL的興趣在2004年至2005年間達到頂峰:
一些使用MySQL的值得注意的公司包括:
- Facebook,2011年的一份報告提到了「每秒6000萬次查詢,每秒近400萬行更改」和MySQL處理「幾乎所有用戶交互:喜歡,共享,狀態更新,警報,請求」。
- Netflix的平台計費部分
- 的Youtube
- Booking.com
- 製作的Airbnb
- 和許多其他人。
另一個有助於提升和採用MySQL的因素是phpMyAdmin。
PhpMyAdmin是一個基於Web的資料庫管理工具,可以追溯到1998年,它很早就進入了共享主機提供商的管理控制台,包括cPanel。它是一個用PHP編寫的工具,它使得在LAMP伺服器上管理MySQL變得容易。導入,導出,編寫複雜查詢,刪除和創建表,進行複雜搜索只是phpMyAdmin無需用戶使用Linux終端即可實現的一些功能。
WordPress和MySQL
MySQL受歡迎程度背後的因素之一無疑是WordPress,它現在支持大約60%的CMS系統或34%的整個網路。
WordPress由Matt Mullenweg和Mike Little於2003年創建,作為另一個項目的分支。它是用PHP編寫的,它使用MySQL作為它的資料庫,當它出現時,它的採用就像野火一樣。
WordPress迅速成為開源軟體概念的代名詞,其底層伺服器堆棧也是如此。 DisplayWP有一個很好的圖表,顯示每個WordPress版本所需的最低MySQL版本。
促進MySQL採用的一個因素是其許可的GPL方面。由於它與Linux兼容,因此它默認包含在Linux發行版中。今天它默認包含在Ubuntu中。
MySQL與關係資料庫模型簡介
MySQL被設想為RDBMS(關係資料庫管理系統)。關係資料庫模型可以追溯到20世紀70年代,正如「Codd的十二條誡命」所概述的那樣。簡而言之,該模型將數據結構化為由列和行組成的表。每一行都由一個鍵唯一標識(使用SQL術語的主鍵)。
這些主鍵可以用作其他表使用的排序的掛鉤,以定義與特定行的關係。因此,關係資料庫表中的FOREIGN KEY列將引用另一個表中的PRIMARY KEY列,從而定義不同表中的行之間的關係。
正如Essential SQL所解釋的那樣,「主鍵由一個或多個列組成,其中包含的數據用於唯一標識表中的每一行。」主鍵列中的數據必須是唯一的,不能為空或NULL。在關係資料庫中「該表只有一個主鍵,其定義是必需的。」
同時,「外鍵是表中一個或多個列的集合,引用另一個表中的主鍵。您沒有任何特殊的代碼,配置或表定義來正式「指定」外鍵。「
這樣,對於關係資料庫,可以以複雜的方式對數據建模並定義各種數據之間的連接。在上面的簡單示例中,我們有兩個表,其中行可以彼此相關,例如。每個人都擁有一輛汽車。
我們可以根據我們需要的邏輯查詢這些數據,我們可以根據不同的標準集來過濾結果集,並且我們可以以比上面概述的更複雜的方式構造我們的查詢。
因此,關係資料庫(通常是資料庫)使用特定於域的語言,其中SQL(代表結構化查詢語言)是一種流行的語言,如果不是RDBMS唯一使用的語言。
由Sun收購
2008年,MySQL公司之後的MySQL公司被Sun Microsystems收購。該公司創建了JAVA,Solaris Unix OS,並且是不同計算機技術的重要貢獻者。正如美國商業資訊報道的那樣:
「Sun Microsystems,Inc。(納斯達克股票代碼:JAVA)今天宣布,它已經簽署了收購MySQL AB的最終協議,這是一個開源圖標和全球發展最快的開源資料庫之一的開發商,總代價約為10億美元」
很快就會證明這次收購不足以阻止Sun的垮台,但它描繪了當時MySQL回歸的重要性。
神諭
Oracle Corporation是迄今為止最大的閉源資料庫Oracle資料庫的供應商。
它是MySQL的直接競爭對手,實際上是MySQL當時正在成為的免費開源軟體模型GPL的對立面。
當甲骨文在2010年收購Sun和MySQL時(以IBM為勝利),FOSS世界認為這與「星際迷航」中的Borg攻擊一樣「險惡」。一個用戶在Quora上重新收集事件:
MySQL對Oracle來說是一個嚴重的威脅 – 當時Oracle資料庫占所有收入的80%以上(並且考慮到骨架工作人員需要維護它,甚至更多的利潤)。
MySQL正在取得重大進展 – 擁有數百萬美元站點許可證的大型財富50強企業正在將資料庫(尤其是只讀資料庫)從Oracle轉移到MySQL,因為管理開銷要低得多。我知道,我幫助做了其中一些。
MySQL社區中的許多人希望添加一些功能,甚至可以使用免費版本的Oracle過時。 MySQL肯定會走這條路。工具正在成熟,拉里很害怕。
因此,甲骨文收購了MySQL,以確保它可以控制品牌,分散社區,並將其旗艦產品從未洗過的大眾中拯救出來。
這是一個合乎邏輯的結論,因為當時的MySQL變得如此受歡迎,以至於它可能被視為對Oracle核心業務的真正威脅。正如Geekflare的Ankush Thakur所說,MySQL變得如此受歡迎,很快,開發人員忘記了SQL和MySQL是兩回事。
在收購甚至發生之前,2009年底,當時離開MySQL團隊建立自己的分支和資料庫公司的Monty Widenius在他的博客上發布了一個引人注目的吸引力(我們將在開頭引用):
幫助保存MySQL
我,Michael「Monty」Widenius,MySQL的創建者,我正在急切地要求你幫助從Oracle的掌控中保存MySQL。如果沒有您的直接幫助,Oracle可能會在任何一天擁有MySQL。通過寫信給歐盟委員會(EC),您可以支持這一事業並幫助確保MySQL作為開源項目的產品的未來發展。
儘管如此,收購仍然持續了一個月,令開源社區的許多人感到沮喪。 Widenius已離開Sun,組建了Monty Program AB,並分叉了MySQL,為MariaDB奠定了基礎。同時帶走了許多MySQL開發人員。
直到今天,人們仍在質疑蒙蒂恐懼的合法性。特別是,由於最糟糕的情況根本沒有發生:Oracle沒有獲得MySQL只是為了殺死它。
一些人認為MySQL被甲骨文收購只不過是收購Sun的「附帶受害者」。早在2009年,那些關注資料庫市場的人就有理由擔心。
有警告。 MySQL的主要存儲引擎開發商InnoDB是一家來自芬蘭的公司,2005年被Oracle收購。後來,他們完全合併到Oracle,終止了原來的公司。 2006年,甲骨文收購了另一家不太重要的BDB存儲引擎Berkeley DB的創建者。他們在四處轉圈。
什麼是MariaDB
MariaDB於2009年10月首次發布,版本為5.1.38 Beta,基於MySQL 5.1.38。這是一個旨在「確保MySQL代碼庫永遠免費」的分支。
在分叉時,最常見的擔心是收購是以惡意收購為目標殺死MySQL。至少在一定程度上,這種擔憂被證明是沒有根據的。
同樣在2009年,Monty Program AB和提供優質MySQL服務的公司Percona建立了開放資料庫聯盟。他們的目標是「統一所有與MySQL相關的開發和服務,為涉及MySQL的社區,企業和技術專家所面臨的分散和不確定性提供解決方案。」
這個想法是「成為MySQL開源資料庫的行業中心,包括MySQL和衍生代碼,二進位文件,培訓,支持以及MySQL社區和合作夥伴生態系統的其他增強功能」
回顧一下:這些步驟可能會阻止著名資料庫出現更糟糕的情況。
MariaDB vs MySQL:兼容性
MariaDB的MySQL分支(以Widenius的女兒命名)的重點是確保未來對MySQL及其進一步開發的訪問。這就是為什麼MariaDB被認為是一個完整的二進位替代品 – 一個「插入式」替代品,所以說 – 使所有MySQL用戶能夠在他們的系統上交換另一個用戶。
MySQL是一個客戶端 – 伺服器應用程序,其伺服器程序mysqld,其客戶端mysql和輔助程序(如mysqldump)與MariaDB保留相同的名稱。
用MariaDB替換MySQL成為大多數應用程序和目的的無縫過程,尤其是WordPress。現有的軟體,從流行的CMS工具到像phpMyAdmin這樣的應用程序,只需開箱即用,實際數據可以從一個導出/導入到另一個,而無需任何更改。
MariaDB的既定目標是保持與MySQL的兼容性。根據MariaDB網站,
- 數據和表定義文件是兼容的。
- 所有客戶端API和協議都是兼容的。
- MySQL和MariaDB上的文件名,二進位文件和路徑是相同的。
- 埠和套接字是相同的。
- 所有MySQL連接器 – PHP,Perl,Python,Java和其他 – 與MariaDB一起使用。
- MySQL客戶端包與MariaDB可以互換,就像MySQL一樣。
每月進行合併以確保兼容性並從Oracle獲取任何新功能和錯誤修復。
MariaDB與MySQL:分叉背後的原因
MariaDB版本背後有多種原因。人們擔心甲骨文會簡單地殺死其不斷增長的競爭對手以保護其利潤更高的主要產品,這無疑是其中最大的一個。用戶將失去一個夢幻般的免費產品!
其他原因與確保MySQL保持免費和開源有關。今天,MariaDB完全獲得GPL許可,其全部功能,而MySQL保持雙許可方法,具有許可的專有,付費許可證:
「MySQL企業版包括最全面的高級功能,管理工具和技術支持,可實現最高級別的MySQL可擴展性,安全性,可靠性和正常運行時間。它降低了開發,部署和管理業務關鍵型MySQL應用程序的風險,成本和複雜性。「
如果我們在這裡比較兩者,MariaDB具有明確的優勢,它是由它發布的GPL許可證提供的。由於專有代碼庫,Oracle無法合法利用MariaDB代碼並將其合併到資料庫中。
MariaDB在Kinsta的託管堆棧中扮演著至關重要的角色,以確保快速的資料庫查詢和載入時間。看看我們的計劃
Widenius承諾:「當Oracle發布MySQL的封閉源代碼擴展時,我們也將發布一個開源代碼。」
社區事務
分支背後的另一個原因是保持項目「開放」,因為它是一個社區驅動的項目(如WordPress),其方向和開發就像它的許可一樣開放。如果我們看一下提交日誌,很容易得出結論,大多數MySQL代碼都來自內部開發人員。例如,甲骨文的開發人員感謝來自社區的偶然和顯著的貢獻,但這遠不是MariaDB的開放性,而是遠離MySQL曾經的樣子。
為了正確看待,在撰寫本文時,MariaDB伺服器存儲庫擁有超過186k的提交,370多個分支和200個貢獻者。另一方面,MySQL擁有超過148k的提交,9個分支和72個貢獻者。
關於MariaDB開發,方向,功能投票等的討論是在公開的郵件列表上完成的:
除此之外,還有Maria Discuss郵件列表。
Maria Captains是一個由可信賴的開發人員組成的團隊,開發人員可以向其提交補丁正如Launchpad上的團隊頁面所說:
「船長是值得信賴的開發人員,擁有對主要MariaDB樹的寫入許可權。如果你想在樹中有一個補丁,請將它提交給maria-developers列表,一個或多個隊長將與你合作,讓補丁得到審核,批准並最終推送到相應的MariaDB樹中。「
在某些情況下,MariaDB活躍的開發過程證明了它優於甲骨文的優勢。
2012年底,MariaDB基金會成立,負責監督資料庫的開發。
在fork之後不久,許多原始的MySQL開發人員跳槽並加入了MariaDB項目。 Red Hat,CentOS,Arch Linux,Debian,OpenSuse,Slackware,Fedora等Linux供應商切換到MariaDB作為默認RDBMS,以及BSD發行版,FreeBSD和OpenBSD,而Ubuntu包含MariaDB。整個列表可以在這裡找到。
阿里巴巴雲,騰訊,IBM,微軟,Booking.com等公司成為白金贊助商。
對於Kinsta來說,作為最好的託管WordPress託管,有趣的是,在MariaDB基金會董事會中,有來自Automattic的人,這是WordPress的創建者已經接受了MariaDB的明顯標誌。
在分裂之後的幾年裡,MariaDB得到了很好的發展,由於2012年推出了全套新功能,MariaDB從5. *版本號跳轉到10.0版本,希望能夠反映出它已經實現的功能。
由於性能原因,維基媒體基金會在2013年宣布將維基百科轉換為MariaDB。谷歌也發生了同樣的事情,其用戶名單現在包括德意志銀行,星展銀行,納斯達克,Verizon,Craigslist等。
在MySQL用戶中,我們有GitHub,美國海軍,NASA,特斯拉,Netflix,微信,Facebook,Zendesk,Twitter,Zappos,YouTube,Spotify。
谷歌搜索趨勢顯示:自首次發布以來,對MySQL繼任者的興趣一直在穩步增長:
MariaDB與MySQL:關鍵差異
雖然MariaDB可能已經開始與MySQL完全兼容,但我們可以預期它們的路徑在未來會有更多分歧。
在他的上一篇博客文章中,Widenius祝賀Oracle在MySQL版本8.0上的工作,概述了一些差異和注意事項,例如:
線程池:類似於Nginx伺服器解決的問題,與Apache相比,MySQL正在為每個客戶端連接分配線程,而這可以與在PC中啟動整個程序進行比較,效率很低。 MariaDB在5.5版本中引入了自己的解決方案
Invisible Columns是MariaDB在10.3.3中的獨有功能。它們不會在SELECT *語句中返回結果,也不需要在INSERT語句中賦值。
MariaDB在其temporal數據類型中引入了微秒。
存儲引擎:MariaDB使用包括XtraDB,InnoDB,MariaDB ColumnStore,Aria,Archive,Blackhole,Cassandra存儲引擎,Connect,CSV,FederatedX,內存存儲引擎,Merge,Mroonga,MyISAM,MyRocks,QQGraph,Sequence Storage Engine,SphinxSE,Spider ,TokuDB。 ColumnsStore在性能方面很有趣,因為它可以進行線性擴展以處理數PB的數據。更多關於它的博客。
MySQL存儲引擎是InnoDB,MyISAM,Memory,CSV,Archive,Blackhole,Merge,Federated,Example。
資料庫視圖是MariaDB通過僅查詢必要的表引入重要優化的功能。
MySQL引入的一些功能是JSON本機數據類型,MySQL 8.0版本中的MySQL Shell – 允許使用javascript和python腳本 – 並且不能與基於SHA-256的基於身份驗證插件的MariaDB一起使用,從而提高了對mysql_native_password的安全性。
在這裡,您可以找到MariaDB與MySQL之間的完整差異列表,以及與後者相比前者的優勢。
MariaDB vs MySQL:最好的選擇是什麼?在我們最新的綱要中了解這些資料庫技術背後的故事! ?點擊鳴叫摘要
MySQL是世界上最大的商業資料庫供應商的企業保護傘。有這麼多全職工程師全天候工作以開發高級新功能,我們已經有了一些分歧點。另一方面,MariaDB在增加額外費用時通常會趕上,但並不總是立竿見影,並且沒有任何保證。
儘管如此,有很多場景可以讓MariaDB提供更好的性能。再添加更靈活的補丁和更新,更穩定的開源未來,以及更多的樂觀,你會明白為什麼在Kinsta我們不僅是粉絲,而且還使用MariaDB作為我們性能驅動的伺服器堆棧的一部分。
0股
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
.essb_links .essb_links_list li a {margin-top:0px; } @media only screen and(min-width:64em){.container – narrow.pb – 60,.knowledgebase .user-content {position:relative; } .widget-share {position:absolute;左:-200px;頂部:0px;身高:100%;寬度:200px; box-sizing:border-box; } .widget-share-aligner {width:200px; padding-right:62px; box-sizing:border-box; } .widget-share-inner {padding-bottom:62px; } .knowledgebase .user-content .widget-share-inner {padding-top:0; } .widget-share .amount {display:flex; align-items:center;證明內容:flex-end;寬度:100%;保證金右:11像素; font-size:14px;字體重量:500;邊距:10px的; } .widget-share .amount svg {margin-right:8px;保證金左:10px的; } .essb_links .essb_links_list {flex-direction:column; align-items:flex-end; } .essb_links .essb_links_list li {display:block; margin-bottom:5px!important; } .widget-share__total {margin-bottom:0px!important; } .widget-share__total .heading – small {color:#999999;字體大小:14px的; font-weight:300; } .essb-total-value {margin-right:4px; } .essb_links {margin:0px;填充:0像素; } .essb_counter_right {display:none!important; } .essb_links.essb_template_circles-retina .essb_link_hackernews a,.essb_links.essb_template_circles-retina .essb_link_reddit a,.essb_links.essb_template_circles-retina .essb_link_mail a,.essb_links.essb_template_circles-retina .essb_link_mwp a,.essb_links.essb_template_circles-retina .essb_link_buffer a ,.essb_links.essb_template_circles-retina .essb_link_linkedin a,.essb_links.essb_template_circles-retina .essb_link_facebook a,.essb_links.essb_template_circles-retina .essb_link_twitter a {color:#43414e!important;背景:#f3f3f6!important; } .essb_links.essb_template_circles-retina li a:focus,.essb_links.essb_template_circles-retina li a:hover {border-color:#fff!important;背景:#43414e!important; {.binter-color:#f3f3f6!important;背景:#f3f3f6; } .essb_links .essb_icon:在{font-size:15px!important;之前頂:8像素;左:9px; } .essb_links .essb_icon {width:32px;高度:32PX; } .essb_links.essb_counter_modern_right .essb_counter_right {background:#f3f3f6!important; } @media only screen and(max-width:63.999em){。widget-share-aligner {position:relative!important;頂部:0!重要; } .essb_links .essb_links_list li {margin-right:8px!important; }}