一文告訴你全世界頭部的開發(fā)者都在使用什么數(shù)據(jù)庫(kù)
作為一名IT行業(yè)從業(yè)者,其實(shí)從去年已經(jīng)隱隱約約感覺到數(shù)據(jù)庫(kù)的有變化,只是沒有想到變得這么快。今年的一些事情實(shí)實(shí)在在地給了某些數(shù)據(jù)庫(kù)重?fù)簦绻郧叭ツ硵?shù)據(jù)庫(kù)還是喊喊,然后該用還用,今年從傳統(tǒng)領(lǐng)域刮起的去某數(shù)據(jù)庫(kù)的風(fēng),已經(jīng)開始了,并且后面的烏云密布也看得見。
最近看一篇國(guó)外的開源產(chǎn)品提供廠商的一篇文字,主要是在詢問了他的幾百位客戶后得出了下圖中的2019年數(shù)據(jù)庫(kù)的使用趨勢(shì)。

從圖中可以看出,MySQL以38.9%的使用率高居榜首,其次是MongoDB(24.6%)、PostgreSQL(17.4%)、Redis(8.4%)和Cassandra(3.0%)。在這些數(shù)據(jù)庫(kù)中,Oracle僅占1.8%,而CouchDB、Berkeley DB、Microsoft SQL Server、Redshift、Firebase、Elasticsearch 整合后的影響力和用戶的總和僅為2.4%。
但該調(diào)查報(bào)告卻與DB-engine排名趨勢(shì)流行度報(bào)告大相徑庭,Oracle數(shù)據(jù)庫(kù)在此報(bào)告中排名第一,不過(guò)筆者認(rèn)為,任何文字都是可能是偏頗或有傾向性的,每個(gè)人看完后都可能有自己的想法,或認(rèn)同或反對(duì),就如同最近最熱的一句話“人心中的成見是一座大山,任你怎么努力休想搬動(dòng)”。


MySQL 仍然是排名第一的免費(fèi)開源數(shù)據(jù)庫(kù),占開源數(shù)據(jù)庫(kù)使用量的 30% 以上。這并不奇怪,根據(jù) DB-Engines,MySQL 多年來(lái)一直保持在這個(gè)位置。根據(jù)筆者多年來(lái)的從業(yè)經(jīng)驗(yàn),我認(rèn)為MySQL數(shù)據(jù)庫(kù)確實(shí)配得上這個(gè)排名,原因如下。
1.完全開源
MySQL最強(qiáng)大的優(yōu)勢(shì)之一在于他的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS,Database Management System)是一個(gè)開源系統(tǒng)。當(dāng)然,開源并不意味著免費(fèi),它還是有許多付費(fèi)功能。但是開源的特點(diǎn)給予用戶可以根據(jù)自己需要修改DBMS的自由。 MySQL采用了GPL(General Public License),這意味著授權(quán)給用戶可以閱讀,修改和優(yōu)化源代碼,這樣即使是免費(fèi)版的MySQL的功能也足夠強(qiáng)大。這也是MySQL如此受歡迎的原因之 一。
2.快速更新和用戶友好
在其他數(shù)據(jù)庫(kù)(例如Orcale、MSSQL Sever)更新緩慢的時(shí)候,MySQL很少讓他的用戶等待。每當(dāng)新的版本出來(lái)之后,MySQL都會(huì)成為大多數(shù)服務(wù)器的主要數(shù)據(jù)庫(kù)。Linux web服務(wù)器已經(jīng)成為現(xiàn)在web服務(wù)器的主流,MySQL在linux服務(wù)器上面也得到了廣泛的應(yīng)用。
3.WebsitePanel,phpMyAdmin 和MySQl的黃金組合
對(duì)于初學(xué)者來(lái)說(shuō),通過(guò)虛擬主機(jī)商提供的websitepanel控制面板學(xué)習(xí)MySQL是一個(gè)很不錯(cuò)的方法。用戶不僅可以觀看很多視頻教程來(lái)學(xué)習(xí)使用 MySQL,還可以使用PhpMyAdmin通過(guò)web方式管理數(shù)據(jù)庫(kù)。
PostgreSQL 以 13.4% 的開源數(shù)據(jù)庫(kù)用戶比例位居第二,緊隨其后的是 MongoDB,占 12.2%,位列第三。
如果你經(jīng)常光顧某些網(wǎng)站,或者大型公眾號(hào),你應(yīng)該知道今年最熱的事情有兩個(gè),postgresql和大數(shù)據(jù),今年算是postgresql在中國(guó)的開始發(fā)展的元年,知道的人和使用的人也越來(lái)越多。

根據(jù)DB-engine數(shù)據(jù)庫(kù)流行榜發(fā)布的數(shù)據(jù)顯示,Oracle與MySQL與去年相比都產(chǎn)生了一定的退步,唯獨(dú)postgresql呈現(xiàn)上升趨勢(shì),比去年同月份提高了85.18%,這進(jìn)一步說(shuō)明數(shù)據(jù)庫(kù)領(lǐng)域正在涌現(xiàn)出更多的新生力量,與之前將所有雞蛋都放在一個(gè)籃子里的傳統(tǒng)策略相比,IT行業(yè)的工作者正在使用多種數(shù)據(jù)庫(kù)來(lái)支持他們的產(chǎn)品,多數(shù)據(jù)庫(kù)類型的使用在過(guò)去10年出現(xiàn)了爆炸式增長(zhǎng)。
在我們的調(diào)查中,幾乎有一半實(shí)際上使用不止一種類型的數(shù)據(jù)庫(kù)來(lái)支持他們的應(yīng)用程序,而不是單個(gè)數(shù)據(jù)庫(kù),使用多個(gè)數(shù)據(jù)庫(kù)的比例為44.3%,使用一個(gè)數(shù)據(jù)庫(kù)的比例為55.7%,他們喜歡的數(shù)據(jù)庫(kù)組合如下。

現(xiàn)在,讓我們仔細(xì)研究一下在單個(gè)應(yīng)用程序中最常用的數(shù)據(jù)庫(kù)類型。
在下面的圖表中,左邊列中的數(shù)據(jù)庫(kù)表示該數(shù)據(jù)庫(kù)類型的樣本量,上面列出的數(shù)據(jù)庫(kù)表示與該數(shù)據(jù)庫(kù)類型組合的百分比。藍(lán)色顯示的單元格表示 100% 的部署組合,而黃色表示 0% 的組合。
因此,如下面的數(shù)據(jù)庫(kù)組合熱圖所示,MySQL 是我們與其他數(shù)據(jù)庫(kù)類型結(jié)合最頻繁的數(shù)據(jù)庫(kù)。但是,雖然其他數(shù)據(jù)庫(kù)類型經(jīng)常與 MySQL 一起使用,但這并不意味著 MySQL 部署總是使用另一種數(shù)據(jù)庫(kù)類型。這可以在 MySQL 的第一行看到,其顏色為淺藍(lán)到黃色,相比之下,MySQL 第一列的顏色要和表示 100% 組合的藍(lán)色的匹配度高許多。
用黑色邊框突出顯示的單元格表示僅利用這一種數(shù)據(jù)庫(kù)類型的部署,其中僅使用 MySQL 的單元格占部署總數(shù)的 23%。

其實(shí),這些數(shù)據(jù)也比較精準(zhǔn)的反映了國(guó)內(nèi)的情況,從2005年開始,IT企業(yè)在數(shù)據(jù)庫(kù)的發(fā)展方向上就已經(jīng)有了一些變化。
2007年開始阿里巴巴的IT開銷史無(wú)前例,一度成為IBM、Oracle中國(guó)的標(biāo)桿客戶,淘寶、阿里巴巴B2B和支付寶等公司,98%以上的軟件系統(tǒng)和業(yè)務(wù)都是采用Oracle數(shù)據(jù)庫(kù)提供數(shù)據(jù)服務(wù)。2009年淘寶更是上了全球排名前幾位的大RAC集群,據(jù)說(shuō)當(dāng)年有16個(gè)節(jié)點(diǎn)。每天早上CPU還是跑到98%。換句話來(lái)說(shuō),三年幾千萬(wàn)買Oracle產(chǎn)品+服務(wù)也沒辦法支撐阿里成長(zhǎng)的速度,只能開啟自研模式,于是就有了Oracle全面轉(zhuǎn)向MySQL的進(jìn)程。
拆分Oracle數(shù)據(jù)庫(kù)+Hadoop其實(shí)也可以撐一撐,但是這樣的話,還要向Oracle購(gòu)買更多的License(再花幾千萬(wàn),不是沒錢,是即便花錢也不能徹底解決問題)。因此,阿里巴巴B2B將中文站壓力和數(shù)據(jù)容量最大的Offer數(shù)據(jù)庫(kù),成功從Oracle數(shù)據(jù)庫(kù)+IBM小型機(jī)+EMC2存儲(chǔ)設(shè)備,遷移到MySQL數(shù)據(jù)庫(kù)+PC Server的模式,所以淘寶2013年下線了最后一個(gè)Oracle,2014年支付寶交易替換了Oracle,2016年支付寶總賬全面用OceanBase替換Oracle。
發(fā)展趨勢(shì):
1.“去Oracle化”。一方面是Oracle采用scale up而不是scale out的方案;另外一個(gè)重要原因是價(jià)格。網(wǎng)易和阿里巴巴都曾經(jīng)以O(shè)racle作為主要的數(shù)據(jù)庫(kù)解決方案,投資幾千萬(wàn)來(lái)采購(gòu)License。阿里巴巴曾經(jīng)還自稱是互聯(lián)網(wǎng)企業(yè)中Oracle的最大用戶。Oracle最大的優(yōu)勢(shì)是運(yùn)維簡(jiǎn)單,應(yīng)用開發(fā)方便,但是和昂貴的價(jià)格相比,這一點(diǎn)不再具備吸引力。
2.優(yōu)化MySQL數(shù)據(jù)庫(kù)。這些互聯(lián)網(wǎng)企業(yè)采用了大量的MySQL服務(wù)器集群,最大集群在150臺(tái)服務(wù)器左右。承載了包括博客、電子商務(wù)等應(yīng)用。采用的優(yōu)化包括:
- 傳統(tǒng)的SQL優(yōu)化,如減少某個(gè)查詢涉及到的列,控制索引數(shù)量等
- 閃存介質(zhì)(SSD或者Flash卡)。這是幾乎所有互聯(lián)網(wǎng)企業(yè)都采用的方法,由于測(cè)試場(chǎng)景各不相同,因此沒法比較誰(shuí)家的方案更好。大體上分成直接使用閃存介質(zhì)作為存儲(chǔ)系統(tǒng);優(yōu)化閃存介質(zhì)訪問方式進(jìn)一步優(yōu)化
- 設(shè)計(jì)MySQL存儲(chǔ)引擎
3.NoSQL數(shù)據(jù)庫(kù)。NoSQL對(duì)應(yīng)用養(yǎng)發(fā)提出了較高的要求,在項(xiàng)目中不是那么容易推廣,一致性要求被放松,但是“原子性”支持需要被保證。一般是為了滿足高并發(fā)需要才引入。如盛大采用MongoDB,淘寶自研了Tair數(shù)據(jù)庫(kù)(已經(jīng)開源)
4.分布式數(shù)據(jù)庫(kù)。眾所周知,使用不同的SQL優(yōu)化與執(zhí)行方式,數(shù)據(jù)庫(kù)的訪問性能可能會(huì)存在上千上萬(wàn)倍的差距。計(jì)算存儲(chǔ)分離的核心思想便是在數(shù)據(jù)存儲(chǔ)層面進(jìn)行一體化存儲(chǔ),而計(jì)算層面則有效利用每種執(zhí)行引擎的特點(diǎn),針對(duì)不同的業(yè)務(wù)場(chǎng)景進(jìn)行選擇和優(yōu)化。

所以,如果具有超強(qiáng)的研發(fā)團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì),在云時(shí)代還是有機(jī)會(huì)替代Oracle的,我們也看到伴隨著人口紅利,在軟件開發(fā)領(lǐng)域的我國(guó)實(shí)力已今非昔比,大部分企業(yè)的 “去IOE”的進(jìn)程更多的是自發(fā)的因系統(tǒng)架構(gòu)優(yōu)化而進(jìn)行,同時(shí)各種數(shù)據(jù)庫(kù)技術(shù)與產(chǎn)品也蓬勃發(fā)展,所以,在技術(shù)上看Oracle并非不能取代,更多的是出于綜合成本(改造與建設(shè)成本、分享)的考量,需要的是時(shí)間和意志。
一千個(gè)人眼里就有一千個(gè)哈姆雷特,在每個(gè)開發(fā)者和企業(yè)的眼中,只有適合自己的數(shù)據(jù)庫(kù)才是最好的。