《Mysql學(xué)習(xí)超越MySQL 對(duì)流行數(shù)據(jù)庫(kù)進(jìn)行分支的知識(shí)小結(jié)》要點(diǎn):
本文介紹了Mysql學(xué)習(xí)超越MySQL 對(duì)流行數(shù)據(jù)庫(kù)進(jìn)行分支的知識(shí)小結(jié),希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
MySQL 是歷史上最受歡迎的免費(fèi)開(kāi)源程序之一.它是成千上萬(wàn)個(gè)網(wǎng)站的數(shù)據(jù)庫(kù)骨干,并且可以將它(和 Linux?)作為過(guò)去 10 年里 Internet 呈指數(shù)級(jí)增長(zhǎng)的一個(gè)有力證明.MYSQL教程
那么,如果 MySQL 真的這么重要,為什么還會(huì)出現(xiàn)越來(lái)越多的核心 MySQL 產(chǎn)品的高端衍生產(chǎn)品?這是因?yàn)?MySQL 是免費(fèi)的開(kāi)源應(yīng)用程序,所以開(kāi)發(fā)人員總是可以獲得其代碼,并依照自己的想法修改代碼,然后再自行分發(fā)代碼.在很長(zhǎng)的一段時(shí)間里,在開(kāi)發(fā)人員自己的生產(chǎn)環(huán)境 中,沒(méi)有任何值得信任的 MySQL 分支.但是,這種情況很快就發(fā)生了改變.有幾個(gè)分支引起了許多人的關(guān)注.MYSQL教程
本文將討論受人們關(guān)注的三個(gè)流行 MySQL 分支:Drizzle、MariaDB 和 Percona Server(包括 XtraDB 引擎).本文將簡(jiǎn)要介紹每個(gè)分支出現(xiàn)的原因及其目標(biāo),以及是否可在您自己的生產(chǎn)環(huán)境中使用它們.在本文結(jié)束時(shí),您應(yīng)該能夠回答 “對(duì)我的環(huán)境來(lái)說(shuō),這些 MySQL 分支產(chǎn)品是否是一個(gè)好的辦理方案?” 這樣的問(wèn)題.MYSQL教程
為什么要進(jìn)行分支?MYSQL教程
為什么需要對(duì) MySQL 進(jìn)行分支?這是一個(gè)非常合理的問(wèn)題.成千上萬(wàn)的網(wǎng)站依賴(lài)于 MySQL,并且對(duì)許多人來(lái)說(shuō),它似乎是一個(gè)很好的辦理方案.但是,通常就是這樣,適合許多人并不一定適合所有 人.這促使一些開(kāi)發(fā)人員想要根據(jù)自己的需要開(kāi)發(fā)出更好的辦理方案.還有什么能比將良好的辦理方案轉(zhuǎn)換為完美的辦理方案更好的呢?.MYSQL教程
下面我們將介紹這些分支尋求改變的更多細(xì)節(jié).一些分支認(rèn)為 MySQL 變得太臃腫 了,提供了許多用戶(hù)永遠(yuǎn)不會(huì)感興趣的功能,犧牲了性能的簡(jiǎn)單性.如果人們對(duì)更精簡(jiǎn)的 MySQL 4 特別滿意,那么為什么還要在 MySQL 5 中添加額外的復(fù)雜性呢?對(duì)于此分支來(lái)說(shuō),更好的 MySQL 分支應(yīng)該更簡(jiǎn)單、更快捷,因此提供的功能也較少,但這樣會(huì)使這些功能極其迅速地發(fā)揮作用,并且牢記目標(biāo)受眾,在本例中,目標(biāo)受眾是高可用性網(wǎng)站.MYSQL教程
對(duì)于其他分支來(lái)說(shuō),MySQL 并沒(méi)有提供足夠多的 新功能,或者是添加新功能的速度太慢了.他們可能認(rèn)為 MySQL 沒(méi)有跟上高可用性網(wǎng)站的目標(biāo)市場(chǎng)的發(fā)展形勢(shì),這些網(wǎng)站運(yùn)行于具有大量?jī)?nèi)存的多核處理器之上.正如熟悉 MySQL 的人所知道的那樣,MySQL 提供了兩種存儲(chǔ)引擎:MyISAM 和 InnoDB.這一分支認(rèn)為這兩種存儲(chǔ)引擎都沒(méi)有提供他們所需的內(nèi)容,因此他們創(chuàng)建了一種非常適合其目標(biāo)的新存儲(chǔ)引擎.MYSQL教程
此外,一些分支的最高目標(biāo)是成為 MySQL 的替代產(chǎn)品,在這些產(chǎn)品中,您可以輕松地拜訪它們的分支,無(wú)需更改任何代碼.該分支使用與 MySQL 相同的代碼和界面,因此使過(guò)渡變得非常容易.但是,另一個(gè)分支聲稱(chēng)它與 MySQL 不兼容,需要更改代碼.每個(gè)分支的成熟度各不相同,一些分支聲稱(chēng)已經(jīng)準(zhǔn)備就緒可以投入生產(chǎn),而另外一些則聲稱(chēng)目前自己還遠(yuǎn)達(dá)不到這一最高目標(biāo).MYSQL教程
最后,關(guān)于 MySQL 在 Oracle 下將如何發(fā)展仍不太確定.Oracle 收購(gòu)了 Sun,也收購(gòu)了 MySQL,現(xiàn)在 Oracle 控制 MySQL 產(chǎn)品本身,并領(lǐng)導(dǎo)開(kāi)發(fā)社區(qū)開(kāi)發(fā)新的成品.由于 Oracle 已經(jīng)有了一個(gè)商業(yè)數(shù)據(jù)庫(kù),因此人們擔(dān)心他們可能沒(méi)有足夠的資源來(lái)使 MySQL 保持其領(lǐng)先地位.因此,許多分支也是這些潛在擔(dān)心所產(chǎn)生的結(jié)果,他們擔(dān)心 MySQL 作為領(lǐng)先的免費(fèi)開(kāi)源數(shù)據(jù)庫(kù)提供的功能可能太少、發(fā)布周期太慢并且支持費(fèi)用更昂貴.MYSQL教程
XtraDBMYSQL教程
XtraDB 是一款獨(dú)立的產(chǎn)品,但它仍被認(rèn)為是 MySQL 的一個(gè)分支.XtraDB 實(shí)際上是基于 MySQL 的數(shù)據(jù)庫(kù)的一個(gè)存儲(chǔ)引擎.XtraDB 被認(rèn)為是已成為 MySQL 一部分的標(biāo)準(zhǔn) MyISAM 和 InnoDB 的一個(gè)額外存儲(chǔ)引擎.MySQL 4 和 5 使用默認(rèn)的 MyISAM 存儲(chǔ)引擎安裝每個(gè)表.InnoDB 也是一個(gè)相對(duì)較新的存儲(chǔ)引擎選擇,在建立數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)管理員和開(kāi)發(fā)人員可以基于每個(gè)表選擇存儲(chǔ)引擎類(lèi)型.兩個(gè)存儲(chǔ)引擎的主要區(qū)別是:MyISAM 沒(méi)有提供事務(wù)支持,而 InnoDB 提供了事務(wù)支持.其他差別是許多細(xì)微的性能差別,與 MyISAM 相比,InnoDB 提供了許多細(xì)微的性能改進(jìn),并且在處理潛在的數(shù)據(jù)丟失時(shí)提供了更高的可靠性和平安性.似乎 InnoDB 是用于未來(lái)改進(jìn)的更適合的存儲(chǔ)引擎,因此從版本 5.5 開(kāi)始,MySQL 已將默認(rèn)存儲(chǔ)引擎從 MyISAM 更改為 InnoDB.MYSQL教程
基于這些優(yōu)勢(shì),InnoDB 存儲(chǔ)引擎本身拆分出了一個(gè)分支,一個(gè)名為 XtraDB 的更新的存儲(chǔ)引擎.這個(gè)存儲(chǔ)引擎有多新呢?它 3 年前由 Percona 首次發(fā)布,因此它相對(duì)較新.它是專(zhuān)門(mén)針對(duì)在現(xiàn)代服務(wù)器上運(yùn)行的現(xiàn)代高可用性網(wǎng)站設(shè)計(jì)的.它被設(shè)計(jì)為在具有十幾個(gè)或更多核心和大內(nèi)存(32 GB及更多)的服務(wù)器上運(yùn)行.任何公司都可以從服務(wù)器管理公司購(gòu)買(mǎi)這些類(lèi)型的服務(wù)器,因此應(yīng)將數(shù)據(jù)庫(kù)設(shè)計(jì)為能夠充分利用這些服務(wù)器.MYSQL教程
XtraDB 分支有另一個(gè)目標(biāo),即成為 InnoDB 存儲(chǔ)引擎的簡(jiǎn)單替代,這樣用戶(hù)就可以輕松地切換其存儲(chǔ)引擎,無(wú)需 更改任何現(xiàn)有的應(yīng)用程序代碼.XtraDB 必須能夠向后兼容 InnoDB,以提供它們想要添加的所有新功能和改進(jìn).它們實(shí)現(xiàn)了此目標(biāo).MYSQL教程
XtraDB 的速度有多快?我找到的一個(gè)性能測(cè)試表明:與內(nèi)置的 MySQL 5.1 InnoDB 引擎相比,它每分鐘可處理 2.7 倍的事務(wù)..速度顯然是一個(gè)不可以忽略的因素,在考慮替代產(chǎn)品時(shí)更是如此.MYSQL教程
PerconaMYSQL教程
與內(nèi)置的 MySQL 存儲(chǔ)引擎相比,XtraDB 提供了一些極大的改進(jìn),但它不是一款獨(dú)立產(chǎn)品,也無(wú)法輕松放入現(xiàn)有 MySQL 安裝.因此,如果您想使用這款新引擎,則必須使用提供它的產(chǎn)品.MYSQL教程
Percona Server 就是這樣一款產(chǎn)品,由領(lǐng)先的 MySQL 咨詢(xún)公司 Percona 發(fā)布.Percona Server 是一款獨(dú)立的數(shù)據(jù)庫(kù)產(chǎn)品,為用戶(hù)提供了換出其 MySQL 安裝并換入 Percona Server 產(chǎn)品的能力.通過(guò)這樣做,就可以利用 XtraDB 存儲(chǔ)引擎.Percona Server 聲稱(chēng)可以完全與 MySQL 兼容,因此從理論上講,您無(wú)需更改軟件中的任何代碼.這確實(shí)是一個(gè)很大的優(yōu)勢(shì),適合在您尋找快速性能改進(jìn)時(shí)控制質(zhì)量.因此,采用 Percona Server 的一個(gè)很好的理由是,利用 XtraDB 引擎來(lái)盡可能地減少代碼更改.MYSQL教程
此外,他們是 XtraDB 存儲(chǔ)引擎的原作者.Percona 將此代碼用作開(kāi)源代碼,因此您可以在其他產(chǎn)品中找到它,但引擎的最初創(chuàng)建者與編寫(xiě)此產(chǎn)品的是同一個(gè)人,所以您可以隨心所欲地使用此信息.MYSQL教程
下面是 Percona Server 的聲明,該聲明來(lái)自它們自己的網(wǎng)站:MYSQL教程
◆ 可擴(kuò)展性:處理更多事務(wù);在強(qiáng)大的服務(wù)器上進(jìn)行擴(kuò)展MYSQL教程
◆ 性能:使用了 XtraDB 的 Percona Server 速度非常快MYSQL教程
◆ 可靠性:避免損壞,提供崩潰平安 (crash-safe) 復(fù)制MYSQL教程
◆ 管理:在線備份,在線表格導(dǎo)入/導(dǎo)出MYSQL教程
◆ 診斷:高級(jí)分析和檢測(cè)MYSQL教程
◆ 靈活性:可變的頁(yè)面大小,改進(jìn)的緩沖池管理Percona 團(tuán)隊(duì)的最終聲明是 “Percona Server 是由 Oracle 發(fā)布的最接近官方 MySQL Enterprise 發(fā)行版的版本”,因此與其他更改了大量基本核心 MySQL 代碼的分支有所區(qū)別.Percona Server 的一個(gè)缺點(diǎn)是他們自己管理代碼,不接受外部開(kāi)發(fā)人員的貢獻(xiàn),以這種方式確保他們對(duì)產(chǎn)品中所包括功能的控制.MYSQL教程
MariaDBMYSQL教程
另一款提供了 XtraDB 存儲(chǔ)引擎的產(chǎn)品是 MariaDB 產(chǎn)品.它與 Percona 產(chǎn)品非常類(lèi)似,但是提供了更多底層代碼更改,試圖提供比標(biāo)準(zhǔn) MySQL 更多的性能改進(jìn).MariaDB 直接利用來(lái)自 Percona 的 XtraDB 引擎,由于它們使用的是完全相同的引擎,因此每次使用存儲(chǔ)引擎時(shí)沒(méi)有顯著的差別.MYSQL教程
此外,MariaDB 提供了 MySQL 提供的標(biāo)準(zhǔn)存儲(chǔ)引擎,即 MyISAM 和 InnoDB.因此,實(shí)際上,可以將它視為 MySQL 的擴(kuò)展集,它不僅提供 MySQL 提供的所有功能,還提供其他功能.MariaDB 還聲稱(chēng)自己是 MySQL 的替代,因此從 MySQL 切換到 MariaDB 時(shí),無(wú)需更改任何基本代碼即可安裝它.MYSQL教程
最后可能也是最重要的一點(diǎn)是,MariaDB 的主要?jiǎng)?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 修復(fù)的佼佼者,但公司不是以贏利為目的,而是由產(chǎn)品驅(qū)動(dòng)的,這可能會(huì)帶來(lái)問(wèn)題,因?yàn)闆](méi)有贏利的公司不一定能長(zhǎng)久維持下去.MYSQL教程
DrizzleMYSQL教程
本文介紹的最后一款產(chǎn)品是 Drizzle.與之前介紹的兩款產(chǎn)品不同,Drizzle 與 MySQL 有很大差別,甚至聲稱(chēng)它們不是 MySQL 的替代產(chǎn)品.他們期望對(duì) MySQL 進(jìn)行一些重大更改,想要提供一種出色的辦理方案來(lái)辦理高可用性問(wèn)題,即使這意味著要更改我們已經(jīng)習(xí)慣了的 MySQL 的各個(gè)方面.MYSQL教程
在公司的 FAQ 頁(yè)面,閱讀其中提供的問(wèn)題時(shí)就會(huì)發(fā)現(xiàn),Drizzle 進(jìn)一步地強(qiáng)調(diào)了其基本目標(biāo).他們不滿意 MySQL 4.1 版本之后對(duì) MySQL 代碼進(jìn)行的一些更改,聲稱(chēng)許多開(kāi)發(fā)人員不想花費(fèi)額外的錢(qián).他們承認(rèn)其產(chǎn)品與 SQL 關(guān)系數(shù)據(jù)庫(kù)甚至是不兼容的.這確實(shí)與 MySQL 有很大的不同.MYSQL教程
與習(xí)慣的 MySQL 有如此大的變化,我們?yōu)槭裁催€要考慮這款產(chǎn)品呢?準(zhǔn)確地講,原因與上面的是相同的,Drizzle 是 MySQL 引擎的一次重大修改,它清除了一些表現(xiàn)不佳和不必要的功能,將很多代碼重寫(xiě),對(duì)它們進(jìn)行了優(yōu)化,甚至將所用語(yǔ)言從 C 換成了 C++,以獲得所需的代碼.此外,Drizzle 并沒(méi)有就此結(jié)束修改,該產(chǎn)品在設(shè)計(jì)時(shí)就考慮到了其目標(biāo)市場(chǎng),即具有大量?jī)?nèi)容的多核服務(wù)器、運(yùn)行 Linux 的 64 位機(jī)器、云計(jì)算中使用的服務(wù)器、托管網(wǎng)站的服務(wù)器和每分鐘接收數(shù)以萬(wàn)計(jì)點(diǎn)擊率的服務(wù)器.這是一個(gè)相當(dāng)具體的市場(chǎng).它太具體了嗎?請(qǐng)記住這些類(lèi)型的公司目前 在其數(shù)據(jù)庫(kù)方面投入的資金,如果他們可以安裝 Drizzle 而不是 MySQL,那么他們的服務(wù)器成本將削減一半,可以節(jié)省很多錢(qián)!MYSQL教程
那么,是不是所有人都應(yīng)該使用 Drizzle 呢?等等,正如 Drizzle 反復(fù)指出的那樣,它與 MySQL 不兼容.因此,如果您現(xiàn)在使用的是 MySQL 平臺(tái),那么需要重寫(xiě)大量代碼,才能使 Drizzle 在您的環(huán)境中正常工作.MYSQL教程
盡管需要額外的工作才能讓它運(yùn)行,但它并不像 Percona 或 MariaDB 那樣快速且易于使用.我之所以介紹 Drizzle,是因?yàn)楸M管目前它可能不是您的選擇,但幾年之后,它很可能會(huì)成為一些人的選擇.因?yàn)楸疚牡哪繕?biāo)是提高您對(duì)未來(lái)使用的工具的認(rèn)識(shí),所以這是 向您介紹此產(chǎn)品的好機(jī)會(huì).許多領(lǐng)先的 DB 專(zhuān)家相信 Drizzle 將成為未來(lái) 5 年內(nèi)高可用性數(shù)據(jù)庫(kù)安裝的選擇.MYSQL教程
Drizzle 是完全開(kāi)源的產(chǎn)品,公開(kāi)接受開(kāi)發(fā)人員的貢獻(xiàn).它不像 MariaDB 那樣有支持其開(kāi)發(fā)的公司,也不像 Percona 那樣有大量外部開(kāi)發(fā)人員為其提供貢獻(xiàn).Drizzle 有很好的成長(zhǎng)空間并會(huì)提供一些新功能,但可能需要重寫(xiě)大部分 MySQL 代碼.MYSQL教程
對(duì)比圖MYSQL教程
下面是本文中介紹的三款 MySQL 分支產(chǎn)品的概述.MYSQL教程
?MYSQL教程
產(chǎn)品 | 價(jià)格 | 目標(biāo) | 主要功能 | 是否可投入生產(chǎn)? |
Percona Server | 免費(fèi) | 提供 XtraDB 存儲(chǔ)引擎的包裝器和其他分析工具 | XtraDB | 是 |
MariaDB | 免費(fèi) | 擴(kuò)展 MySQL 以包括 XtraDB 和其他性能改進(jìn) | XtraDB | 是 |
Drizzle | 免費(fèi) | 提供比 MySQL 更強(qiáng)大的可擴(kuò)展性和性能改進(jìn) | 高可用性 | 是 |
?MYSQL教程
結(jié)束語(yǔ)MYSQL教程
本文介紹了 MySQL 產(chǎn)品的三個(gè)新分支,旨在辦理它們使用 MySQL 時(shí)遇到的一些問(wèn)題.這三個(gè)分支都是免費(fèi)的開(kāi)源產(chǎn)品.在使用時(shí),您需要根據(jù) MySQL 已提供的功能來(lái)權(quán)衡它們的優(yōu)缺點(diǎn).我相信,對(duì)于閱讀本文的大多數(shù)人來(lái)說(shuō),MySQL 將仍然 是滿足數(shù)據(jù)庫(kù)需求的首選.我很懷疑閱讀本文的大多數(shù)讀者都是每小時(shí)擁有 1,000,000 點(diǎn)擊率的網(wǎng)站的所有者.我想再次強(qiáng)調(diào)的是,MySQL 仍然是一款非常出色的產(chǎn)品,是一個(gè)非常適合大多數(shù)使用情況的數(shù)據(jù)庫(kù).MYSQL教程
但是,對(duì)于那些認(rèn)為自己的網(wǎng)站需要比目前 MySQL 所能提供的更高的可用性、可擴(kuò)展性和性能的人來(lái)說(shuō),這 3 款產(chǎn)品中的任意一款產(chǎn)品都可能為您提供所需的辦理方案.更進(jìn)一步地說(shuō),如果您認(rèn)為您的網(wǎng)站將成為 能獲得很多利潤(rùn)的網(wǎng)站,那么可以考慮使用三款產(chǎn)品中的一款產(chǎn)品,在問(wèn)題出現(xiàn)之前辦理它們.MYSQL教程
最后,出現(xiàn)這些 MySQL 分支的根本原因是:一些創(chuàng)作者想更改 MySQL 的一些基本功能,因?yàn)樗麄儫o(wú)法等到 MySQL 自己完成這些工作.此外,Oracle 的現(xiàn)狀威脅到了 MySQL 的未來(lái),并且許多開(kāi)發(fā)人員(包含 MySQL 的原始開(kāi)發(fā)人員)都擔(dān)心該產(chǎn)品的未來(lái),他們還擔(dān)心 Oracle 是否會(huì)投入精力保持該產(chǎn)品的領(lǐng)先數(shù)據(jù)庫(kù)的地位.這些擔(dān)憂在我看來(lái)都是合理的,因此在我們邁向未來(lái)時(shí)要牢記這些產(chǎn)品.MYSQL教程
歡迎參與《Mysql學(xué)習(xí)超越MySQL 對(duì)流行數(shù)據(jù)庫(kù)進(jìn)行分支的知識(shí)小結(jié)》討論,分享您的想法,維易PHP學(xué)院為您提供專(zhuān)業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/13959.html