大數據基石 開源資料庫 MySQL 企業應用精要

文/圖:何曉龍

大數據時代,IT 人士張口閉口大數據,企業也很嚮往大數據的應用,似乎傳統的關係型資料庫已經走上了末路,成為老古董了。但其實關係型資料庫、尤其是開源關係型資料庫,才是企業數據的基石和基礎。Google、Facebook 等公司,第一步都是這些企業通過開源資料庫,低成本地保存了海量數據,進而處理和挖掘大數據中的財富。

提到企業級資料庫,大家可能首先想到的是 Oracle,DB2 和 SQL Server。對於什麼的,很多 CTO 對 MySQL、PostgreSQL 和 MongoDB 等開源資料庫嗤之以鼻,企業選擇資料庫固然要謹慎選型,控制風險,但對於企業更為重要的,是資料庫的成本和自由度。本文分享了企業選用最流行開源資料庫 MySQL 的一些經驗和最佳實踐,希望對想使用開源資料庫的企業有所幫助。

關係型資料庫落伍?

在大數據流行的今天,還在討論開源關係型資料庫,是不是有點落伍?其實大數據不過是傳統資料庫發展過程中的一個新階段,這個階段會有很多新技術產生,應用並融合,如各種開源新秀NoSQL 資料庫,大數據處理 Hadoop 等,但還遠遠沒有達到徹底顛覆關係型資料庫的地步,充其量是對關係型資料庫的一個補充而已。很多大數據平台就是建立在開源資料庫大規模應用的基礎之上。對於中小型企業而言,比較有參考價值的是資料庫排名網站 DBEngines Rink(圖1)。
https://db-engines.com/en/ranking

圖1:DBEngines Rank 在 2017 年 5 月的排名。
圖1:DBEngines Rank 在 2017 年 5 月的排名。

MySQL 的現狀

從排名可看到,MySQL 已經遠遠超過大家熟悉的 SQL Server 和 DB2,僅在商業資料庫老大 Oracle 之下,且分值差異只有 6 分,成為排名第二的關係型資料庫。在許多人眼中,MySQL 只是小型開源資料庫,只適合個人或小企業使用,互聯網上也有很多傳言,如 MySQL 當數據量大於 1000 萬時性能將急劇下降等,這些問題其實都不是問題,至於為什麼將在下文一一回答。

MySQL 衍生版本

MySQL 近些年命運起伏,先是其採用的儲存引擎 InnoDB 被 Oracle 收購,最後自身也被 Oracle 收購。雖然 2013 年 6 月鬧出移除 GPL 協議的事件,但後來證明這是一個 Bug,虛驚一場。對於企業而言,有兩個版本可供選擇,一個是商業收費版本,一個是免費的社區版本(圖2)。MySQL 被併入 Oracle 後,創始人離 Oracle 而去,從 MySQL 分出了一個分支,並建立了 MariaDB項目,目前位居 DBEngines Rank 第 20 位(圖3)。此外著名的 MySQL 諮詢公司 Peacona 也發佈了自己所維護的 MySQL 分支 Percona Server,目前位居 DBEngines Rank 第 95 位(圖4)。

圖2:MySQL Logo。
圖2:MySQL Logo。
圖3:MariaDB Logo。
圖3:MariaDB Logo。
圖4:Percona Server Logo。
圖4:Percona Server Logo。

如何應用 MySQL

MySQL 早期對企業所倚重在線事務處理 (OLTP) 的支援不盡人意,但由於 MySQL 是開源軟體,其發展和完善速度快,尤其在 5.5.5 之後,預設儲存引擎由 MyISAM 變成了 InnoDB,對 OLTP 支援趨於成熟穩定。個人認為追求速度、保持簡單,堅持開源,可插拔的數據儲存引擎設計,幾乎支援所有作業系統和開發語言,都是其成功的主原。企業要應用 MySQL,需要對著三大分支進行重新審視,多加研究,限於篇幅只從企業應用的角度,幫助大家熟悉這三大分支。

Oracle 官方版本

Oracle 收購 Sun 之後,就奠定了其對 MySQL 項目的主導地位,當即大幅提高 MySQL 商業版價格並宣佈MySQL項目,既不接受社區所貢獻的原程式碼,也不向社區貢獻原程式碼,完全依靠 Oracle 自身資料庫技術積累和優勢積極開發和完善此項目。Oracle 這麼做的目的可能是要保持 MySQL 本在技術上的領先,雖然不欣賞這種做法,但客觀來說,MySQL 官方版本依舊是目前技術實力最強、兼容性和可用性最好 MySQL 版本,這樣的陣勢和投入,是其他著名分支,如 Percona 或 MariaDB 所不能比擬的。儘管 Oracle 接手 MySQL 項目後發生了巨大的變化,但 MySQL 仍然是「開源軟體」,只是不完全開放、不遵循 GPL 協議。企業如果想使用 Oracle 官方的 MySQL 版本,可以選擇 MySQL 的社區版本,使用 MySQL 的社區版本目前還是免費的,如果需要技術支援等服務,可以選擇商業版本。

Percona Server for MySQL

Percona Server for MySQL 大家可能比較陌生,是由 Percona 開發維護的完全開源 MySQL 分支。其模式十分類似於原先的 MySQL AB,版本編號和 Oracle 官方版一致,其最大特點和官方版本高度兼容,並採用自家的開源儲存引擎 XtraDB 作為預設的儲存引擎。XtraDB 也是知名儲存引擎 InnoDB 的分支,不過 Percona 對齊進行了大量的完善和改進,這樣既保證了儲存引擎技術的獨立性,同時也保證了和 MySQL 的高度兼容。Percona Server 最吸引企業用戶的,是 Percona Server 自身的開放性,與 MySQL 高度的兼容性,以及 Percona 自身在 MySQL 資料庫領域的強大技術能力,及多年的技術積累。其用戶遍佈世界各地,如果企業自身既看重兼容性及性能,自身技術實力又比較有限,偶爾需要技術支援及相關服務但又不想上 Oracle的「賊船」,那 Percona Server 絕對是首選了,雖然其在 DBEngine Rank 排名靠後,但絲毫不影響其對企業的吸引力。

MariaDB 開源分支

MariaDB 和 Percona 類似,保持了以前 MySQL AB 開源精神的 MySQL 分支,由原來 MySQL 的創始人建立並主持開發,並依託此項目成了 MariaDB 基金會和社區,最大的優點就是積極創新,與 Percona 兼容性至上的理念不同,不是 Oracle 身後亦步亦趨的追隨者,而是走自己的創新之路,基於改進的 MyISAM 儲存引擎 Aria 及 Peacona 改進的 InnoDB 的 XtraDB 儲存引擎,目前發展及引進了很多新功能,如 Galera Cluster 群集和 Spider 水平分片儲存引擎等,版本已經飆到了10.2,但在兼容性略遜色於前兩種分支。

優先考慮的要素

如以兼容性及性能作為優先考慮,選擇的順序通常是 Oracle 官方社區版本、Percona Server、MariaDB。個人認為短期內 Oracle 徹底改變遊戲規則,將 MySQL 變成一個徹底的閉源和收費的商業軟體的可能性不大。許多大組織或大企業為了不受到商業資料庫公司的羈絆,規避可能的潛在的風險,且自身具有較強的技術實力,紛紛投入了 MariaDB,如維基百科,Google 等。此外,MariaDB 對於那些全新的創業公司及不需要考慮和先前 MySQL 資料庫兼容的企業而言,也是很好的選擇。介於之間的用戶可以考慮一下 Percona server,不需要 Percona 的服務及技術支援其就是一款免費的開源資料庫,不用支付任何費用,萬一需要技術支援也有 Pecona 做後盾,是一個可進可退的中間選項,順便給大家一個案例,中國的 Alibaba 改採用的就是 Percona Server 資料庫。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *