程式設計師的奮鬥史(三十八)——大學斷代史(二)——我與資料庫的故事

Wentasy發表於2014-06-01

        文/溫國兵


        惰性人皆有之,也算是人的一大天性。幾日之前便構思好此文,怎奈每日雜事繁多,今日才提起筆,作下此文。本文談談我與資料庫的故事。


        說起和資料庫結緣,還得從大一說起。大一剛開始接觸C語言,每日就沉浸在無止境的程式碼中。在網上查資料的過程中,看到別人用C語言寫了一個小型的圖書操作程式,資料庫採用的是SQL Server,執行出來的效果圖很炫,驚歎原來還可以這樣管理資料。熟知C語言的同學肯定對檔案操作不陌生,當時我們寫程式如果有靜態資料,都是放在檔案裡的。直到後來做的C語言課程設計,我也是一大堆檔案來儲存靜態資料。至此心裡有了一顆小小的種子,誰知道會在後來生根發芽。


        大一下期的那個暑假,開始了實驗室之旅。在實驗室每天都是自學,其中就接觸到了SQL Server和MySQL,關於實驗室的種種事情,後面還會細說。最開始接觸SQL Server,我用我那破網在網上下載數G大的資料庫安裝檔案,後來才知道我們學校的陽光軟體站裡有,且下載速度達十幾M每秒。花了數天把軟體下載下來以後,在百度文庫找了一個安裝說明文件,按照截圖一步步操作。整個過程可不那麼順利,並且SQL Server非常耗用記憶體,好幾次機器都是未響應狀態,一番折騰,終於搞掂了,別提多興奮。接著把服務啟動,開啟SQL Server Manageorgiament Studio,對資料庫一竅不通的我連個登入都折騰半天。進入主介面,不知該做個啥。後來在實驗室老師和學長的建議下,我在W3C上開始學習SQL的基礎知識。寫個查詢,滿足指定條件的資料就呈現在眼前;用個INSERT,就能把想要的資料插入到資料庫;弄個UPDATE,就能把資料更新成想要的資料;寫個DELETE,就能把不需要的資料刪除。如此簡單的語句就能實現當初以為很強大的功能,不得不感嘆資料庫的神奇。後來閱讀師兄的專案原始碼,發現資料庫使用的是MySQL,於是開始折騰MySQL。Windows下的MySQL還是比較容易安裝,但就是如此簡單的操作也是折騰了很久,並且很多資料庫配置選項也不大明白。不過有了SQL Server的一些基礎,學習MySQL還是相對容易。接觸過這兩大資料庫,並且有了一點Java Web的知識,於是開始做專案。最開始的專案是練手用的,無非就是連線資料庫,然後進行增刪改查。連線資料庫使用的JDBC,這個過程中也遇到很多問題,比如驅動版本不對、中文出現亂碼、不能正確提交資料等等。我有個習慣,就是遇到問題喜歡自己搗鼓,在萬不得已的情況下不向別人提問。進入實驗室不久,由於在網上找資料,很多連結都定向到CSDN,於是開通了CSDN部落格,這是一件正確的事的開始。


        大二上期開始接觸Oracle。Oracle也是一款龐大的軟體,在網上把安裝檔案下載下來以後,按照網上的安裝文件,一步步開始操作。安裝完成後,開始使用Oracle,這個資料庫軟體執行起來可真夠嗆,2G的記憶體表示壓力山大,執行Oracle後其他的任何事情就別想做了。學習Oracle先是按照前輩的部落格循序漸進,從基礎的SQL,到PL SQL,再到簡單的優化,整個過程的學習還算順利,不會存在很吃力的情況。此時的我對資料庫抱有極大的熱情和興趣,並且慢慢形成了以後的奮鬥價值觀。


        大二開設了資料庫相關的課程,沒記錯的話課程名叫做「資料庫原理」。在正式上課之前還有一點時間準備,對資料庫較熟悉的我在同學面前有了優越感,很多同學到我那裡拷貝資料庫安裝檔案,並且麻煩我為他們安裝資料庫。經過數次幫忙後,對整個操作已經到了瞭如指掌的地步。教授資料庫原理的老師十分幽默,時不時在課上爆出個冷笑話,讓人捧腹大笑。由於以前接觸過資料庫,所以資料庫介紹、關聯式資料庫的基本理論、基礎SQL等等知識學習起來都比較輕鬆。大二的我很喜歡泡圖書館,經常翻閱四樓的計算機書籍,看到兩本碩大的書,一本是Abraham Silberschatz所著的《資料庫系統概念》,另一本是David M. Kroenke所著的《資料庫原理》,如此厚的著作看完都要很久,更不提創作了。我小心翼翼地用雙手從書架取下,興高采烈地捧到書桌閱讀,看了一兩個小時,對作者不禁有敬畏之情。這些書籍堪稱經典,肯定有他的道理,想深入資料庫,這些書是必讀的。


        在學習資料庫知識的過程中,難免會遇到各種各樣的問題。遇到問題後,我首先嚐試自己解決,自己解決不了再參考別人的解決辦法,解決後再用自己的方式總結,再以部落格的形式發表。這種學習方式好處非常之多,讀者不妨借鑑。後來學習資料庫就多了一些深入。比如工作之後,成為了SQL Server DBA,開始看SQL 優化的知識,並且用於實踐。工作的過程中還寫了不少的檢查效能瓶頸的T-SQL。再比如MySQL,學習了MySQL的高可用、高效能技術,比如複製技術中的主從複製、雙主複製、一主多從;高可用、高效能叢集方案,比如MySQL Proxy、MySQL Cluster、MySQL MHA、MySQL MMM、DRBD+Heartbeat+MySQL、LVS+Keepalived+MySQL等等;還接觸到MySQL的備份與恢復,比如冷備、熱備、增量備份、熱拷貝、延時備份等等;還接觸到MySQL的體系結構,熟悉了常用的儲存引擎,後來還看了不少MySQL相關的書籍,閱讀了部分MySQL原始碼,如此博大精深的技術,深知冰凍三尺非一日之寒,還需要花很大的功夫。再比如Oracle,接觸了Linux下Oracle的安裝和配置、Oracle的體系結構、Oracle的備份與恢復、DG、RAC、Oracle優化等等。期間抱著官方文件啃,看過不少Oracle大牛的書,比如蓋國強、白鱔等等。在CSDN的私信、知乎、OSC、ITPUB,經常有人在問我問題,我在幫別人解決問題的同時也得到比較大的提高。在這個過程中學會了怎樣快速的尋求「幫助」,怎樣分享自己的所思所得,怎樣和別人高效地溝通,還懂得了學習技術不是學習技術本身,而是技術後面的本質問題。未來從事資料庫行業還有很長的路要走,用一句「路漫漫其修遠兮,吾將上下而求索」來激勵自己。


        寫到這裡已經把大學的整個資料庫旅程寫完了,回過頭看整個旅程,還是有很多值得思考的地方。這裡只給出一個思考,那就是為什麼要學習和深入資料庫,並且把他當做以後的職業發展方向,個人認為是興趣問題。至於面試官怎麼想與我無關。一次面試官問我這個問題,我回答是興趣,他說其實很簡單,無非是為了金錢嘛,當時我只能用呵呵來笑對,只能說每個人的追求不一樣。有的人為了金錢而奔波,有的人為了實現自己的價值而奮鬥;有些人一生碌碌無為,有些人一生完成了諸多豐功偉績。



        結合自身經歷,對以後想從事資料庫行業的學弟學妹們還是有幾點建議。第一是搞明白動機,想清楚自己是否適合這個行業,不要因為做資料庫薪資高就盲目地跟風。資料庫行業外表光鮮,實質苦逼,並沒有想象中的那麼美好。第二是掌握好的學習方法,比如前面提到的通過博文分享形成自己的知識庫、向前輩取經、練習和總結並進等等。第三是遇到問題的求助方式,不要遇到問題就向別人請教,如果不經過自己的思考,那你的提升會非常的小。如果一定要求助,可以採用發帖或者跟技術大牛發郵件的形式,但請務必注意提問的方式,把遇到問題的原因、 什麼條件下導致這樣的錯誤、出現錯誤的平臺、相應的錯誤資訊和程式碼說清楚,還需要注意郵件的格式和必需的禮節。做人做事不僅要讓自己舒服,更重要的是要讓別人舒服。第四是把基本功抓牢。有研究表明,很多非常成功的企業家以前賣過報,小時候形成的創業童子功對以後的發展起著至關重要的作用。某一個領域的基礎知識就是基本功,和童子功有著很類似的作用。地基不牢,何以成參天大樓。落實到實處,資料庫的經典書籍一定要找來讀讀,還有就是越是簡單的東西就越需要搞明白為什麼。第五是不要好高騖遠。我在平時的求職過程中,看到很多公司開的薪資,有了2年經驗的月薪在2萬以上的不在少數。別人能開那麼高的薪資,肯定你做的事對得起這份工資。薪資越高,責任也就越大。從另一方面講,腳踏實地才能在以後有所作為,當你有了能力,不愁薪資。昨天在微博上看到一句話,牛B的人才不用找工作,想想不無道理。第六是找到志同道合的好友,互相學習,這樣會得到很大的提高。比如我有幸結識@林水彬,在平時他給我很大的幫助,在此感謝!第七是找資料庫相關的工作不要氣餒,不要自暴自棄,也不要埋怨上天的不公,為什麼這樣說呢?因為應屆畢業生找資料庫相關的工作還是相對困難的,一個經驗的硬性指標就會把你拒之門外。要相信凡事都是能者居之,你有能力,足夠好運,並且公司也願意培養你,那恭喜你,堅持下去,前途一片光明。如果畢業不能馬上找到資料庫相關工作,可以先做其他行業,以後再考慮轉型。方向就在那裡,總錯不了。希望本文能給讀者帶來丁點幫助。


        詩和遠方永遠存在。寫著驚世駭俗的詩,心繫可以眺望的遠方,伴著沿途的風景,獨自前行。

 

        未完待續。


        Good Luck!

        Robin

        2014年6月1日


        相關文章

相關文章