程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 超越MySQL 對流行數據庫進行分支的知識小結

超越MySQL 對流行數據庫進行分支的知識小結

編輯:關於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 是否會投入精力保持該產品的領先數據庫的地位。這些擔憂在我看來都是合理的,因此在我們邁向未來時要牢記這些產品。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved