close

作者 | 王啟隆
責編 |唐小引
出品 | 《新程序員》編輯部
數據庫是所有現代信息系統的支柱,打孔卡系統曾管理了 20 世紀的社會運作,而在計算機誕生之後,電子數據庫系統存儲和分析企業數據,影響着無數企業的決策。如今,社交媒體和物聯網的泛濫已經迎來了需要收集和分析海量數據的時代,在這一時代背景下,開源技術逐漸發展,開源數據庫軟件的靈活性和成本效益現在已經徹底改變了數據庫管理系統。世界上第一個開源數據庫管理系統,正是 1995 年的 MySQL。從那時起,開源數據庫管理有了許多改進和附加功能,使其成為當今許多企業的首選。
MySQL 之父 Michael 「Monty」 Widenius(以下稱為 Monty)是一位擁有四十多年編程經驗的開源大師,除了 MySQL 的創始人,他還擔任 Monty Program Ab(現為 MariaDB 基金會 )的創始人。已入花甲之年的 Monty 依然奮戰於代碼第一線,沒有退休打算,對於編程有着許多獨到的理解,他曾參與《新程序員 004》的訪談,為我們帶來了不少感悟和心得。
Monty和中國結緣已久,與中國數據庫行業也頗有淵源。這一次,CSDN有幸再次對話這位開源數據庫領域的引航者,他不但為我們帶來了對於開源技術蓬勃發展下的新時代數據庫領域的嶄新觀點,還為我們講述了一段艱苦卓絕的歷史,描繪了 MySQL 原班人馬如何在那五年間重新建立 MariaDB 並東山再起,最終超越 MySQL,超越了曾經的自我。
註:本文節選自《新程序員·005:開源深度指南&新金融背後的科技力量》,目前已開啟預售,歡迎大家點擊訂閱!

01和中國結緣的MySQL之父

《新程序員》:這是您第幾次到中國?這兒有給您留下什麼深刻的印象嗎?
Monty:我應該來中國十次左右了吧,而這一次待得最久,差不多快一個月了——遺憾的是,明天我就要離開了。在中國最令人難忘的事情,應該是這次旅程中在酒店隔離了十天;不過,作為一名程序員,我的日常無非就是每天醒來,打開電腦進行工作。隔離並沒有對我產生多少影響,反而因此少了許多外界的干擾。
Monty 攝於杭州
《新程序員》:很多 MariaDB 的優質代碼都來自中國開發者。您有什麼關於中國開發者的趣事分享嗎?
Monty:我非常喜歡和中國開發者交談,我曾和不少參與 MySQL 的中國工程師進行過討論,並讓他們能更輕鬆地加入到 MariaDB 的合作中。不得不說,中國開發者提供的代碼都很有趣,他們做的不僅僅是修複數據庫中的一些 Bug,有的時候他們會為整個項目帶來巨大的影響,所以我很期待未來能看到更多來自中國的代碼。至於具體聊起某一件趣事?事實上,我更想在未來的發布中逐漸分享這些中國開發者做出的貢獻。
《新程序員》:中國開源的發展可謂是有目共睹。您認為中國未來會在數據庫領域扮演什麼樣的角色?
Monty:以前的數據庫大多在美國活躍,而如今大多數的數據庫都活躍在中國。我認為中國開發者需要精益求精,勇於去創造少量的優質產品,而不是大量複製平庸的產品,中國需要更多像阿里雲和騰訊雲這樣的產品。此外,找到一種團隊協作的方式也是當務之急,以 MariaDB 舉例,MariaDB 由一個團隊管理,其他人可以圍繞這個數據庫進行補充,並在這個過程中進行合作;像這樣的協作方式,對每個人都有意義,也值得學習。正確的協作方式能事半功倍。
《新程序員》:如今也有不少中國開發者想了解開源數據庫領域,您有哪些對這些入門者的建議嗎?
Monty:任何行業新人在使用數據庫的過程中,總會發現某個自己感興趣的數據庫,從而產生與其合作的想法。那麼,想要入門,你首先要站在客戶或者公司的角度,為這個數據庫找到一些新的需求,然後花一些時間學習相關的知識,並研究和改善這些功能。當你與產品本身、產品背後的工程師以及基金會合作得越多,對於數據庫的了解就會在這些實踐之中增長,你的個人觀點也會在開發者社區中留傳下來。因此,去參與開源項目吧,實踐將使你成名,實踐是入門的第一步。
開源的好處就是,所有參與者的個人價值體現在其擁有的技能,而不是學位、背景和身份。在這種情況下,開源開發者用代碼和程序來證明自我,而公司將通過代碼的質量來決定自己是否想要僱傭一個人。因為開源的存在,開發者不用再了解自己的合作對象是男是女,在意彼此長相如何、來自何方。這就是開源最棒的地方,開源讓開發者只關注感興趣的人,讓人能在自己所處於的領域大放光彩。記住一件事:一名優秀的程序員,是很難被解僱的。

02開源數據庫——從創建到運營
《新程序員》:回憶往昔,您在創建 MySQL 時就堅定地選擇了開源之路,是有什麼契機讓您在那個時代發現了開源的重要性嗎?
Monty:我在 1983 年左右就開始選擇開源了。當時我和瑞典的程序員朋友們在做一些開源項目,但後來團隊想讓項目能夠回饋到開源社區,卻沒什麼合適的機會。在創建 MySQL 之後,我意識到這個項目不但能夠回饋開源社區,還能讓我不再只是把開源項目當成一個業餘工作,我就是這麼意識到了開源的重要性。MySQL 是我可以傾注全部心血的第一個項目,我記得 MySQL 在發行兩個月後就開始盈利了。
《新程序員》:在那之後,您建立了 MariaDB 基金會。您認為維護和發展好一個開源社區最需要的是什麼?
Monty:首先,要有足夠的開發人員。在打算建立 MariaDB 之前,我就已經有一個陪伴我四年的 MySQL 團隊了,當時我想保持原始團隊完整,所以多虧了 Sun 公司付給我的錢,我才得以僱傭當年那些最關鍵的 MariaDB 開發人員。用人是很重要的一點。其次,有了人才之後,你還需要找到新的商業模式,實現開源。MariaDB 團隊當時花了五年把 MySQL 分叉為 MariaDB,避免了被閉源的風險,這也是很重要的。
《新程序員》:剛建立 MariaDB 和在那之前甲骨文收購 Sun 的時候,是您最困難的時期嗎?您覺得最困難的事情是什麼?
Monty:我認為那段時間的 MariaDB 稱不上困難,因為整個團隊在那時已經足夠成熟,團隊的成員都知道做什麼事情是正確的。但在剛建立 MariaDB 的頭五年,公司一直都沒有客戶,這確實帶來了不少經濟上的挑戰。幸運的是,當時的 MariaDB 有着足夠的資金維持下去,在熬過了那五年之後,新生的 MariaDB 開始重新和 MySQL 的老客戶們恢復合作,MariaDB 也逐漸得到了來自各界的支持;不過,MySQL 實在是太流行了,所以很難有數據庫能與它競爭,開發者社區後來也花了很長時間才得以接受 MariaDB,而如今,我們贏了。
《新程序員》:您認為做一款數據庫要確定什麼樣的方向比較好?是注重綜合性,還是尋找競爭對手的不足,專注填補市場的空缺?
Monty:建立自己的獨特性是很重要的,很多數據庫都會這麼做。在 MariaDB 中,開發團隊分離了執行接口和存儲,所以可以有不同的存儲引擎供選擇,而這可以讓團隊更好解決各種性能問題。MariaDB 可以解決很多問題,卻也並非萬能,所以對於極端的要求,就需要提供極端的解決方案。這就是為什麼 MariaDB 前幾年收購了一家名為 Clustrix 的公司,並重新命名了引擎以進行擴展。總而言之,揚長補短。
03代碼人生——從編程到管理
《新程序員》:從 MySQL 到 MariaDB,您有哪些經驗是共通和可以重複運用的?
Monty:其實那幾年行業的變化一直很少,這點十分有趣。MariaDB 一直在做的是添加新的功能,而非改動一些本質的東西。早期的 MariaDB 一直在研究怎麼和 MySQL 以及 Oracle 的數據庫兼容,開發團隊想讓以前的那些客戶們能將所有數據完好無損地轉移到 MariaDB,這個想法是在 MariaDB 建立初期就生成的。總而言之,不管是做 MySQL 還是做 MariaDB,我都是以客戶的需求為本的。傾聽客戶的意見並幫助他們,保持你現有客戶的滿意並嘗試獲取新的客戶,我認為這些道理是亘古不變的。
《新程序員》:那麼,對於開發者來說,可以怎麼像您一樣做出一款這麼風靡、用戶廣泛的開源產品?
Monty:萬事開頭難,一定要做好自己的第一個項目。一個初始的項目能打好根基,它需要在未來發揮作用,並且不能在襁褓中就遭受太多的競爭壓力;當然,我很幸運能有 MySQL 作為自己的起點。在確立項目後,自然就得建立好社區、拉攏更多人參與項目、獲取更多開發者的信任和支持,這就是開源。在大多數情況下,參與一個現有項目肯定是比創造一個新項目更容易的,所以最好先去研究現有的同類型項目都是怎麼樣的,看看現有的這些產品是否有所不足,然後再去想想是否要分叉項目,進一步又該怎麼做。研究市場,從而因地制宜。
《新程序員》:DB-engines 上現在統計了三百多款數據庫,而中國現在也有很多數據庫,您怎麼看待這種百家爭鳴的現象?
Monty:如果回顧數據庫的歷史會發現,大部分數據庫都只有短暫的生命期。數據庫的客戶往往是帶着需求去尋找目標的,他們很清楚自己的預期和需求,而數據庫公司可能究其一生都在研究用戶的需求。為了滿足不同的需求,更多的數據庫被創建,更多的項目被分叉,而一家公司通常也不需要那麼多數據庫,因為管理起來太麻煩了。總而言之,數據庫的生命期往往很短,但如果一個數據庫能足夠創新、有着獨特的概念,確實能更容易存活下來;在數據庫領域,概念太容易實現,成果太容易複製,所以產品一定要在創建之初迅速打響名聲。
《新程序員》:您作為程序員的夢想實現了嗎?您認為自己會在什麼時候退休?
Monty:我不打算退休,我至今仍在夜以繼日地寫代碼,在參與數據庫的優化和改進。我熱衷於解決問題,也很喜歡幫助他人。事實上,我覺得能一直居家辦公,其實已經實現了一大夢想;在家裡我就不用每天出行上班,並獲得了比他人更多的時間,這些時間可以用于思考、用於休息、用於推進新的潮流。我認為程序員不退休有個好處,那就是可以長期為項目作出貢獻;而且,繼續工作也可以保持頭腦清醒,這也是一件好事。

