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

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


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

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

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

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

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