本文為讀者提供MariaDB和MySQL的深入見解。分析兩者并討論它們之間的差異,。還有一部分內(nèi)容闡述為什么MySQL用戶應該切換到MariaDB,。 如今,組織有一系列數(shù)據(jù)庫可供選擇--無論是商業(yè)還是開源,。曾經(jīng)有一段時間,,大多數(shù)數(shù)據(jù)庫管理系統(tǒng)(DBMS)都是商業(yè)的。但是現(xiàn)在,,隨著眾多開源數(shù)據(jù)庫的推出,,行業(yè)專業(yè)人士更愿意使用它們。實際上,,開源數(shù)據(jù)庫在當今市場上占有相當大的份額,,因為用戶可以根據(jù)需求自由地實現(xiàn)系統(tǒng),并充分利用這些系統(tǒng),。 開源數(shù)據(jù)庫系統(tǒng)可從Oracle,,Microsoft,Google,,Amazon和Rackspace等各種供應商處獲得,。開源數(shù)據(jù)庫管理系統(tǒng)(DBMS)的歷史并不長。第一個可用的開源數(shù)據(jù)庫管理系統(tǒng)是MySQL,,它于1995年推出,,直到今天,它已經(jīng)有很多重大的改進,,使其成為商業(yè)數(shù)據(jù)庫軟件的強大競爭對手,。 開源數(shù)據(jù)庫管理系統(tǒng)越來越受歡迎,不僅因為它們功能豐富,,成本低廉,,而且還因為它們的操作效率,。用戶享受在根據(jù)個人需求定制源代碼時的自由,以及少量的編程知識是也是一個加分項,。Gartner報告說,,開源數(shù)據(jù)庫管理系統(tǒng)每年增長42%,到2020年這個行業(yè)的價值將達到80億美元,。報告中約80%的用戶使用某種開源軟件,,包括數(shù)據(jù)庫管理系統(tǒng)(DBMS)。像微軟和IBM這樣的各種商業(yè)供應商也提供他們數(shù)據(jù)庫管理系統(tǒng)(DBMS)軟件的“快速版”,。 最廣泛采用的開源數(shù)據(jù)庫管理系統(tǒng)(DBMS)是MySQL和MariaDB,。本文討論它們的相似之處,,差異和相對優(yōu)點,,然后再提出用戶應該遷移到MariaDB的原因。 數(shù)據(jù)庫 數(shù)據(jù)庫是以表格形式保存數(shù)據(jù)的特定結(jié)構(gòu),。支持通過基于表格結(jié)構(gòu)的數(shù)據(jù)流的軟件稱為數(shù)據(jù)庫管理系統(tǒng)(DBMS),。使用最廣泛的數(shù)據(jù)庫管理系統(tǒng)(DBMS)是關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。數(shù)據(jù)庫管理系統(tǒng)(DBMS)是一種計算機軟件應用程序,,可與終端用戶,,其他應用程序和數(shù)據(jù)庫本身交互以捕獲數(shù)據(jù)。通用數(shù)據(jù)庫管理系統(tǒng)允許定義,,創(chuàng)建,,查詢,更新和管理數(shù)據(jù)庫,。 數(shù)據(jù)庫及其數(shù)據(jù)的功能是: 數(shù)據(jù)定義:創(chuàng)建,,修改和刪除為數(shù)據(jù)組織奠定基礎的定義 數(shù)據(jù)更新:插入,修改和刪除數(shù)據(jù) 檢索:通過進行特定查詢從整個數(shù)據(jù)庫檢索數(shù)據(jù) 管理:用戶創(chuàng)建和修改,,數(shù)據(jù)安全性,,性能監(jiān)控,數(shù)據(jù)完整性,,并發(fā)控制和數(shù)據(jù)恢復 因此,,數(shù)據(jù)庫系統(tǒng)是數(shù)據(jù)庫模型,數(shù)據(jù)庫管理系統(tǒng)(DBMS)和數(shù)據(jù)庫的組合,。 MySQL MySQL是一個用C和C ++編寫的開源多線程關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),。MySQL由瑞典公司MySQL AB創(chuàng)建,該公司由David Axmark,,Allan Larsson和Micheal Monty Widenius創(chuàng)建,,并于1994年開始開發(fā)。第一個版本于1995年5月23日發(fā)布,。MySQL是中的”My“取自聯(lián)合創(chuàng)始人Monty Widenius女兒的名字,。MySQL海豚標志--Sakila是從用戶在“Name the Dolphin”比賽中的大量提議中選出的,。 MySQL服務器適用于任務關鍵型,重載生產(chǎn)系統(tǒng)以及嵌入大規(guī)模部署的軟件,。它被認為是LAMP棧(Linux,,Apache,MySQL和PHP)的核心組件,。MySQL數(shù)據(jù)庫適用于Linux,,Windows,MAC,,BSD UNIX等各種操作系統(tǒng)平臺,。維基百科,F(xiàn)acebook和YouTube等熱門網(wǎng)站使用MySQL,。 MySQL現(xiàn)在是Oracle公司以及其附屬公司擁有的商標,,并且是雙重許可。用戶可以選擇GNU許可作為開源軟件使用,,甚至可以購買有Oracle許可證的商業(yè)軟件,。 MySQL體系結(jié)構(gòu) MySQL服務器基于分層架構(gòu),由主要子系統(tǒng)和支持組件組成,,它們通過相互交互來讀取,,解析和執(zhí)行查詢以返回結(jié)果。 MySQL的五種主要子系統(tǒng)是:
查詢引擎:它包含三個主要的相關組件 - 語法分析器,,查詢優(yōu)化器和執(zhí)行組件,。語法分析器以一種MySQL引擎能夠理解的形式分解從調(diào)用程序接收到的SQL命令?!安樵儍?yōu)化器”簡化執(zhí)行組件使用的語法,,然后為查詢執(zhí)行準備最有效的計劃。執(zhí)行組件根據(jù)它接收的信息解釋執(zhí)行計劃,,并向其他組件提出請求以檢索記錄,。 存儲管理器:與操作系統(tǒng)連接,以用戶表,,索引和日志以及內(nèi)部系統(tǒng)數(shù)據(jù)的形式將數(shù)據(jù)寫入磁盤,。 查詢緩存: MySQL引擎使用查詢緩存--極其高效的結(jié)果集緩存機制,這極大地減少了查詢的響應時間,,這些查詢被調(diào)用當檢索與先前查詢相同的數(shù)據(jù),。 緩沖區(qū)管理器:處理查詢引擎和存儲管理器對數(shù)據(jù)請求之間的所有內(nèi)存管理問題。MySQL使用內(nèi)存來緩存可以返回的結(jié)果集,,并且緩存被保存在緩沖區(qū)管理器中,。 事務管理器:這個子系統(tǒng)提供了鎖定功能,以確保多個用戶以一致的方式訪問數(shù)據(jù),而不會損壞或破壞數(shù)據(jù),。 恢復管理器:為了在發(fā)生任何類型的數(shù)據(jù)丟失的情況下進行檢索,,會保留數(shù)據(jù)的副本。 MySQL的兩個支持組件是:
進程管理器:它執(zhí)行兩個主要功能 -- 管理通過網(wǎng)絡連接的用戶,,以及通過多線程,,線程鎖定和執(zhí)行線程安全操作同步任務和進程。 函數(shù)庫:它包含通用的函數(shù),,如字符串操作,,排序操作和執(zhí)行特定于操作系統(tǒng)的函數(shù),如內(nèi)存管理和文件I / O,。 MySQL的特點
MariaDB MariaDB是MySQL的分支版本,。它主要是由于MySQL在被Oracle公司收購時出現(xiàn)的問題而開發(fā)的。MariaDB是一個通用的數(shù)據(jù)庫管理系統(tǒng)(DBMS),,它具有可擴展的架構(gòu),,可通過可插拔存儲引擎支持大量的用例,。它使用不同的存儲引擎來支持不同的用例。 MariaDB是一款開源的多線程關系數(shù)據(jù)庫管理系統(tǒng),,在GNU公共許可證(GPL)下發(fā)布,。其首席開發(fā)人員是Michael Monty Widenius,他也是MySQL AB的創(chuàng)始人之一,。作為數(shù)據(jù)庫系統(tǒng),,許多功能有助于MariaDB的普及。其速度是其最顯著的特點之一,。MariaDB也具有很強的可擴展性,,能夠處理數(shù)萬張表和數(shù)十億行數(shù)據(jù)。它還可以快速平穩(wěn)地管理少量數(shù)據(jù),,方便小型企業(yè)或個人項目,。另一個與前任不同的特點是專注于安全。MariaDB的內(nèi)置功能包括操作和格式化文本,,業(yè)務和統(tǒng)計計算,,記錄時間順序信息, MariaDB服務器是世界上最流行的開源數(shù)據(jù)庫之一,。它在Debian和Ubuntu中可用,,現(xiàn)在是Arch Linux,Manjaro,,openSUSE,,Red Hat Enterprise Linux,CentOS,,F(xiàn)edora和SUSE Linux Enterprise的默認數(shù)據(jù)庫,。作為世界上最廣泛采用和廣泛部署的產(chǎn)品之一,MariaDB服務器收到阿里巴巴,,F(xiàn)acebook和谷歌等公司的捐款,。最近,微軟還聯(lián)手支持MariaDB社區(qū),。 MariaDB的特點
其他功能還包括多源復制,,融合IO優(yōu)化,表發(fā)現(xiàn)和聯(lián)機更改表,。 MariaDB和MySQL的比較分析 MariaDB擁有大量新功能,,這使得它在性能和用戶導向方面更加出色。讓我們來評估MariaDB和MySQL,,以確定哪一個更好,。這種選擇最終將取決于IT經(jīng)理以及他們對開源數(shù)據(jù)庫的熟悉程度。 MySQL和MariaDB之間的一些重要差異 1. 數(shù)據(jù)庫的使用情況:自1995年以來,,MySQL一直被視為迄今為止實施最為廣泛且最廣泛使用的開源數(shù)據(jù)庫。許多像Twitter,,YouTube,,Netflix和PayPal這樣的IT巨頭,以及美國國家航空航天局,,美國國防部隊和沃爾瑪都利用這個數(shù)據(jù)庫。 最近才到來的MariaDB也在各種IT巨頭組織(如Google,,Red Hat,,CentOS和Fedora)中作為后端軟件因此得到了強大的基礎,。 2. 數(shù)據(jù)庫和索引的結(jié)構(gòu): MySQL是一個純粹的關系數(shù)據(jù)庫,,集成了一個ANSI標準的信息模式,由表,,列,,視圖,過程,,觸發(fā)器,,游標等組成。MySQL的結(jié)構(gòu)化查詢語言(SQL)是ANSI SQL 99,。 而MariaDB是MySQL的一個分支,,因此具有相同的數(shù)據(jù)庫結(jié)構(gòu)和索引。該功能使MariaDB成為希望直接切換或升級后端的用戶的理想選擇,,而無需升級數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu),。 當從MySQL升級到MariaDB時,所有內(nèi)容(從數(shù)據(jù),表格定義,,結(jié)構(gòu)和API)都保持一致,。 3. 二進制和實現(xiàn): MySQL是使用C和C ++開發(fā)的,并且完全兼容幾乎所有操作系統(tǒng),,如Microsoft Windows,,MAC OS X,Linux,,F(xiàn)reeBSD,,UNIX,NetBSD,,Novell Netware和其他許多操作系統(tǒng),。 MariaDB使用C,C ++,,Bash和Perl開發(fā),。它與Microsoft Windows,Linux,,MAC OS X,,F(xiàn)reeBSD,Solaris等各種操作系統(tǒng)兼容,。 4. 復制和集群: MySQL通過主從主復制和主從復制提供強大的復制和集群,,并利用Galera集群實現(xiàn)多主集群。 MariaDB為主終端用戶提供與主從主復制和主從復制相同的復制和集群功能,。它還使用10.1版以后的Galera Cluster,。 5. 對數(shù)據(jù)庫的支持:通過Oracle全天候提供MySQL技術支持服務,支持團隊由專業(yè)開發(fā)人員和工程師組成,,他們提供各種工具,,如錯誤修復,修補程序和版本發(fā)布,。Oracle根據(jù)用戶的需求提供MySQL首要支持,,擴展支持和持續(xù)支持。 MariaDB通過開源社區(qū),,在線論壇甚至通過專家為用戶提供強有力的支持,。MariaDB通過企業(yè)訂閱提供24小時全天候支持,尤其適用于任務關鍵型生產(chǎn)系統(tǒng),。 6. 安全性:就安全性而言,,MySQL為表空間數(shù)據(jù)提供了強大的加密機制。它提供了強大的安全參數(shù),,包括選擇好的密碼,,不給用戶不必要的特權,,并通過防止SQL注入和數(shù)據(jù)損壞來確保應用程序安全,。 MariaDB在內(nèi)部安全和密碼檢查,驗證模塊(PAM)和輕量級目錄訪問協(xié)議(LDAP)認證,,Kerberos,,用戶角色以及對表空間,,表格和日志的強大加密等安全功能方面取得了重大進展。 7. 可擴展性:支持可擴展系統(tǒng)的數(shù)據(jù)庫可以用許多不同的方式進行擴展,,如添加新的數(shù)據(jù)類型,,函數(shù),運算符,,聚集函數(shù),,索引方法和過程語言。MySQL不支持可擴展性,。 MariaDB建立在現(xiàn)代架構(gòu)的基礎之上,可以在每一層 -- 客戶端,,集群,,內(nèi)核和存儲上進行擴展。這種可擴展性提供了兩個主要優(yōu)勢,。它允許通過插件實現(xiàn)持續(xù)的社區(qū)創(chuàng)新,,這意味著可以通過MariaDB的可擴展架構(gòu)集成各種存儲引擎,,如MariaDB ColumnStore或Facebook的MyRocks。此外,,它使客戶能夠輕松配置MariaDB以支持從聯(lián)機事務處理(OLTP)到聯(lián)機分析處理(OLAP)的各種用例,。 8. JSON支持: MySQL支持本地JSON數(shù)據(jù)類型,,可以在JSON(JavaScript Object Notation)文檔中高效地訪問數(shù)據(jù),。與將JSON格式的字符串存儲在字符串列中相比,JSON數(shù)據(jù)類型提供了以下優(yōu)點:
另一方面,MariaDB Server 10.2引入了一整套用于讀寫JSON文檔的24個函數(shù),。另外,,JSON_VALID函數(shù)可以與校驗約束一起使用,,而像JSON_VALUE這樣的函數(shù)可以與動態(tài)列一起使用來索引特定的字段。 9. 授權許可: MySQL在GPL下以開放源代碼提供代碼,,并以MySQL Enterprise形式提供非GPL商業(yè)分發(fā)選項,。 MariaDB只能使用GPL,因為它的工作源于該許可條款下的MySQL源代碼,。 10. 性能: MariaDB通過MySQL的許多創(chuàng)新實現(xiàn)了同類最佳性能。其中包括線程池管理以最大限度地提高處理效率,,以及InnoDB數(shù)據(jù)存儲區(qū)內(nèi)的碎片整理等廣泛的優(yōu)化功能,。因此,,當從InnoDB表中刪除行時,可用空間立即可供操作系統(tǒng)使用,。不需要將舊表中的數(shù)據(jù)復制到新表中,,并且表空間中沒有空閑。MariaDB還提供與引擎無關的表統(tǒng)計信息,,以改善優(yōu)化程序的性能,,加快對表的大小和結(jié)構(gòu)進行查詢處理和數(shù)據(jù)分析。 如果沒有這些增強功能,,MySQL的性能就會下降,。MySQL中的線程利用率是次優(yōu)的,InnoDB表隨著時間的推移變得碎片化,,從而影響性能,。 MariaDB與MySQL 以下幾點突出了MariaDB的優(yōu)缺點。 優(yōu)點
缺點
遷移到MariaDB的主要原因
|
|
來自: liang1234_ > 《mysql》