04經驗鑄成的開源策略
《新程序員》:您認為這幾年的數據庫領域具體都有着哪些變化?
Monty:為了追求更好的速度,這幾年各大分布式數據庫的查詢算法一直在進行改進。數據庫最難做好的部分是數據下沉,這牽扯到對磁盤和內存的選擇,其結果會影響數據庫的性能問題。數據庫領域的變化主要體現在這些增量的部分,而哪怕在二三十年以後,算法也會是數據庫考慮的主要問題,領域的變化也體現於此。總而言之,需求創造市場,只有增加更多的業務,才能促進數據庫變得更好。數據庫領域正在巨變,它其實是一個會讓人突然感到無所適從的領域。
《新程序員》:開源行業化應用和商業化前景是業界一直關心的問題,對此您怎麼看?
Monty:MySQL 和 MariaDB 都是商業開源項目,我所做的就是不去妨礙或做任何影響開源許可證政策事情。相比之下,我對那些開源的、基於公司的項目非常謹慎,並且對涉及學術的項目也保持謹慎。如今,大部分人已經知曉什麼是開源,並且在其中尋找財路,我有幸在其發展初期就分到了一杯羹;不幸的是,現在也有一些人試圖混淆開源的概念,在一些開源項目里開放大部分內容,然後將關鍵的部分閉源。這種行為本質上是對於公眾的愚弄,不利於發揮開源的潛力。開源不能保證項目賺錢,相反,開源會保證所有人能夠免費參與項目;不少人還沒弄清楚自己為什麼要選擇開源,這可能是我擔心的問題。
《新程序員》:關於 MariaDB,未來有什麼計劃嗎?
Monty:我從不相信自己能預測未來、高瞻遠矚。MariaDB 以客戶為本,所以需要跟隨客戶的需求動態變化,MariaDB 的團隊一直在努力確保這一點。客戶就是未來,所以我總是保持傾聽客戶的需求,並且滿足他們。事實上,本就沒有數據庫可以真正做好所有事情,一勞永逸;未來仍然會有源源不斷的數據庫誕生,它們的類型都將各不相同,因為未來的客戶總會有着不同的需求。
《新程序員》:最後,有哪些想對中國的開發者說的建議嗎?
Monty:在你熱愛的領域多花時間。如果你喜歡編程,那麼你就得開拓自己的領域,從你當前的項目開始尋找更多的可能性;不要將自己拘束在一項任務上,試着對自己的領域了解更多,試着參與到社區當中,和不同的人互動。總而言之,嘗試承擔更多的責任,嘗試做你最擅長的事情。MariaDB 的開發者很喜歡與客戶互動交流,因為只有和客戶直接接觸,你才能了解到客戶的需求,並且從客戶那裡獲取反饋;在這個過程中,你會獲取成就感和滿足感,並從自己的事業中感受到熱情。如果是在以前,溝通交流也許較為困難,甚至不起作用;而現在,開源使這一切成為了可能,所以,去參與開源項目吧。
*感謝杭州沃趣科技對本文的大力支持,以及對Monty 再次來華的邀請與組織。沃趣與 Monty在技術層有近 10 年的深度合作,目前已成為國內領先的數據庫雲企業,全面支撐 MariaDB 全生命周期的管理。
05專題介紹

《新程序員.005:開源深度指南&新金融背後的科技力量》特別策劃了「開源深度指南」和「新金融背後的科技力量」兩大專題。邀請當今開源世界的先鋒人物,Python之父Guido van Rossum,MySQL之父Michael "Monty" Widenius,Apache之父、OpenSSF開源安全基金會總經理Brian Behlendorf,自由軟件之父Richard Stallman,MongoDB CTO Mark Porter、凝思董事長宮敏、Linux內核守護者吳峰光等,更有國內外開源基金會、知名企業代表,從開源安全合規、企業內部開源、開源技術創新、開源行業落地等多方面,為開源背後的開發者、企業、開源組織及開源社區提供更清晰的開源生態建設與升級版開源發展全景式圖鑑。
而在金融專題中,來自中國工商銀行、郵政儲蓄、中信銀行、廣發銀行、中國人民銀行、平安科技、微眾銀行、螞蟻集團等十數家傳統金融機構和頭部金融科技公司的技術專家為我們帶來了關於各類新一代顛覆性技術的深入討論和案例分析。深入解答開發者應該如何更好融入金融產業,以及金融科技的人才培養之道,真正做好金融科技的技術創新和數字化轉型。
CSDN全新發布

CSDN為開發者量身定製的開發軟件助手
猿如意客戶端全新上線

瀏覽器打開下方鏈接,立即下載猿如意PC客戶端
http://devbit.csdn.net/

留言說說:MySQL被超越了嗎?你在用什麼數據庫的軟件

好啦,今天的內容分享就到這,感覺不錯的同學記得分享點讚哦!

PS:工作日早8:30,CSDN 企業招聘持續分享程序員學習、面試相關乾貨,不見不散!

點分享
點收藏
點點讚
點在看

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()