MySQL資料庫三個分支XtraDB、Percona及MariaDB的對比

MySQL是歷史上最受歡迎的免費開源程式之一。它是成千上萬個網站的資料庫骨幹,並且可以將它(和Linux)作為過去10年裡Internet呈指數級增長的一個有力證明。

那麼,如果MySQL真的這麼重要,為什麼還會出現越來越多的核心MySQ產品的高端衍生產品?這是因為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代碼。

發佈留言