對話 MySQL 之父 Monty:超越 MySQL 很難,但我做到了!

對話 MySQL 之父 Monty:超越 MySQL 很難,但我做到了!

作者 | 王啟隆 責編 | 唐小引

出品 | 《新程式設計師》編輯部

資料庫是所有現代資訊系統的支柱,打孔卡系統曾管理了 20 世紀的社會運作,而在計算機誕生之後,電子資料庫系統儲存和分析企業資料,影響著無數企業的決策。如今,社交媒體和物聯網的泛濫已經迎來了需要收集和分析海量資料的時代,在這一時代背景下,開源技術逐漸發展,開源資料庫軟體的靈活性和成本效益現在已經徹底改變了資料庫管理系統。世界上第一個開源資料庫管理系統,正是 1995 年的 MySQL。從那時起,開源資料庫管理有了許多改進和附加功能,使其成為當今許多企業的首選。MySQL 之父 Michael “Monty” Widenius(以下稱為 Monty)是一位擁有四十多年程式設計經驗的開源大師,除了 MySQL 的創始人,他還擔任 Monty Program Ab(現為 MariaDB 基金會 )的創始人。已入花甲之年的 Monty 依然奮戰於程式碼第一線,沒有退休打算,對於程式設計有著許多獨到的理解,

Monty和中國結緣已久,與中國資料庫行業也頗有淵源。這一次,CSDN 有幸再次對話這位開源資料庫領域的引航者,他不但為我們帶來了對於開源技術蓬勃發展下的新時代資料庫領域的嶄新觀點,還為我們講述了一段艱苦卓絕的歷史,描繪了 MySQL 原班人馬如何在那五年間重新建立 MariaDB 並東山再起,最終超越 MySQL,超越了曾經的自我。

和中國結緣的 MySQL 之父《新程式設計師》:這是您第幾次到中國?這兒有給您留下什麼深刻的印象嗎?Monty:我應該來中國十次左右了吧,而這一次待得最久,差不多快一個月了——遺憾的是,明天我就要離開了。在中國最令人難忘的事情,應該是這次旅程中在酒店隔離了十天;不過,作為一名程式設計師,我的日常無非就是每天醒來,開啟電腦進行工作。隔離並沒有對我產生多少影響,反而因此少了許多外界的干擾。

對話 MySQL 之父 Monty:超越 MySQL 很難,但我做到了!

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

《新程式設計師》:回憶往昔,您在建立 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 的公司,並重新命名了引擎以進行擴充套件。總而言之,揚長補短。

程式碼人生——從程式設計到管理

《新程式設計師》:從 MySQL 到 MariaDB,您有哪些經驗是共通和可以重複運用的?Monty:其實那幾年行業的變化一直很少,這點十分有趣。MariaDB 一直在做的是新增新的功能,而非改動一些本質的東西。早期的 MariaDB 一直在研究怎麼和 MySQL 以及 Oracle 的資料庫相容,開發團隊想讓以前的那些客戶們能將所有資料完好無損地轉移到 MariaDB,這個想法是在 MariaDB 建立初期就生成的。總而言之,不管是做 MySQL 還是做 MariaDB,我都是以客戶的需求為本的。傾聽客戶的意見並幫助他們,保持你現有客戶的滿意並嘗試獲取新的客戶,我認為這些道理是亙古不變的。《新程式設計師》:那麼,對於開發者來說,可以怎麼像您一樣做出一款這麼風靡、使用者廣泛的開源產品?Monty:萬事開頭難,一定要做好自己的第一個專案。一個初始的專案能打好根基,它需要在未來發揮作用,並且不能在襁褓中就遭受太多的競爭壓力;當然,我很幸運能有 MySQL 作為自己的起點。在確立專案後,自然就得建立好社群、拉攏更多人參與專案、獲取更多開發者的信任和支援,這就是開源。在大多數情況下,參與一個現有專案肯定是比創造一個新專案更容易的,所以最好先去研究現有的同類型專案都是怎麼樣的,看看現有的這些產品是否有所不足,然後再去想想是否要分叉專案,進一步又該怎麼做。研究市場,從而因地制宜。《新程式設計師》:DB-engines 上現在統計了三百多款資料庫,而中國現在也有很多資料庫,您怎麼看待這種百家爭鳴的現象?Monty:如果回顧資料庫的歷史會發現,大部分資料庫都只有短暫的生命期。資料庫的客戶往往是帶著需求去尋找目標的,他們很清楚自己的預期和需求,而資料庫公司可能究其一生都在研究使用者的需求。為了滿足不同的需求,更多的資料庫被建立,更多的專案被分叉,而一家公司通常也不需要那麼多資料庫,因為管理起來太麻煩了。總而言之,資料庫的生命期往往很短,但如果一個數據庫能足夠創新、有著獨特的概念,確實能更容易存活下來;在資料庫領域,概念太容易實現,成果太容易複製,所以產品一定要在建立之初迅速打響名聲。《新程式設計師》:您作為程式設計師的夢想實現了嗎?您認為自己會在什麼時候退休?Monty:我不打算退休,我至今仍在夜以繼日地寫程式碼,在參與資料庫的最佳化和改進。我熱衷於解決問題,也很喜歡幫助他人。事實上,我覺得能一直居家辦公,其實已經實現了一大夢想;在家裡我就不用每天出行上班,並獲得了比他人更多的時間,這些時間可以用於思考、用於休息、用於推進新的潮流。我認為程式設計師不退休有個好處,那就是可以長期為專案作出貢獻;而且,繼續工作也可以保持頭腦清醒,這也是一件好事。經驗鑄成的開源策略

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

——專題介紹——

《新程式設計師。005:開源深度指南&新金融背後的科技力量》特別策劃了“開源深度指南”和“新金融背後的科技力量”兩大專題。邀請當今開源世界的先鋒人物,Python之父Guido van Rossum,MySQL之父Michael “Monty” Widenius,Apache之父、OpenSSF開源安全基金會總經理Brian Behlendorf,自由軟體之父Richard Stallman,MongoDB CTO Mark Porter、凝思董事長宮敏、Linux核心守護者吳峰光等,更有國內外開源基金會、知名企業代表,從開源安全合規、企業內部開源、開源技術創新、開源行業落地等多方面,為開源背後的開發者、企業、開源組織及開源社群提供更清晰的開源生態建設與升級版開源發展全景式圖鑑。

而在金融專題中,來自中國工商銀行、郵政儲蓄、中信銀行、廣發銀行、中國人民銀行、平安科技、微眾銀行、螞蟻集團等十數家傳統金融機構和頭部金融科技公司的技術專家為我們帶來了關於各類新一代顛覆性技術的深入討論和案例分析。深入解答開發者應該如何更好融入金融產業,以及金融科技的人才培養之道,真正做好金融科技的技術創新和數字化轉型。

頂部