超越MySQL對流行數據庫進(jìn)行分支知識整理

時(shí)間:2022-06-26 02:38:34 數據庫操作系統 我要投稿
  • 相關(guān)推薦

超越MySQL對流行數據庫進(jìn)行分支知識整理

  簡(jiǎn) 介

超越MySQL對流行數據庫進(jìn)行分支知識整理

  MySQL 是歷史上最受歡迎的免費開(kāi)源程序之一。它是成千上萬(wàn)個(gè)網(wǎng)站的數據庫骨干,并且可以將它(和 Linux)作為過(guò)去 10 年里 Internet 呈指數級增長(cháng)的一個(gè)有力證明。

  那么,如果 MySQL 真的這么重要,為什么還會(huì )出現越來(lái)越多的核心 MySQL 產(chǎn)品的高端衍生產(chǎn)品?這是因為 MySQL 是免費的開(kāi)源應用程序,所以開(kāi)發(fā)人員總是可以獲得其代碼,并按照自己的想法修改代碼,然后再自行分發(fā)代碼。在很長(cháng)的一段時(shí)間里,在開(kāi)發(fā)人員自己的生產(chǎn)環(huán)境 中,沒(méi)有任何值得信任的 MySQL 分支。但是,這種情況很快就發(fā)生了改變。有幾個(gè)分支引起了許多人的關(guān)注。

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

  為什么要進(jìn)行分支?

  為什么需要對 MySQL 進(jìn)行分支?這是一個(gè)非常合理的問(wèn)題。成千上萬(wàn)的網(wǎng)站依賴(lài)于 MySQL,并且對許多人來(lái)說(shuō),它似乎是一個(gè)很好的解決方案。但是,通常就是這樣,適合許多人并不一定適合所有 人。這促使一些開(kāi)發(fā)人員想要根據自己的需要開(kāi)發(fā)出更好的解決方案。還有什么能比將良好的解決方案轉換為完美的解決方案更好的呢?。

  下面我們將介紹這些分支尋求改變的更多細節。一些分支認為 MySQL 變得太臃腫 了,提供了許多用戶(hù)永遠不會(huì )感興趣的功能,犧牲了性能的簡(jiǎn)單性。如果人們對更精簡(jiǎn)的 MySQL 4 特別滿(mǎn)意,那么為什么還要在 MySQL 5 中添加額外的復雜性呢?對于此分支來(lái)說(shuō),更好的 MySQL 分支應該更簡(jiǎn)單、更快捷,因此提供的功能也較少,但這樣會(huì )使這些功能極其迅速地發(fā)揮作用,并且牢記目標受眾,在本例中,目標受眾是高可用性網(wǎng)站。

  對于其他分支來(lái)說(shuō),MySQL 并沒(méi)有提供足夠多的 新功能,或者是添加新功能的速度太慢了。他們可能認為 MySQL 沒(méi)有跟上高可用性網(wǎng)站的目標市場(chǎng)的發(fā)展形勢,這些網(wǎng)站運行于具有大量?jì)却娴亩嗪颂幚砥髦。正如熟?MySQL 的人所知道的那樣,MySQL 提供了兩種存儲引擎:MyISAM 和 InnoDB。這一分支認為這兩種存儲引擎都沒(méi)有提供他們所需的內容,因此他們創(chuàng )建了一種非常適合其目標的新存儲引擎。

  此外,一些分支的最高目標是成為 MySQL 的替代產(chǎn)品,在這些產(chǎn)品中,您可以輕松地訪(fǎng)問(wèn)它們的分支,無(wú)需更改任何代碼。該分支使用與 MySQL 相同的代碼和界面,因此使過(guò)渡變得非常容易。但是,另一個(gè)分支聲稱(chēng)它與 MySQL 不兼容,需要更改代碼。每個(gè)分支的成熟度各不相同,一些分支聲稱(chēng)已經(jīng)準備就緒可以投入生產(chǎn),而另外一些則聲稱(chēng)目前自己還遠達不到這一最高目標。

  最后,關(guān)于 MySQL 在 Oracle 下將如何發(fā)展仍不太確定。Oracle 收購了 Sun,也收購了 MySQL,現在 Oracle 控制 MySQL 產(chǎn)品本身,并領(lǐng)導開(kāi)發(fā)社區開(kāi)發(fā)新的成品。由于 Oracle 已經(jīng)有了一個(gè)商業(yè)數據庫,因此人們擔心他們可能沒(méi)有足夠的資源來(lái)使 MySQL 保持其領(lǐng)先地位。因此,許多分支也是這些潛在擔心所產(chǎn)生的結果,他們擔心 MySQL 作為領(lǐng)先的免費開(kāi)源數據庫提供的功能可能太少、發(fā)布周期太慢并且支持費用更昂貴。

  XtraDB

  XtraDB 是一款獨立的產(chǎn)品,但它仍被認為是 MySQL 的一個(gè)分支。XtraDB 實(shí)際上是基于 MySQL 的數據庫的一個(gè)存儲引擎。XtraDB 被認為是已成為 MySQL 一部分的標準 MyISAM 和 InnoDB 的一個(gè)額外存儲引擎。MySQL 4 和 5 使用默認的 MyISAM 存儲引擎安裝每個(gè)表。InnoDB 也是一個(gè)相對較新的存儲引擎選擇,在建立數據庫時(shí),數據庫管理員和開(kāi)發(fā)人員可以基于每個(gè)表選擇存儲引擎類(lèi)型。兩個(gè)存儲引擎的主要區別是:MyISAM 沒(méi)有提供事務(wù)支持,而 InnoDB 提供了事務(wù)支持。其他差別是許多細微的性能差別,與 MyISAM 相比,InnoDB 提供了許多細微的性能改進(jìn),并且在處理潛在的數據丟失時(shí)提供了更高的可靠性和安全性。似乎 InnoDB 是用于未來(lái)改進(jìn)的更適合的存儲引擎,因此從版本 5.5 開(kāi)始,MySQL 已將默認存儲引擎從 MyISAM 更改為 InnoDB。

  基于這些優(yōu)勢,InnoDB 存儲引擎本身拆分出了一個(gè)分支,一個(gè)名為 XtraDB 的更新的存儲引擎。這個(gè)存儲引擎有多新呢?它 3 年前由 Percona 首次發(fā)布,因此它相對較新。它是專(zhuān)門(mén)針對在現代服務(wù)器上運行的現代高可用性網(wǎng)站設計的。它被設計為在具有十幾個(gè)或更多核心和大內存(32 GB及更多)的服務(wù)器上運行。任何公司都可以從服務(wù)器管理公司購買(mǎi)這些類(lèi)型的服務(wù)器,因此應將數據庫設計為能夠充分利用這些服務(wù)器。

  XtraDB 分支有另一個(gè)目標,即成為 InnoDB 存儲引擎的簡(jiǎn)單替代,這樣用戶(hù)就可以輕松地切換其存儲引擎,無(wú)需 更改任何現有的應用程序代碼。XtraDB 必須能夠向后兼容 InnoDB,以提供它們想要添加的所有新功能和改進(jìn)。它們實(shí)現了此目標。

  XtraDB 的速度有多快?我找到的一個(gè)性能測試表明:與內置的 MySQL 5.1 InnoDB 引擎相比,它每分鐘可處理 2.7 倍的事務(wù)。。速度顯然是一個(gè)不可以忽略的因素,在考慮替代產(chǎn)品時(shí)更是如此。

  Percona

  與內置的 MySQL 存儲引擎相比,XtraDB 提供了一些極大的改進(jìn),但它不是一款獨立產(chǎn)品,也無(wú)法輕松放入現有 MySQL 安裝。因此,如果您想使用這款新引擎,則必須使用提供它的產(chǎn)品。

  Percona Server 就是這樣一款產(chǎn)品,由領(lǐng)先的 MySQL 咨詢(xún)公司 Percona 發(fā)布。Percona Server 是一款獨立的數據庫產(chǎn)品,為用戶(hù)提供了換出其 MySQL 安裝并換入 Percona Server 產(chǎn)品的能力。通過(guò)這樣做,就可以利用 XtraDB 存儲引擎。Percona Server 聲稱(chēng)可以完全與 MySQL 兼容,因此從理論上講,您無(wú)需更改軟件中的任何代碼。這確實(shí)是一個(gè)很大的優(yōu)勢,適合在您尋找快速性能改進(jìn)時(shí)控制質(zhì)量。因此,采用 Percona Server 的一個(gè)很好的理由是,利用 XtraDB 引擎來(lái)盡可能地減少代碼更改。

  此外,他們是 XtraDB 存儲引擎的原作者。Percona 將此代碼用作開(kāi)源代碼,因此您可以在其他產(chǎn)品中找到它,但引擎的最初創(chuàng )建者與編寫(xiě)此產(chǎn)品的是同一個(gè)人,所以您可以隨心所欲地使用此信息。

  下面是 Percona Server 的聲明,該聲明來(lái)自它們自己的網(wǎng)站:

  可擴展性:處理更多事務(wù);在強大的服務(wù)器上進(jìn)行擴展

  性能:使用了 XtraDB 的 Percona Server 速度非?

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

  管理:在線(xiàn)備份,在線(xiàn)表格導入/導出

  診斷:高級分析和檢測

  靈活性:可變的頁(yè)面大小,改進(jìn)的緩沖池管理Percona 團隊的最終聲明是 “Percona Server 是由 Oracle 發(fā)布的最接近官方 MySQL Enterprise 發(fā)行版的版本”,因此與其他更改了大量基本核心 MySQL 代碼的分支有所區別。Percona Server 的一個(gè)缺點(diǎn)是他們自己管理代碼,不接受外部開(kāi)發(fā)人員的貢獻,以這種方式確保他們對產(chǎn)品中所包含功能的控制。

  MariaDB

  另一款提供了 XtraDB 存儲引擎的產(chǎn)品是 MariaDB 產(chǎn)品。它與 Percona 產(chǎn)品非常類(lèi)似,但是提供了更多底層代碼更改,試圖提供比標準 MySQL 更多的性能改進(jìn)。MariaDB 直接利用來(lái)自 Percona 的 XtraDB 引擎,由于它們使用的是完全相同的引擎,因此每次使用存儲引擎時(shí)沒(méi)有顯著(zhù)的差別。

  此外,MariaDB 提供了 MySQL 提供的標準存儲引擎,即 MyISAM 和 InnoDB。因此,實(shí)際上,可以將它視為 MySQL 的擴展集,它不僅提供 MySQL 提供的所有功能,還提供其他功能。MariaDB 還聲稱(chēng)自己是 MySQL 的替代,因此從 MySQL 切換到 MariaDB 時(shí),無(wú)需更改任何基本代碼即可安裝它。

  最后可能也是最重要的一點(diǎn)是,MariaDB 的主要創(chuàng )建者是 Monty Widenius,也是 MySQL 的初始創(chuàng )建者。Monty 成立了一家名為 Monty Program 的公司來(lái)管理 MariaDB 的開(kāi)發(fā),這家公司雇傭開(kāi)發(fā)人員來(lái)編寫(xiě)和改進(jìn) MariaDB 產(chǎn)品。這既是一件好事,也是一件壞事:有利的一面在于他們是 Maria 功能和 bug 修復的佼佼者,但公司不是以贏(yíng)利為目的,而是由產(chǎn)品驅動(dòng)的,這可能會(huì )帶來(lái)問(wèn)題,因為沒(méi)有贏(yíng)利的公司不一定能長(cháng)久維持下去。

  Drizzle

  本文介紹的最后一款產(chǎn)品是 Drizzle。與之前介紹的兩款產(chǎn)品不同,Drizzle 與 MySQL 有很大差別,甚至聲稱(chēng)它們不是 MySQL 的替代產(chǎn)品。他們期望對 MySQL 進(jìn)行一些重大更改,想要提供一種出色的解決方案來(lái)解決高可用性問(wèn)題,即使這意味著(zhù)要更改我們已經(jīng)習慣了的 MySQL 的各個(gè)方面。

  在公司的 FAQ 頁(yè)面,閱讀其中提供的問(wèn)題時(shí)就會(huì )發(fā)現,Drizzle 進(jìn)一步地強調了其基本目標。他們不滿(mǎn)意 MySQL 4.1 版本之后對 MySQL 代碼進(jìn)行的一些更改,聲稱(chēng)許多開(kāi)發(fā)人員不想花費額外的錢(qián)。他們承認其產(chǎn)品與 SQL 關(guān)系數據庫甚至是不兼容的。這確實(shí)與 MySQL 有很大的不同。

  與習慣的 MySQL 有如此大的變化,我們?yōu)槭裁催要考慮這款產(chǎn)品呢?準確地講,原因與上面的是相同的,Drizzle 是 MySQL 引擎的一次重大修改,它清除了一些表現不佳和不必要的功能,將很多代碼重寫(xiě),對它們進(jìn)行了優(yōu)化,甚至將所用語(yǔ)言從 C 換成了 C++,以獲得所需的代碼。此外,Drizzle 并沒(méi)有就此結束修改,該產(chǎn)品在設計時(shí)就考慮到了其目標市場(chǎng),即具有大量?jì)热莸亩嗪朔⻊?wù)器、運行 Linux 的 64 位機器、云計算中使用的服務(wù)器、托管網(wǎng)站的服務(wù)器和每分鐘接收數以萬(wàn)計點(diǎn)擊率的服務(wù)器。這是一個(gè)相當具體的市場(chǎng)。它太具體了嗎?請記住這些類(lèi)型的公司目前 在其數據庫方面投入的資金,如果他們可以安裝 Drizzle 而不是 MySQL,那么他們的服務(wù)器成本將削減一半,可以節省很多錢(qián)!

  那么,是不是所有人都應該使用 Drizzle 呢?等等,正如 Drizzle 反復指出的那樣,它與 MySQL 不兼容。因此,如果您現在使用的是 MySQL 平臺,那么需要重寫(xiě)大量代碼,才能使 Drizzle 在您的環(huán)境中正常工作。

  盡管需要額外的工作才能讓它運行,但它并不像 Percona 或 MariaDB 那樣快速且易于使用。我之所以介紹 Drizzle,是因為盡管目前它可能不是您的選擇,但幾年之后,它很可能會(huì )成為一些人的選擇。因為本文的目標是提高您對未來(lái)使用的工具的認識,所以這是 向您介紹此產(chǎn)品的好機會(huì )。許多領(lǐng)先的 DB 專(zhuān)家相信 Drizzle 將成為未來(lái) 5 年內高可用性數據庫安裝的選擇。

  Drizzle 是完全開(kāi)源的產(chǎn)品,公開(kāi)接受開(kāi)發(fā)人員的貢獻。它不像 MariaDB 那樣有支持其開(kāi)發(fā)的公司,也不像 Percona 那樣有大量外部開(kāi)發(fā)人員為其提供貢獻。Drizzle 有很好的成長(cháng)空間并會(huì )提供一些新功能,但可能需要重寫(xiě)大部分 MySQL 代碼。

  對比圖

  下面是本文中介紹的三款 MySQL 分支產(chǎn)品的概述。

  產(chǎn)品價(jià)格目標主要功能是否可投入生產(chǎn)?Percona Server免費提供 XtraDB 存儲引擎的包裝器和其他分析工具XtraDB是MariaDB免費擴展 MySQL 以包含 XtraDB 和其他性能改進(jìn)XtraDB是Drizzle免費提供比 MySQL 更強大的可擴展性和性能改進(jìn)高可用性是

  結束語(yǔ)

  本文介紹了 MySQL 產(chǎn)品的三個(gè)新分支,旨在解決它們使用 MySQL 時(shí)遇到的一些問(wèn)題。這三個(gè)分支都是免費的開(kāi)源產(chǎn)品。在使用時(shí),您需要根據 MySQL 已提供的功能來(lái)權衡它們的優(yōu)缺點(diǎn)。我相信,對于閱讀本文的大多數人來(lái)說(shuō),MySQL 將仍然 是滿(mǎn)足數據庫需求的首選。我很懷疑閱讀本文的大多數讀者都是每小時(shí)擁有 1,000,000 點(diǎn)擊率的網(wǎng)站的所有者。我想再次強調的是,MySQL 仍然是一款非常出色的產(chǎn)品,是一個(gè)非常適合大多數使用情況的數據庫。

  但是,對于那些認為自己的網(wǎng)站需要比目前 MySQL 所能提供的更高的可用性、可擴展性和性能的人來(lái)說(shuō),這 3 款產(chǎn)品中的任意一款產(chǎn)品都可能為您提供所需的解決方案。更進(jìn)一步地說(shuō),如果您認為您的網(wǎng)站將成為 能獲得很多利潤的網(wǎng)站,那么可以考慮使用三款產(chǎn)品中的一款產(chǎn)品,在問(wèn)題出現之前解決它們。

  最后,出現這些 MySQL 分支的根本原因是:一些創(chuàng )作者想更改 MySQL 的一些基本功能,因為他們無(wú)法等到 MySQL 自己完成這些工作。此外,Oracle 的現狀威脅到了 MySQL 的未來(lái),并且許多開(kāi)發(fā)人員(包括 MySQL 的原始開(kāi)發(fā)人員)都擔心該產(chǎn)品的未來(lái),他們還擔心 Oracle 是否會(huì )投入精力保持該產(chǎn)品的領(lǐng)先數據庫的地位。這些擔憂(yōu)在我看來(lái)都是合理的,因此在我們邁向未來(lái)時(shí)要牢記這些產(chǎn)品。

  

【超越MySQL對流行數據庫進(jìn)行分支知識整理】相關(guān)文章:

如何實(shí)現MySQL數據庫的備份與恢復電腦知識06-28

MySQL數據庫如何備份與恢復06-28

如何實(shí)現MySQL數據庫的備份與恢復06-28

MySQL數據庫備份守則和方法04-22

用MySQL來(lái)創(chuàng )建數據庫和數據庫表06-28

MySQL數據庫所支持的操作系統介紹06-28

如何用crontab系統每天定時(shí)備份MySQL數據庫06-28

計算機二級mysql數據庫模擬試題07-01

如何在命令行CMD模式下備份MySQL數據庫06-28

PHP+mysql的網(wǎng)站作品在面試的時(shí)候如何帶去?導出數據庫?07-13

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