文章載自:CSDN

原文連接 : 
https://blog.csdn.net/uisoul/article/details/85219385

原文作者: IM魂影



如今,組織有一系列數據庫可供選擇–無論是商業還是開源。曾經有一段時間,大多數數據庫管理系統(DBMS)都是商業的。但是現在,隨着衆多開源數據庫的推出,行業專業人士更願意使用它們。實際上,開源數據庫在當今市場上佔有相當大的份額,因爲用戶可以根據需求自由地實現系統,並充分利用這些系統。

開源數據庫系統可從Oracle,Microsoft,Google,Amazon和Rackspace等各種供應商處獲得。開源數據庫管理系統(DBMS)的歷史並不長。第一個可用的開源數據庫管理系統是MySQL,它於1995年推出,直到今天,它已經有很多重大的改進,使其成爲商業數據庫軟件的強大競爭對手。

開源數據庫管理系統越來越受歡迎,不僅因爲它們功能豐富,成本低廉,而且還因爲它們的操作效率。用戶享受在根據個人需求定製源代碼時的自由,以及少量的編程知識是也是一個加分項。Gartner報告說,開源數據庫管理系統每年增長42%,到2020年這個行業的價值將達到80億美元。報告中約80%的用戶使用某種開源軟件,包括數據庫管理系統(DBMS)。像微軟和IBM這樣的各種商業供應商也提供他們數據庫管理系統(DBMS)軟件的“快速版”。

最廣泛採用的開源數據庫管理系統(DBMS)是MySQL和MariaDB。本文討論它們的相似之處,差異和相對優點,然後再提出用戶應該遷移到MariaDB的原因。

數據庫

數據庫是以表格形式保存數據的特定結構。支持通過基於表格結構的數據流的軟件稱爲數據庫管理系統(DBMS)。使用最廣泛的數據庫管理系統(DBMS)是關係數據庫管理系統(RDBMS)。數據庫管理系統(DBMS)是一種計算機軟件應用程序,可與終端用戶,其他應用程序和數據庫本身交互以捕獲數據。通用數據庫管理系統允許定義,創建,查詢,更新和管理數據庫。

數據庫及其數據的功能是:

數據定義:創建,修改和刪除爲數據組織奠定基礎的定義

數據更新:插入,修改和刪除數據

檢索:通過進行特定查詢從整個數據庫檢索數據

管理:用戶創建和修改,數據安全性,性能監控,數據完整性,併發控制和數據恢復

因此,數據庫系統是數據庫模型,數據庫管理系統(DBMS)和數據庫的組合。

MySQL

MySQL是一個用C和C ++編寫的開源多線程關係數據庫管理系統(RDBMS)。MySQL由瑞典公司MySQL AB創建,該公司由David Axmark,Allan Larsson和Micheal Monty Widenius創建,並於1994年開始開發。第一個版本於1995年5月23日發佈。MySQL是中的”My“取自聯合創始人Monty Widenius女兒的名字。MySQL海豚標誌–Sakila是從用戶在“Name the Dolphin”比賽中的大量提議中選出的。

MySQL服務器適用於任務關鍵型,重載生產系統以及嵌入大規模部署的軟件。它被認爲是LAMP棧(Linux,Apache,MySQL和PHP)的核心組件。MySQL數據庫適用於Linux,Windows,MAC,BSD UNIX等各種操作系統平臺。維基百科,Facebook和YouTube等熱門網站使用MySQL。

MySQL現在是Oracle公司以及其附屬公司擁有的商標,並且是雙重許可。用戶可以選擇GNU許可作爲開源軟件使用,甚至可以購買有Oracle許可證的商業軟件。

MySQL體系結構

MySQL服務器基於分層架構,由主要子系統和支持組件組成,它們通過相互交互來讀取,解析和執行查詢以返回結果。

MySQL的五種主要子系統是:

  • 查詢引擎

  • 存儲管理器

  • 緩衝管理器

  • 事務管理器

  • 恢復管理器

查詢引擎:它包含三個主要的相關組件 - 語法分析器,查詢優化器和執行組件。語法分析器以一種MySQL引擎能夠理解的形式分解從調用程序接收到的SQL命令。“查詢優化器”簡化執行組件使用的語法,然後爲查詢執行準備最有效的計劃。執行組件根據它接收的信息解釋執行計劃,並向其他組件提出請求以檢索記錄。

存儲管理器:與操作系統連接,以用戶表,索引和日誌以及內部系統數據的形式將數據寫入磁盤。

查詢緩存: MySQL引擎使用查詢緩存–極其高效的結果集緩存機制,這極大地減少了查詢的響應時間,這些查詢被調用當檢索與先前查詢相同的數據。

緩衝區管理器:處理查詢引擎和存儲管理器對數據請求之間的所有內存管理問題。MySQL使用內存來緩存可以返回的結果集,並且緩存被保存在緩衝區管理器中。

事務管理器:這個子系統提供了鎖定功能,以確保多個用戶以一致的方式訪問數據,而不會損壞或破壞數據。

恢復管理器:爲了在發生任何類型的數據丟失的情況下進行檢索,會保留數據的副本。

MySQL的兩個支持組件是:

  • 進程管理

  • 函數庫

進程管理器:它執行兩個主要功能 – 管理通過網絡連接的用戶,以及通過多線程,線程鎖定和執行線程安全操作同步任務和進程。

函數庫:它包含通用的函數,如字符串操作,排序操作和執行特定於操作系統的函數,如內存管理和文件I / O。

MySQL的特點

  • 關係數據庫管理系統:
    MySQL支持所有功能,這使得它成爲一個完整的關係數據庫管理系統(RDBMS)。它支持完整的SQL作爲查詢和更新數據的標準化語言,並且可以管理數據庫。

  • 簡單而安全:與其他數據庫管理系統(DBMS)軟件相比,MySQL使用非常簡單且具有交互性,並且具有可靠的數據安全層,可爲數據提供高效的加密,因此非常安全。

  • 客戶機/服務器體系結構:其簡單的客戶機/服務器體系結構可幫助終端用戶創建一個與許多客戶機連接的服務器,以便與服務器進行通信進行插入,更新和管理數據庫。

  • 可伸縮性: MySQL可以處理大量數據而不會出現任何卡頓 – 多達5000萬行。它可以處理高達8TB的數據而沒有任何問題。

  • 跨平臺:與幾乎所有操作系統兼容,如UNIX,Windows,Linux,MAC OS X等。

  • 高性能,靈活且高效的生產力:
    MySQL提供更快速,高度可靠,便宜的存儲解決方案,並支持大量嵌入式應用程序。它利用觸發器,程序和視圖來提高生產力。

MariaDB

MariaDB是MySQL的分支版本。它主要是由於MySQL在被Oracle公司收購時出現的問題而開發的。MariaDB是一個通用的數據庫管理系統(DBMS),它具有可擴展的架構,可通過可插拔存儲引擎支持大量的用例。它使用不同的存儲引擎來支持不同的用例。

MariaDB是一款開源的多線程關係數據庫管理系統,在GNU公共許可證(GPL)下發布。其首席開發人員是Michael Monty Widenius,他也是MySQL AB的創始人之一。作爲數據庫系統,許多功能有助於MariaDB的普及。其速度是其最顯着的特點之一。MariaDB也具有很強的可擴展性,能夠處理數萬張表和數十億行數據。它還可以快速平穩地管理少量數據,方便小型企業或個人項目。另一個與前任不同的特點是專注於安全。MariaDB的內置功能包括操作和格式化文本,業務和統計計算,記錄時間順序信息,

MariaDB服務器是世界上最流行的開源數據庫之一。它在Debian和Ubuntu中可用,現在是Arch Linux,Manjaro,openSUSE,Red Hat Enterprise Linux,CentOS,Fedora和SUSE Linux Enterprise的默認數據庫。作爲世界上最廣泛採用和廣泛部署的產品之一,MariaDB服務器收到阿里巴巴,Facebook和谷歌等公司的捐款。最近,微軟還聯手支持MariaDB社區。

MariaDB的特點

  • MariaDB可用於GPL,LGPL和BSD。

  • 它包括廣泛的存儲引擎選擇,包括高性能存儲引擎,用於與其他關係數據庫管理系統(RDBMS)數據源一起工作。

  • 它使用標準和流行的查詢語言。

  • MariaDB在許多操作系統上運行,並支持各種編程語言。

  • 它提供對PHP的支持,PHP是最流行的Web開發語言之一。

  • 它提供Galera羣集技術。

  • MariaDB還提供了很多在MySQL中不可用的操作和命令,並消除/取代了對性能產生負面影響的功能。

  • 其他功能還包括多源複製,融合IO優化,表發現和聯機更改表。

MariaDB和MySQL的比較分析

MariaDB擁有大量新功能,這使得它在性能和用戶導向方面更加出色。讓我們來評估MariaDB和MySQL,以確定哪一個更好。這種選擇最終將取決於IT經理以及他們對開源數據庫的熟悉程度。

MySQL和MariaDB之間的一些重要差異

  1. 數據庫的使用情況:自1995年以來,MySQL一直被視爲迄今爲止實施最爲廣泛且最廣泛使用的開源數據庫。許多像Twitter,YouTube,Netflix和PayPal這樣的IT巨頭,以及美國國家航空航天局,美國國防部隊和沃爾瑪都利用這個數據庫。

最近纔到來的MariaDB也在各種IT巨頭組織(如Google,Red Hat,CentOS和Fedora)中作爲後端軟件因此得到了強大的基礎。

  1. 數據庫和索引的結構: MySQL是一個純粹的關係數據庫,集成了一個ANSI標準的信息模式,由表,列,視圖,過程,觸發器,遊標等組成。MySQL的結構化查詢語言(SQL)是ANSI SQL 99。

而MariaDB是MySQL的一個分支,因此具有相同的數據庫結構和索引。該功能使MariaDB成爲希望直接切換或升級後端的用戶的理想選擇,而無需升級數據庫和數據結構。

當從MySQL升級到MariaDB時,所有內容(從數據,表格定義,結構和API)都保持一致。

  1. 二進制和實現: MySQL是使用C和C ++開發的,並且完全兼容幾乎所有操作系統,如Microsoft Windows,MAC OS X,Linux,FreeBSD,UNIX,NetBSD,Novell Netware和其他許多操作系統。

MariaDB使用C,C ++,Bash和Perl開發。它與Microsoft Windows,Linux,MAC OS X,FreeBSD,Solaris等各種操作系統兼容。

  1. 複製和集羣: MySQL通過主從主複製和主從複製提供強大的複製和集羣,並利用Galera集羣實現多主集羣。

MariaDB爲主終端用戶提供與主從主複製和主從複製相同的複製和集羣功能。它還使用10.1版以後的Galera Cluster。

  1. 對數據庫的支持:通過Oracle全天候提供MySQL技術支持服務,支持團隊由專業開發人員和工程師組成,他們提供各種工具,如錯誤修復,修補程序和版本發佈。Oracle根據用戶的需求提供MySQL首要支持,擴展支持和持續支持。

MariaDB通過開源社區,在線論壇甚至通過專家爲用戶提供強有力的支持。MariaDB通過企業訂閱提供24小時全天候支持,尤其適用於任務關鍵型生產系統。

  1. 安全性:就安全性而言,MySQL爲表空間數據提供了強大的加密機制。它提供了強大的安全參數,包括選擇好的密碼,不給用戶不必要的特權,並通過防止SQL注入和數據損壞來確保應用程序安全。

MariaDB在內部安全和密碼檢查,驗證模塊(PAM)和輕量級目錄訪問協議(LDAP)認證,Kerberos,用戶角色以及對錶空間,表格和日誌的強大加密等安全功能方面取得了重大進展。

  1. 可擴展性:支持可擴展系統的數據庫可以用許多不同的方式進行擴展,如添加新的數據類型,函數,運算符,聚集函數,索引方法和過程語言。MySQL不支持可擴展性。

MariaDB建立在現代架構的基礎之上,可以在每一層 – 客戶端,集羣,內核和存儲上進行擴展。這種可擴展性提供了兩個主要優勢。它允許通過插件實現持續的社區創新,這意味着可以通過MariaDB的可擴展架構集成各種存儲引擎,如MariaDB ColumnStore或Facebook的MyRocks。此外,它使客戶能夠輕鬆配置MariaDB以支持從聯機事務處理(OLTP)到聯機分析處理(OLAP)的各種用例。

  1. JSON支持: MySQL支持本地JSON數據類型,可以在JSON(JavaScript Object Notation)文檔中高效地訪問數據。與將JSON格式的字符串存儲在字符串列中相比,JSON數據類型提供了以下優點:

自動驗證存儲在JSON列中的JSON文檔。無效的文檔會產生錯誤。
優化的存儲格式:存儲在JSON列中的JSON文檔被轉換爲允許快速讀取文檔元素的內部格式。當服務器稍後必須讀取以這種二進制格式存儲的JSON值時,不需要從文本表示中解析該值。二進制格式的結構使服務器能夠直接通過鍵或數組索引查找子對象或嵌套值,而無需讀取文檔中的所有值。
另一方面,MariaDB Server 10.2引入了一整套用於讀寫JSON文檔的24個函數。另外,JSON_VALID函數可以與校驗約束一起使用,而像JSON_VALUE這樣的函數可以與動態列一起使用來索引特定的字段。

  1. 授權許可: MySQL在GPL下以開放源代碼提供代碼,並以MySQL Enterprise形式提供非GPL商業分發選項。

MariaDB只能使用GPL,因爲它的工作源於該許可條款下的MySQL源代碼。

  1. 性能: MariaDB通過MySQL的許多創新實現了同類最佳性能。其中包括線程池管理以最大限度地提高處理效率,以及InnoDB數據存儲區內的碎片整理等廣泛的優化功能。因此,當從InnoDB表中刪除行時,可用空間立即可供操作系統使用。不需要將舊錶中的數據複製到新表中,並且表空間中沒有空閒。MariaDB還提供與引擎無關的表統計信息,以改善優化程序的性能,加快對錶的大小和結構進行查詢處理和數據分析。

如果沒有這些增強功能,MySQL的性能就會下降。MySQL中的線程利用率是次優的,InnoDB表隨着時間的推移變得碎片化,從而影響性能。

MariaDB與MySQL

以下幾點突出了MariaDB的優缺點。

優點

  • MariaDB針對性能進行了優化,對於大型數據集,它比MySQL強大得多。從其他數據庫系統可以優雅的遷移到MariaDB是另一個好處。

  • 從MySQL切換到MariaDB相對容易,這對於系統管理員來說好像是一塊蛋糕。

  • MariaDB通過引入微秒級精度和擴展用戶統計數據提供更好的監控。

  • MariaDB增強了KILL命令,使您可以殺死用戶的所有查詢(KILL USER 用戶名)或殺死查詢ID(KILL QUERY ID query_id)。MariaDB也轉而使用Perl兼容的正則表達式(PCRE),它提供比標準MySQL正則表達式支持更強大和更精確的查詢。

  • MariaDB爲與磁盤訪問,連接操作,子查詢,派生表和視圖,執行控制甚至解釋語句相關的查詢應用了許多查詢優化。

  • MariaDB純粹是開源的,而不是MySQL使用的雙重授權模式。一些僅適用於MySQL
    Enterprise客戶的插件在MariaDB中具有等效的開源實現。

  • 與MySQL相比,MariaDB支持更多的引擎(SphinxSE,Aria,FederatedX,TokuDB,Spider,ScaleDB等)。

  • MariaDB提供了一個用於商業用途的集羣數據庫,它也支持多主複製。任何人都可以自由使用它,並且不需要依賴MySQL
    Enterprise系統。

缺點

  • 從版本5.5.36開始,MariaDB無法遷移回MySQL。

  • 對於MariaDB的新版本,相應的庫(用於Debian)不會及時部署,由於依賴關係,這將導致必需升級到較新的版本。

  • MariaDB的羣集版本不是很穩定。

遷移到MariaDB的主要原因

  • 首先,MariaDB提供了更多更好的存儲引擎。NoSQL支持由Cassandra提供,允許您在單個數據庫系統中運行SQL和NoSQL。MariaDB還支持TokuDB,它可以處理大型組織和企業用戶的大數據。

  • MySQL的平常(和緩慢的)數據庫引擎MyISAM和InnoDB已分別在MariaDB中由Aria和XtraDB取代。Aria提供了更好的緩存,這對於磁盤密集型操作來說是有所不同的。

  • MariaDB通過引入微秒級精度和擴展用戶統計數據提供更好的監控。

  • MariaDB的最新功能(如GIS,動態色譜柱支持等)使其成爲更好的選擇。

  • MariaDB遵循良好的行業標準,同時發佈安全公告和升級,並以正確的方式處理。




長按二維碼

關注公衆號


請備註:PHP

長按掃碼加好友


相關文章