超越MySQL:三個流行MySQL分支的對比

導讀:儘管MySQL是最受歡迎的程序之一,可是許多開發人員認爲有必要將其拆分紅其餘項目,而且每一個分支項目都有本身的 專長。該需求以及Oracle對核心產品增加緩慢的擔心,致使出現了許多開發人員感興趣的子項目和分支。本文將討論受人們關注的三個流行MySQL分 支:Drizzle、MariaDB和Percona Server(包括XtraDB引擎)。文中簡要介紹每一個分支出現的緣由及其目標,以及是否可在您本身的生產環境中使用它們。數據庫

文章內容以下:瀏覽器


簡介安全

    MySQL是歷史上最受歡迎的免費開源程序之一。它是成千上萬個網站的數據庫骨幹,而且能夠將它(和Linux)做爲過去10年裏Internet呈指數級增加的一個有力證實。服務器


    那麼,若是MySQL真的這麼重要,爲何還會出現愈來愈多的核心MySQ產品的高端衍生產品?這是由於MySQL是免費的開源應用程序,因此開發 人員老是能夠得到其代碼,並按照本身的想法修改代碼,而後再自行分發代碼。在很長的一段時間裏,在開發人員本身的生產環境中,沒有任何值得信任的 MySQL分支。可是,這種狀況很快就發生了改變。有幾個分支引發了許多人的關注。數據庫設計


爲何要進行分支?ide

    爲何須要對MySQL進行分支?這是一個很是合理的問題。成千上萬的網站依賴於MySQL,而且對許多人來講,它彷佛是一個很好的解決方案。但 是,一般就是這樣,適合許多人並不必定適合全部人。這促使一些開發人員想要根據本身的須要開發出更好的解決方案。還有什麼能比將良好的解決方案轉換爲完美 的解決方案更好的呢?。工具


    下面咱們將介紹這些分支尋求改變的更多細節。一些分支認爲MySQL變得太臃腫了,提供了許多用戶永遠不會感興趣的功能,犧牲了性能的簡單性。若是 人們對更精簡的MySQL 4特別滿意,那麼爲何還要在MySQL 5中添加額外的複雜性呢?對於此分支來講,更好的MySQL分支應該更簡單、更快捷,所以提供的功能也較少,但這樣會使這些功能極其迅速地發揮做用,而且 牢記目標受衆,在本例中,目標受衆是高可用性網站。性能


    對於其餘分支來講,MySQL並無提供足夠多的新功能,或者是添加新功能的速度太慢了。他們可能認爲MySQL沒有跟上高可用性網站的目標市場的 發展形勢,這些網站運行於具備大量內存的多核處理器之上。正如熟悉MySQL的人所知道的那樣,MySQL提供了兩種存儲引擎:MyISAM和 InnoDB。這一分支認爲這兩種存儲引擎都沒有提供他們所需的內容,所以他們建立了一種很是適合其目標的新存儲引擎。測試


    此外,一些分支的最高目標是成爲MySQL的替代產品,在這些產品中,您能夠輕鬆地訪問它們的分支,無需更改任何代碼。該分支使用與MySQL相同 的代碼和界面,所以使過渡變得很是容易。可是,另外一個分支聲稱它與MySQL不兼容,須要更改代碼。每一個分支的成熟度各不相同,一些分支聲稱已經準備就緒 能夠投入生產,而另一些則聲稱目前本身還遠達不到這一最高目標。優化


    最後,關於MySQL在Oracle下將如何發展仍不太肯定。Oracle收購了Sun,也收購了MySQL,如今Oracle控制MySQL產品 自己,並領導開發社區開發新的成品。因爲Oracle已經有了一個商業數據庫,所以人們擔憂他們可能沒有足夠的資源來使MySQL保持其領先地位。所以, 許多分支也是這些潛在擔憂所產生的結果,他們擔憂MySQL做爲領先的免費開源數據庫提供的功能可能太少、發佈週期太慢而且支持費用更昂貴。


XtraDB

    XtraDB是一款獨立的產品,但它仍被認爲是MySQL的一個分支。XtraDB其實是基於MySQL的數據庫的一個存儲引擎。XtraDB被 認爲是已成爲MySQL一部分的標準MyISAM和InnoDB的一個額外存儲引擎。MySQL 4和5使用默認的MyISAM存儲引擎安裝每一個表。InnoDB也是一個相對較新的存儲引擎選擇,在創建數據庫時,數據庫管理員和開發人員能夠基於每一個表 選擇存儲引擎類型。兩個存儲引擎的主要區別是:MyISAM沒有提供事務支持,而InnoDB提供了事務支持。其餘差異是許多細微的性能差異,與 MyISAM相比,InnoDB提供了許多細微的性能改進,而且在處理潛在的數據丟失時提供了更高的可靠性和安全性。彷佛InnoDB是用於將來改進的更 適合的存儲引擎,所以從版本5.5開始,MySQL已將默認存儲引擎從MyISAM更改成InnoDB。


基於這些優點,InnoDB存儲引擎自己拆分出了一個分支,一個名爲XtraDB的更新的存儲引擎。這個存儲引擎有多新呢?它3年前由 Percona首次發佈,所以它相對較新。它是專門針對在現代服務器上運行的現代高可用性網站設計的。它被設計爲在具備十幾個或更多核心和大內存 (32GB及更多)的服務器上運行。任何公司均可以從服務器管理公司購買這些類型的服務器,所以應將數據庫設計爲可以充分利用這些服務器。


    XtraDB分支有另外一個目標,即成爲InnoDB存儲引擎的簡單替代,這樣用戶就能夠輕鬆地切換其存儲引擎,無需更改任何現有的應用程序代碼。XtraDB必須可以向後兼容InnoDB,以提供它們想要添加的全部新功能和改進。它們實現了此目標。

XtraDB的速度有多快?我找到的一個性能測試代表:與內置的MySQL 5.1 InnoDB 引擎相比,它每分鐘可處理2.7倍的事務。(請參見參考資料)。速度顯然是一個不能夠忽略的因素,在考慮替代產品時更是如此。


Percona

    與內置的MySQL存儲引擎相比,XtraDB提供了一些極大的改進,但它不是一款獨立產品,也沒法輕鬆放入現有MySQL安裝。所以,若是您想使用這款新引擎,則必須使用提供它的產品。


    Percona Server就是這樣一款產品,由領先的MySQL諮詢公司Percona發佈。Percona Server是一款獨立的數據庫產品,爲用戶提供了換出其MySQL安裝並換入Percona Server產品的能力。經過這樣作,就能夠利用XtraDB存儲引擎。Percona Server聲稱能夠徹底與MySQL兼容,所以從理論上講,您無需更改軟件中的任何代碼。這確實是一個很大的優點,適合在您尋找快速性能改進時控制質 量。所以,採用Percona Server的一個很好的理由是,利用XtraDB引擎來儘量地減小代碼更改。


    此外,他們是XtraDB存儲引擎的原做者。Percona將此代碼用做開源代碼,所以您能夠在其餘產品中找到它,但引擎的最初建立者與編寫此產品的是同一我的,因此您能夠爲所欲爲地使用此信息。


下面是Percona Server的聲明,該聲明來自它們本身的網站:

  • 可擴展性:處理更多事務;在強大的服務器上進行擴展

  • 性能:使用了XtraDB的Percona Server速度很是快

  • 可靠性:避免損壞,提供崩潰安全(crash-safe)複製

  • 管理:在線備份,在線表格導入/導出

  • 診斷:高級分析和檢測

  • 靈活性:可變的頁面大小,改進的緩衝池管理


    Percona團隊的最終聲明是「Percona Server是由Oracle發佈的最接近官方MySQL Enterprise發行版的版本」,所以與其餘更改了大量基本核心MySQL代碼的分支有所區別。Percona Server的一個缺點是他們本身管理代碼,不接受外部開發人員的貢獻,以這種方式確保他們對產品中所包含功能的控制。


MariaDB

    另外一款提供了XtraDB存儲引擎的產品是MariaDB產品。它與Percona產品很是相似,可是提供了更多底層代碼更改,試圖提供比標準 MySQL更多的性能改進。MariaDB直接利用來自Percona的XtraDB引擎,因爲它們使用的是徹底相同的引擎,所以每次使用存儲引擎時沒有 顯著的差異。


    此外,MariaDB提供了MySQL提供的標準存儲引擎,即MyISAM和InnoDB。所以,實際上,能夠將它視爲MySQL的擴展集,它不只 提供MySQL提供的全部功能,還提供其餘功能。MariaDB還聲稱本身是MySQL的替代,所以從MySQL切換到MariaDB時,無需更改任何基 本代碼便可安裝它。


    最後可能也是最重要的一點是,MariaDB的主要建立者是Monty Widenius,也是MySQL的初始建立者。Monty成立了一家名爲Monty Program的公司來管理MariaDB的開發,這家公司僱傭開發人員來編寫和改進MariaDB產品。這既是一件好事,也是一件壞事:有利的一面在於 他們是Maria功能和bug修復的佼佼者,但公司不是以贏利爲目的,而是由產品驅動的,這可能會帶來問題,由於沒有贏利的公司不必定能長久維持下去。


Drizzle

    本文介紹的最後一款產品是Drizzle。與以前介紹的兩款產品不一樣,Drizzle與MySQL有很大差異,甚至聲稱它們不是MySQL的替代產 品。他們指望對MySQL進行一些重大更改,想要提供一種出色的解決方案來解決高可用性問題,即便這意味着要更改咱們已經習慣了的MySQL的各個方面。


    在公司的FAQ頁面,閱讀其中提供的問題時就會發現,Drizzle進一步地強調了其基本目標。他們不滿意MySQL 4.1版本以後對MySQL代碼進行的一些更改,聲稱許多開發人員不想花費額外的錢。他們認可其產品與SQL關係數據庫甚至是不兼容的。這確實與 MySQL有很大的不一樣。


    與習慣的MySQL有如此大的變化,咱們爲何還要考慮這款產品呢?準確地講,緣由與上面的是相同的,Drizzle是MySQL引擎的一次重大修 改,它清除了一些表現不佳和沒必要要的功能,將不少代碼重寫,對它們進行了優化,甚至將所用語言從C換成了C++,以得到所需的代碼。此外,Drizzle 並無就此結束脩改,該產品在設計時就考慮到了其目標市場,即具備大量內容的多核服務器、運行Linux的64位機器、雲計算中使用的服務器、託管網站的 服務器和每分鐘接收數以萬計點擊率的服務器。這是一個至關具體的市場。它太具體了嗎?請記住這些類型的公司目前在其數據庫方面投入的資金,若是他們能夠安 裝Drizzle而不是MySQL,那麼他們的服務器成本將削減一半,能夠節省不少錢!


    那麼,是否是全部人都應該使用Drizzle呢?等等,正如Drizzle反覆指出的那樣,它與MySQL不兼容。所以,若是您如今使用的是MySQL平臺,那麼須要重寫大量代碼,才能使Drizzle在您的環境中正常工做。

    儘管須要額外的工做才能讓它運行,但它並不像Percona或MariaDB那樣快速且易於使用。我之因此介紹Drizzle,是由於儘管目前它可 能不是您的選擇,但幾年以後,它極可能會成爲一些人的選擇。由於本文的目標是提升您對將來使用的工具的認識,因此這是向您介紹此產品的好機會。許多領先的 DB專家相信Drizzle將成爲將來5年內高可用性數據庫安裝的選擇。


    Drizzle是徹底開源的產品,公開接受開發人員的貢獻。它不像MariaDB那樣有支持其開發的公司,也不像Percona那樣有大量外部開發人員爲其提供貢獻。Drizzle有很好的成長空間並會提供一些新功能,但可能須要重寫大部分MySQL代碼。


對比圖

下面是本文中介紹的三款MySQL分支產品的概述。

http://cms.csdnimg.cn/articlev1/uploads/allimg/111229/94_111229163726_1.png

結束語

    本文介紹了MySQL產品的三個新分支,旨在解決它們使用MySQL時遇到的一些問題。這三個分支都是免費的開源產品。在使用時,您須要根據 MySQL已提供的功能來權衡它們的優缺點。我相信,對於閱讀本文的大多數人來講,MySQL將仍然是知足數據庫需求的首選。我很懷疑閱讀本文的大多數讀 者都是每小時擁有1,000,000點擊率的網站的全部者。我想再次強調的是,MySQL仍然是一款很是出色的產品,是一個很是適合大多數使用狀況的數據 庫。


    可是,對於那些認爲本身的網站須要比目前MySQL所能提供的更高的可用性、可擴展性和性能的人來講,這3款產品中的任意一款產品均可能爲您提供所 需的解決方案。更進一步地說,若是您認爲您的網站將成爲能得到不少利潤的網站,那麼能夠考慮使用三款產品中的一款產品,在問題出現以前解決它們。


    最後,出現這些MySQL分支的根本緣由是:一些創做者想更改MySQL的一些基本功能,由於他們沒法等到MySQL本身完成這些工做。此 外,Oracle的現狀威脅到了MySQL的將來,而且許多開發人員(包括MySQL的原始開發人員)都擔憂該產品的將來,他們還擔憂Oracle是否會 投入精力保持該產品的領先數據庫的地位。這些擔心在我看來都是合理的,所以在咱們邁向將來時要牢記這些產品。


做者簡介:

    Michael Abernethy在Michael Abernethy的12年技術生涯中,他與各類不一樣的技術和客戶打交道。他如今專一於構建更好和更爲複雜的Web應用程序、測試運行這些應用程序所在的 瀏覽器的限制,同時也在嘗試解決如何讓Web應用程序更容易建立和維護。他空閒時,會陪伴他的孩子們。

相關文章
相關標籤/搜索