現在的位置: 首頁 > 資料庫 > 正文

開發者都在用什麼資料庫?為什麼大家都喜歡用MySQL資料庫

2020年02月24日 資料庫 ⁄ 共 3253字 ⁄ 字型大小 評論關閉

  其實從去年已經隱隱約約感覺到資料庫的有變化,只是沒有想到變得這麼快。今年的一些事情實實在在地給了某些資料庫重擊,如果以前去某資料庫還是喊喊,然後該用還用,今年從傳統領域颳起的去某資料庫的風,已經開始了,並且後面的烏雲密布也看得見。

  從互聯網數據中可以看出,MySQL以38.9%的使用率高居榜首,其次是MongoDB(24.6%)、PostgreSQL(17.4%)、Redis(8.4%)和Cassandra(3.0%)。在這些資料庫中,Oracle僅佔1.8%,而CouchDB、Berkeley DB、Microsoft SQL Server、Redshift、Firebase、Elasticsearch 整合後的影響力和用戶的總和僅為2.4%。

  但該調查報告卻與DB-engine排名趨勢流行度報告大相徑庭,Oracle資料庫在此報告中排名第一,不過筆者認為,任何文字都是可能是偏頗或有傾向性的,每個人看完後都可能有自己的想法,或認同或反對,就如同最近最熱的一句話「人心中的成見是一座大山,任你怎麼努力休想搬動」。

  MySQL 仍然是排名第一的免費開源資料庫,占開源資料庫使用量的 30% 以上。這並不奇怪,根據 DB-Engines,MySQL 多年來一直保持在這個位置。根據筆者多年來的從業經驗,我認為MySQL資料庫確實配得上這個排名,原因如下。

  1.完全開源

  MySQL最強大的優勢之一在於他的資料庫管理系統(DBMS,Database Management System)是一個開源系統。當然,開源並不意味著免費,它還是有許多付費功能。但是開源的特點給予用戶可以根據自己需要修改DBMS的自由。 MySQL採用了GPL(General Public License),這意味著授權給用戶可以閱讀,修改和優化源代碼,這樣即使是免費版的MySQL的功能也足夠強大。這也是MySQL如此受歡迎的原因之 一。

  2.快速更新和用戶友好

  在其他資料庫(例如Orcale、MSSQL Sever)更新緩慢的時候,MySQL很少讓他的用戶等待。每當新的版本出來之後,MySQL都會成為大多數伺服器的主要資料庫。Linux web伺服器已經成為現在web伺服器的主流,MySQL在linux伺服器上面也得到了廣泛的應用。

  3.WebsitePanel,phpMyAdmin 和MySQl的黃金組合

  對於初學者來說,通過虛擬主機商提供的websitepanel控制面板學習MySQL是一個很不錯的方法。用戶不僅可以觀看很多視頻教程來學習使用 MySQL,還可以使用PhpMyAdmin通過web方式管理資料庫。

  PostgreSQL 以 13.4% 的開源資料庫用戶比例位居第二,緊隨其後的是 MongoDB,占 12.2%,位列第三。

  如果你經常光顧某些網站,或者大型公眾號,你應該知道今年最熱的事情有兩個,postgresql和大數據,今年算是postgresql在中國的開始發展的元年,知道的人和使用的人也越來越多。

  根據DB-engine資料庫流行榜發布的數據顯示,Oracle與MySQL與去年相比都產生了一定的退步,唯獨postgresql呈現上升趨勢,比去年同月份提高了85.18%,這進一步說明資料庫領域正在湧現出更多的新生力量,與之前將所有雞蛋都放在一個籃子里的傳統策略相比,IT行業的工作者正在使用多種資料庫來支持他們的產品,多資料庫類型的使用在過去10年出現了爆炸式增長。

  在我們的調查中,幾乎有一半實際上使用不止一種類型的資料庫來支持他們的應用程序,而不是單個資料庫,使用多個資料庫的比例為44.3%,使用一個資料庫的比例為55.7%,他們喜歡的資料庫組合如下。

  現在,讓我們仔細研究一下在單個應用程序中最常用的資料庫類型。

  左邊列中的資料庫表示該資料庫類型的樣本量,上面列出的資料庫表示與該資料庫類型組合的百分比。藍色顯示的單元格表示 100% 的部署組合,而黃色表示 0% 的組合。

  因此,如下面的資料庫組合熱圖所示,MySQL 是我們與其他資料庫類型結合最頻繁的資料庫。但是,雖然其他資料庫類型經常與 MySQL 一起使用,但這並不意味著 MySQL 部署總是使用另一種資料庫類型。這可以在 MySQL 的第一行看到,其顏色為淺藍到黃色,相比之下,MySQL 第一列的顏色要和表示 100% 組合的藍色的匹配度高許多。

  用黑色邊框突出顯示的單元格表示僅利用這一種資料庫類型的部署,其中僅使用 MySQL 的單元格占部署總數的 23%。

  其實,這些數據也比較精準的反映了國內的情況,從2005年開始,IT企業在資料庫的發展方向上就已經有了一些變化。

  2007年開始阿里巴巴的IT開銷史無前例,一度成為IBM、Oracle中國的標杆客戶,淘寶、阿里巴巴B2B和支付寶等公司,98%以上的軟體系統和業務都是採用Oracle資料庫提供數據服務。2009年淘寶更是上了全球排名前幾位的大RAC集群,據說當年有16個節點。每天早上CPU還是跑到98%。換句話來說,三年幾千萬買Oracle產品+服務也沒辦法支撐阿里成長的速度,只能開啟自研模式,於是就有了Oracle全面轉向MySQL的進程。

  拆分Oracle資料庫+Hadoop其實也可以撐一撐,但是這樣的話,還要向Oracle購買更多的License(再花幾千萬,不是沒錢,是即便花錢也不能徹底解決問題)。因此,阿里巴巴B2B將中文站壓力和數據容量最大的Offer資料庫,成功從Oracle資料庫+IBM小型機+EMC2存儲設備,遷移到MySQL資料庫+PC Server的模式,所以淘寶2013年下線了最後一個Oracle,2014年支付寶交易替換了Oracle,2016年支付寶總賬全面用OceanBase替換Oracle。

  發展趨勢:

  1.「去Oracle化」。一方面是Oracle採用scale up而不是scale out的方案;另外一個重要原因是價格。網易和阿里巴巴都曾經以Oracle作為主要的資料庫解決方案,投資幾千萬來採購License。阿里巴巴曾經還自稱是互聯網企業中Oracle的最大用戶。Oracle最大的優勢是運維簡單,應用開發方便,但是和昂貴的價格相比,這一點不再具備吸引力。

  2.優化MySQL資料庫。這些互聯網企業採用了大量的MySQL伺服器集群,最大集群在150台伺服器左右。承載了包括博客、電子商務等應用。採用的優化包括:

  傳統的SQL優化,如減少某個查詢涉及到的列,控制索引數量等。

  快閃記憶體介質(SSD或者Flash卡)。這是幾乎所有互聯網企業都採用的方法,由於測試場景各不相同,因此沒法比較誰家的方案更好。大體上分成直接使用快閃記憶體介質作為存儲系統;優化快閃記憶體介質訪問方式進一步優化。

  設計MySQL存儲引擎

  3.NoSQL資料庫。NoSQL對應用養發提出了較高的要求,在項目中不是那麼容易推廣,一致性要求被放鬆,但是「原子性」支持需要被保證。一般是為了滿足高並發需要才引入。如盛大採用MongoDB,淘寶自研了Tair資料庫(已經開源)。

  4.分散式資料庫。眾所周知,使用不同的SQL優化與執行方式,資料庫的訪問性能可能會存在上千上萬倍的差距。計算存儲分離的核心思想便是在數據存儲層面進行一體化存儲,而計算層面則有效利用每種執行引擎的特點,針對不同的業務場景進行選擇和優化。

  所以,如果具有超強的研發團隊和運維團隊,在雲時代還是有機會替代Oracle的,我們也看到伴隨著人口紅利,在軟體開發領域的我國實力已今非昔比,大部分企業的 「去IOE」的進程更多的是自發的因系統架構優化而進行,同時各種資料庫技術與產品也蓬勃發展,所以,在技術上看Oracle並非不能取代,更多的是出於綜合成本(改造與建設成本、分享)的考量,需要的是時間和意志。

  一千個人眼裡就有一千個哈姆雷特,在每個開發者和企業的眼中,只有適合自己的資料庫才是最好的。

抱歉!評論已關閉.