超越MySQL對流行資料庫進行分支知識整理

來源:果殼範文吧 3.95K

簡 介

超越MySQL對流行資料庫進行分支知識整理

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

那麼,如果 MySQL 真的這麼重要,為什麼還會出現越來越多的核心 MySQL 產品的高階衍生產品?這是因為 MySQL 是免費的開源應用程式,所以開發人員總是可以獲得其程式碼,並按照自己的想法修改程式碼,然後再自行分發程式碼。在很長的一段時間裡,在開發人員自己的生產環境 中,沒有任何值得信任的 MySQL 分支。但是,這種情況很快就發生了改變。有幾個分支引起了許多人的關注。

本文將討論受人們關注的三個流行 MySQL 分支:Drizzle、MariaDB 和 Percona Server(包括 XtraDB 引擎)。本文將簡要介紹每個分支出現的原因及其目標,以及是否可在您自己的生產環境中使用它們。在本文結束時,您應該能夠回答 “對我的環境來說,這些 MySQL 分支產品是否是一個好的解決方案?” 這樣的問題。

為什麼要進行分支?

為什麼需要對 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 首次釋出,因此它相對較新。它是專門針對在現代伺服器上執行的現代高可用性網站設計的。它被設計為在具有十幾個或更多核心和大記憶體(32 GB及更多)的伺服器上執行。任何公司都可以從伺服器管理公司購買這些型別的伺服器,因此應將資料庫設計為能夠充分利用這些伺服器。

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 分支產品的概述。

產品價格目標主要功能是否可投入生產?Percona Server免費提供 XtraDB 儲存引擎的包裝器和其他分析工具XtraDB是MariaDB免費擴充套件 MySQL 以包含 XtraDB 和其他效能改進XtraDB是Drizzle免費提供比 MySQL 更強大的可擴充套件性和效能改進高可用性是

結束語

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

但是,對於那些認為自己的網站需要比目前 MySQL 所能提供的更高的可用性、可擴充套件性和效能的人來說,這 3 款產品中的任意一款產品都可能為您提供所需的解決方案。更進一步地說,如果您認為您的網站將成為 能獲得很多利潤的網站,那麼可以考慮使用三款產品中的一款產品,在問題出現之前解決它們。

最後,出現這些 MySQL 分支的根本原因是:一些創作者想更改 MySQL 的一些基本功能,因為他們無法等到 MySQL 自己完成這些工作。此外,Oracle 的現狀威脅到了 MySQL 的未來,並且許多開發人員(包括 MySQL 的原始開發人員)都擔心該產品的未來,他們還擔心 Oracle 是否會投入精力保持該產品的領先資料庫的地位。這些擔憂在我看來都是合理的,因此在我們邁向未來時要牢記這些產品。

熱門標籤