【CSDN 編者按】MySQL之父Monty有著四十多年的編程經(jīng)驗,從兒時的興趣到長大后的深耕,他在編程領(lǐng)域不斷鉆研,最終成為編程大師?!缎鲁绦騿T004》帶你走進Monty的程序人生,談?wù)勊诰幊谭矫娴淖钚赂形蛞约皩ξ磥淼念A(yù)測。
如今,我們正處于數(shù)據(jù)爆炸的時代,軟件崛起的背后是數(shù)據(jù)的支持。而隨著開源技術(shù)的發(fā)展,越來越多的數(shù)據(jù)庫選擇創(chuàng)建開源社區(qū),讓更多開發(fā)者參與到數(shù)據(jù)庫的建設(shè)中來。
在開源數(shù)據(jù)庫領(lǐng)域中,Michael "Monty" Widenius(通常稱為Monty)絕對是不得不提的代表人物。有著四十多年編程經(jīng)驗的Monty是MySQL和MariaDB的作者,也是開源軟件運動的著名倡導(dǎo)者,即便是現(xiàn)在他也在堅持寫代碼。作為影響了幾代技術(shù)人的數(shù)據(jù)庫,MySQL所取得的成就無需多言。而最初作為MySQL分支立項的MariaDB也在迅速成長,同樣在數(shù)據(jù)庫中贏得了一席之地。
Monty近照(圖源自Wiki)
作為在技術(shù)屆游歷半生的資深“程序員”,Monty對編程的理解也有許多獨到之處,他認為只有學(xué)習(xí)編程20年以上,才能像讀懂音樂一樣,看出編程之美。除此之外,他還表示:“寫代碼時要盡量將代碼一次性寫成,而不是寫完后再沒完沒了的修改。”只有做到這一點,才能稱得上是一名優(yōu)秀的程序員。而這也是他長久以來所遵循的“編程法則”。
近期,《新程序員》有機會邀請Monty分享他的程序人生,談?wù)勊麑τ诩夹g(shù)的感悟,以及對于數(shù)據(jù)庫發(fā)展的看法與心得。
“我在編程方面有一定的天賦”
1962年,Monty出生在芬蘭首都赫爾辛基,小時候的他便對計算機有著濃厚的興趣。1978年,年僅16歲的Monty用他一整個暑假打工攢的錢買了人生中的第一臺電腦,并且用BASIC語言寫下了第一行代碼REM,從此以后他便與編程結(jié)下了不解之緣。三年后,Monty被北歐著名高校赫爾辛基理工大學(xué)錄取,但由于自己的學(xué)習(xí)理念與學(xué)校不同,他感到在學(xué)校學(xué)不到什么東西,因此沒過多久就輟學(xué)了。1981年。離開了校園的Monty開始在荷蘭的一家叫做Tapio Laakso Oy的公司當程序員。在近十年之后,34歲的Monty開發(fā)出了歷史上最流行的開源數(shù)據(jù)庫之一——MySQL。
戳↑↑查看采訪視頻
Monty能開發(fā)出MySQL并非偶然,他在編程上投入了大量的時間。根據(jù)早期的資料顯示,就連別人去參加聚會時,他也在家里寫代碼。在他看來,好的代碼不需要一次又一次地重寫,而是在開始寫之前,就抱有一次寫成的心態(tài)。正因為如此,直到多年后的今天,Monty仍然直言“自己在編程方面具有一定的天賦”。
除了Monty,MySQL的誕生還離不開David Axmark和Allan Larsson。早在1980年,17歲的Monty打算將自己的計算機內(nèi)存從8KB提高到16KB。機緣巧合之下,他去往瑞典Allan Larsson的電腦店尋求幫助,在那里認識了同樣也是寫代碼的David Axmark,之后三人就成為了親密的合作伙伴,經(jīng)常一起寫代碼,解決編程過程中遇到的問題。1995年,三人創(chuàng)立了MySQL AB,MySQL AB就是MySQL的雛形。這其中Monty負責(zé)了大部分的開發(fā)工作。最終,在1996年10月,MySQL首個版本發(fā)布,從此掀開了數(shù)據(jù)庫歷史的重要一章。
到了1999年,MySQL的迅速發(fā)展已經(jīng)引起了許多人的注意, Oracle表示要以5000萬美元的價格收購MySQL。然而Monty三人并不想止步于此,也不想失去對MySQL的控制,因此拒絕了這次收購。
隨著時間的推移,MySQL迅速發(fā)展, 但同時市場上也出現(xiàn)了包括PostgreSQL在內(nèi)的競爭對手數(shù)據(jù)庫。為了在競爭中脫穎而出,MySQL開始接受融資,以獲得更大的發(fā)展機會。到了2003年,MySQL實現(xiàn)了高達400萬的安裝次數(shù),較兩年前翻了一番,成為了當時全世界最受歡迎的開源數(shù)據(jù)庫。
2008年1月16日,Sun Microsystems以高達10億美元的價格收購MySQL(然而次年Sun又被Oracle收購)。當時Monty擔(dān)心MySQL可能會受到Oracle的控制而變得商業(yè)化,并且如果Oracle一家獨大的話,可能會引發(fā)數(shù)據(jù)庫領(lǐng)域的不良競爭。于是他發(fā)起了一場拯救MySQL的請愿活動,并在MySQL閉源前將其分化,以其小女兒Maria的名字命名創(chuàng)建了MariaDB。
設(shè)計MariaDB的初衷(圖源自MariaDB官網(wǎng))
MariaDB開源數(shù)據(jù)庫可以看做是MySQL的一個分支,主要由開源社區(qū)維護,目的是要完全兼容MySQL,甚至包括API和命令行。MariDB推出后,不少MySQL的員工都轉(zhuǎn)而投向MariaDB,甚至是原先使用MySQL的各大公司也將數(shù)據(jù)庫遷移到MariaDB上,其中就包括谷歌和維基百科。Monty表示:“與MySQL相比,MariaDB更加成熟,擁有更大的研發(fā)優(yōu)勢,并且在安全性修復(fù)方面也更加出色?!敝钡浆F(xiàn)在,Monty依舊親自參與MariaDB的開發(fā)維護,可以說他的工作重心都在MariaDB上。
Monty的小女兒Maria(圖源自MariaDB官網(wǎng))
MariaDB,堅持開源的背后
鄒欣:你在創(chuàng)建MariaDB時,曾提到要把它打造成第二個MySQL,并且確保它是開源的。那么對于數(shù)據(jù)庫而言,為什么開源這么重要呢?
Monty:對于任何大型項目來說,開源都是非常重要的。既然要和巨頭競爭,你就要有和他們一樣的工具。在我看來,開源很適合用于軟件開發(fā),尤其是當公司規(guī)模還不大的時候。這個時候你很難兼顧公司和用戶的需求,因此需要聽取別人的想法。而開源就意味著可以獲得社區(qū)的幫助,能夠了解其他人的觀點。有了開源,你可以開發(fā)出更好的產(chǎn)品,同時產(chǎn)品也能夠獲得更大的影響力。
鄒欣:不過開源的一大弊端就是聲音太多,需求不一,這種情況下該如何保證數(shù)據(jù)庫能滿足大多數(shù)人的需求呢?
Monty:要解決這個問題,就需要確保數(shù)據(jù)庫足夠靈活,這樣才能滿足大多數(shù)人的需求。在這一點上,MySQL和MariaDB的做法是建立各種性能不一的存儲引擎,人們可以針對具體需求開發(fā)自己的存儲引擎。
事實上,對于那些有需求的人來說,MariaDB依舊是一個優(yōu)秀的工具。而對于要求數(shù)據(jù)庫體量較小且運行較快的人來說,MariaDB同樣是一個不錯的選擇。在開發(fā)MariaDB時,我們考慮到了各種可能性,使它能夠保持良好的性能。
鄒欣:AI技術(shù)的發(fā)展讓人們對數(shù)據(jù)庫的期待發(fā)生了轉(zhuǎn)變,今天數(shù)據(jù)庫是否能夠與AI技術(shù)結(jié)合,從而擁有數(shù)據(jù)決策能力?
Monty:對于數(shù)據(jù)庫來說,最重要的是要處理AI需要的不同結(jié)構(gòu)。因此我們添加了對JSON的支持,用于在MariaDB中支持動態(tài)列。這樣人們就可以儲存并檢索數(shù)據(jù),同時保留自己想要的格式。通常AI并不是要創(chuàng)造內(nèi)容,更多的是實現(xiàn)文件自動化,這就是我們對于MariaDB所抱的期望。因此這兩者完全是不同的工具集。
除此之外,我們還需要一個良好的環(huán)境,其中每一個部分都是可替代的,要確保自己不被束縛。一旦有了束縛的存在,那么你的應(yīng)用程序就需要與靜態(tài)系統(tǒng)相結(jié)合,這會大大降低靈活性。我認為對于數(shù)據(jù)庫來說,要注意的一點就是,要確保數(shù)據(jù)庫容易上手,而這恰恰意味著更多的AI技術(shù)能夠整合到數(shù)據(jù)庫中。
仍然每天堅持寫代碼
鄒欣:在中國IT行業(yè)有這樣一種現(xiàn)象,認為程序員過了35歲就要轉(zhuǎn)型,進入管理層或是其他領(lǐng)域。對此你怎么看?
Monty:這在很多地方都很常見。這個現(xiàn)象的主要原因在于程序員在管理崗位上的工資要比單純做編程高。因為很少有公司會重視優(yōu)秀的程序員,這就導(dǎo)致了收入的差異。我認為,如今程序員沒有晉升的空間。與其讓他們被迫轉(zhuǎn)型,不如建立一個能提升他們收入的新環(huán)境。要想做到這一點,公司就得讓他們承擔(dān)更多的責(zé)任。要程序員擔(dān)任管理崗位也行,但前提是仍然要保證他們每天寫代碼的時間。畢竟好的經(jīng)理人到處都是,好的程序員卻千里挑一。
鄒欣:據(jù)我所知,你仍然每天在堅持寫代碼,但同時也要負責(zé)MariaDB的運營和管理。那么,你如何平衡這兩個身份呢?
Monty:我認為在寫代碼這方面,我還是有一點天分的,所以我想堅持下去。我會雇用經(jīng)理人為我工作,這樣我就可以做我最擅長的事情。我會參與代碼審查、社區(qū)運營以及MariaDB的相關(guān)決策。但同時我也會花很多時間維系客戶,與不同國家的開發(fā)者交流,其中有許多中國的開發(fā)者。我認為,除了寫代碼之外,這是我做的最重要的事。總而言之,我會雇傭經(jīng)理人來做一部分管理,讓我有足夠的時間在真正重要的事情上。
鄒欣:聽聞你從20世紀80年代就開始在家辦公,如今這一辦公方式也開始流行起來,對于遠程辦公你有什么看法?
Monty:事實上我認為遠程辦公是非常靈活的工作方式,自1981年開始我就在家辦公(MySQL和MariaDB團隊都是在家辦公)。我們招人之前可能從來沒見過他們,甚至都不知道對面是個人還是團隊。但是我們的效率一直都在線。能做到這一點的前提,是要對跟自己聯(lián)系密切的同事有足夠的了解。至少熟悉他們的樣貌。
我認為對于八成的開發(fā)者而言,在家辦公是一個不錯的選擇??赡苡幸恍〔糠珠_發(fā)者,他們的工作負擔(dān)比較重,在家提不起精神來。這就需要他們出去走走,見見朋友或是接觸新事物。我剛開始在家辦公的時候,也會擔(dān)心這樣是不是會被孤立。所以后來我會定期在家里舉行派對,我也會親自下廚。我們團隊每年也會在一起待上一段時間。
一個好的程序員能抵五個一般的程序員
鄒欣:對于你來說,在過去幾年數(shù)據(jù)庫領(lǐng)域發(fā)生了哪些大的變化?
Monty:在過去的五年或七年間,學(xué)習(xí)SQL(結(jié)構(gòu)化查詢語言)開始成為一種趨勢。但是人們發(fā)現(xiàn)SQL過于復(fù)雜,因此還需要學(xué)習(xí)其他語言。于是許多公司開始創(chuàng)新,采用NoSQL(非關(guān)系型數(shù)據(jù)庫) 進行開發(fā)。但在過去的幾年里,人們逐漸意識到NoSQL并不是萬金油。但選擇關(guān)系型數(shù)據(jù)庫是否能夠涵蓋NoSQL提供的功能?很明顯,有的可以,有的不行。因此我認為,在當下的環(huán)境中,對于數(shù)據(jù)庫的要求在于要保證云端以及本地部署。
我們不能被一個數(shù)據(jù)庫束縛。云端提供的是靈活性,你能在數(shù)據(jù)庫中運行軟件,即使是有成百上千個軟件,而且本地部署的價格更低,控制權(quán)限更高,這一點是云端無法提供的。但我依然認為云端有它的優(yōu)勢,我們要在兩者之間找到平衡。
鄒欣:30年前我從大學(xué)畢業(yè)時,人們提到數(shù)據(jù)庫一般是指去銀行辦業(yè)務(wù)?,F(xiàn)在看來,人們有了更多的選擇,我們能夠借助數(shù)據(jù)庫實現(xiàn)許多功能。但提到數(shù)據(jù)庫開發(fā)時,人們往往指的是“后端”。那么,對于一個開發(fā)者或是畢業(yè)生想要進入數(shù)據(jù)庫領(lǐng)域的人來說,你會給他們怎樣的職業(yè)建議?
Monty:在我看來,從開源數(shù)據(jù)庫開始入門更簡單?,F(xiàn)在開源數(shù)據(jù)庫很多,如果你的確想成為專家級別的人,想要得到一份很好的工作,你可以找一個合適的數(shù)據(jù)庫,并學(xué)習(xí)如何進行優(yōu)化。但同時你也需要了解人們的需求,你可以和從事這一行的同學(xué)交流,并且學(xué)習(xí)解決數(shù)據(jù)庫中的實際問題。
鄒欣:除了多參與開源項目之外,對于中國開發(fā)者你還有哪些想說的?
Monty:我和來自中國的開發(fā)者有過非常多的互動,他們非常棒,在編程上表現(xiàn)得非常優(yōu)秀。不過我在感到驚喜的同時,也感到非常惋惜,因為他們都想轉(zhuǎn)型做管理。我認為這是最大的錯誤。他們需要讓老板給自己派更多的任務(wù),當然也可以做管理,但前提是能讓自己寫代碼。還是那句話:找到一個好經(jīng)理很容易,但找到一個好的程序員很難。一個非常出色的程序員可以抵五個一般的程序員,關(guān)鍵是你想當一個好的程序員還是一個平庸的經(jīng)理。對于所有中國開發(fā)者,我只想說,請堅持你的工作,你已經(jīng)做得非常好了,一定不要停止寫代碼。
【參考資料】
https://zh.wikipedia.org/wiki/%E7%B1%B3%E5%8D%A1%E5%9F%83%E7%88%BE%C2%B7%E7%B6%AD%E5%BE%B7%E7%B4%90%E6%96%AF
https://blog.openocean.vc/founder-stories-a-hackers-hacker-6d5054c90564
https://huskyintelligence.com/leverage-open-source-code/
http://monty-says.blogspot.com/2009/12/help-saving-mysql.html
https://www.geeksforgeeks.org/introduction-of-mariadb/
http://www.josetteorama.com/from-mysql-to-mariadb-michael-%e2%80%9cmonty%e2%80%9d-widenius-talks-about-databases-and-his-projects/
https://dri.es/the-history-of-mysql-ab
https://mariadb.org/wp-content/uploads/2019/11/MySQL-MariaDB-story.pdf
出品 |《新程序員》編輯部
關(guān)鍵詞:
- 發(fā)力蛋制品 勁仔食品小蛋圓圓鵪鶉蛋入圍iSEE全球創(chuàng)新品牌百強榜
- 新捷途X70S顏值與實力全面升級,將于4月29日發(fā)布預(yù)售
- 奶茶行業(yè)品牌多、競爭大 冰雪時光靠什么贏得掌聲?
- 千千惠生活全國上線“隨心退”功能,消費者可無條件隨時退款
- 杭州臨平區(qū):創(chuàng)建市場疫情防控“三色”預(yù)警分類管理機制 動態(tài)防控監(jiān)測預(yù)警
- 海南開展防止一次性不可降解塑料制品入島聯(lián)合執(zhí)法行動 對當事人立案調(diào)查
- 河北保定市場監(jiān)管局創(chuàng)新應(yīng)用信用分級分類監(jiān)管 提升監(jiān)管效能助力營商環(huán)境優(yōu)化
- 原料新鮮 用料扎實 冰雪時光穩(wěn)扎茶飲下沉市場
- 陜西省市場監(jiān)管局連續(xù)三年榮獲平安陜西建設(shè)先進集體 充分發(fā)揮市場監(jiān)管職能優(yōu)勢
- 浙江杭州:西湖食品安全風(fēng)險綜合治理中心掛牌成立 健全機制規(guī)范運行為
- 湖北恩施州鶴峰縣市場監(jiān)管局開展進口水果排查專項行動 加強宣傳引導(dǎo)
- 寧夏青銅峽市場監(jiān)管局:擰緊節(jié)日食藥“安全閥” 確保節(jié)日期間市場安全穩(wěn)定
- 北京東城對轄區(qū)旅游客運企業(yè)開展專項聯(lián)合檢 營造和諧市場環(huán)境
- 安徽開展專項執(zhí)法查處濫用行政權(quán)力行為 共同營造公平競爭良好社會環(huán)境
- 安徽啟動2022年春茶地理標志保護專項行動 促進茶產(chǎn)業(yè)高質(zhì)量發(fā)展
- 吉林:開展知識產(chǎn)權(quán)代理行業(yè)“藍天”專項整治行動 促進知識產(chǎn)權(quán)服務(wù)業(yè)健康發(fā)展
- 福建福州:宣傳知識產(chǎn)權(quán)法律知識 全方位推進地方高質(zhì)量發(fā)展超越
- 遼寧撫順積極建設(shè)知識產(chǎn)權(quán)強市 建設(shè)知識產(chǎn)權(quán)強市為目標
- 2021年全國公共服務(wù)質(zhì)量監(jiān)測情況發(fā)布 南京以總體滿意度?排名第一
- 立案20件!安徽嚴查哄抬物價等價格違法行為 督促經(jīng)營者守法經(jīng)營
- 杭州臨平區(qū):創(chuàng)建市場疫情防控“三色”預(yù)警分類管理
- 海南開展防止一次性不可降解塑料制品入島聯(lián)合執(zhí)法行
- 河北保定市場監(jiān)管局創(chuàng)新應(yīng)用信用分級分類監(jiān)管 提
- 陜西省市場監(jiān)管局連續(xù)三年榮獲平安陜西建設(shè)先進集體
- 浙江杭州:西湖食品安全風(fēng)險綜合治理中心掛牌成立
- 湖北恩施州鶴峰縣市場監(jiān)管局開展進口水果排查專項行
- 寧夏青銅峽市場監(jiān)管局:擰緊節(jié)日食藥“安全閥” 確
- 北京東城對轄區(qū)旅游客運企業(yè)開展專項聯(lián)合檢 營造和
- 安徽開展專項執(zhí)法查處濫用行政權(quán)力行為 共同營造公
- 安徽啟動2022年春茶地理標志保護專項行動 促進茶產(chǎn)
- 1 發(fā)力蛋制品 勁仔食品小蛋圓圓鵪鶉蛋入圍iSEE全球創(chuàng)
- 2 新捷途X70S顏值與實力全面升級,將于4月29日發(fā)布預(yù)售
- 3 奶茶行業(yè)品牌多、競爭大 冰雪時光靠什么贏得掌聲?
- 4 千千惠生活全國上線“隨心退”功能,消費者可無條件
- 5 杭州臨平區(qū):創(chuàng)建市場疫情防控“三色”預(yù)警分類管理
- 6 海南開展防止一次性不可降解塑料制品入島聯(lián)合執(zhí)法行
- 7 河北保定市場監(jiān)管局創(chuàng)新應(yīng)用信用分級分類監(jiān)管 提
- 8 原料新鮮 用料扎實 冰雪時光穩(wěn)扎茶飲下沉市場
- 9 陜西省市場監(jiān)管局連續(xù)三年榮獲平安陜西建設(shè)先進集體
- 10 浙江杭州:西湖食品安全風(fēng)險綜合治理中心掛牌成立