《程式設計師》雜誌:我的資料庫學習“曲線”
學習收藏
《程式設計師》雜誌:我的資料庫學習“曲線”
編者按:牛新莊,資料庫維護、優化和架構專家;曾獲得國內資料庫領域最高榮譽——“2006年中國首屆傑出資料庫工程師”;數年前曾被IBM全球軟體部以年薪60萬元人民幣聘用,而他卻婉然拒絕。這樣一個躲藏在幕後的“牛人”,有著怎樣的學習、發展之路?為此,本刊特邀牛新莊博士,請他講述一個真實版的“資料庫之路”。
選定發展方向
1999年,我在開始讀研時就給自己確定了以後的發展方向。
當時有兩個方向:網路,資料庫技術。因為在2000年之時,網路大熱,市場上擁有CCNP、CCIE證書的人特別牛。所以我當時也考下了CCNP證書,但後來發現網路方向涉及很多硬體層面的東西,這些都對廠商的依賴性太強,個人發揮空間不大。而我喜歡鑽研,所以慢慢開始轉向專攻資料庫技術。
在認準資料庫這個方向後,我開始深入學習資料庫理論方面的知識。當時,人大王珊教授的《資料庫系統原理教程》一書,我讀了幾十遍。在學習資料庫理論的同時,我開始接觸並深入學習DB2和Oracle,並從1999年開始使用DB2 V5.2。那時,市場上關於DB2方面的技術書籍幾乎沒有,網際網路也不像現在這麼發達。因為我的導師做一個課題需要用到DB2資料庫,但是我只能依靠檢視DB2隨機文件來學習。那時,我還自己兼職,通過幫別人做些小軟體賺錢,外加課題稿費,以支付考OCP認證和DB2認證的費用。
到現在為止,我一直認為考認證是一個很好的學習動力。因為考試費用不菲,如果不想浪費錢只能拼命看書。我在讀研的2000年就通過了OCP 8i認證,後來又陸續通過DB2 V5.2認證。這些認證極大地增強了我的自信。同時,在幫助導師用PB、Delphi等程式設計工具做應用開發時,我有意識地增強對SQL的學習,這對我後來的效能調優工作非常有幫助。
這裡我想說的是,做好一個時期的人生規劃非常重要。我們首先要有一個明確的努力方向和規劃,然後有意識的往這個方向努力。這種積極主動的學習要比被動學習效率高很多。
第一次做培訓
“機遇偏愛於有準備的頭腦”,這句話雖是老生常談,卻是人生真諦。記得2000年底,我在網上看到一個帖子說需要一個人去安裝DB2資料庫,差旅報銷,每天500元,我喜出望外。因為這項工作需要有DB2認證才能去,而我那時DB2高階系統管理和應用開發的認證都有,所以很快就通過了對方的稽核。但是當我到客戶現場時才發現,不是安裝DB2而是要給客戶講課,當時我就傻眼了,因為講課需要的知識遠比安裝配置資料庫要難得多,更何況我之前根本沒有講過課。沒辦法,壓力也是動力,只能前一天夜裡看教材備課到凌晨5點。短短睡了兩個小時後,8點半去講課。四天講課下來,我總共休息了12個小時。還好自己畢竟有DB2應用開發經驗和DB2認證做基礎,總算勉強應付了過去。只是沒想到的是,這次並不算順利的培訓,竟是我未來幾年培訓生涯的開始。
將培訓當學習的動力
經過第一次講課後,我看到了自己的差距,知道僅有認證是不夠的。客戶的很多問題,書本上沒有答案,需要自己在實踐經驗上做努力。另外,講課前講師需要把一些原理、概念性的東西弄清楚,也需要對資料庫進行深入學習。
後來,IBM培訓部通過一些渠道知道我能講DB2且擁有相關證書,就找我講授DB2系列課程。所以,從2001年開始,我就經常作為IBM官方講師講授DB2系列的所有課程。我自認為講課是一個很好的學習過程,因為課前要深入瞭解概念,對於自己的理論深入學習有很大幫助。同時,課堂上學員的實際操作問題也會強迫自己做更深入的研究。
我對培訓有這樣的認識:學員聽你講三個小時,要遠遠勝過自己看3小時的書。如果把一堂課的內容比喻成一杯水,那老師至少應該提前儲備一桶水。所以,在講課之前,我精心準備實驗,深入和學員交流。我講課從不照本宣科,而是自己準備了很多教材外比較實用的知識來擴充套件教材內容。同時爭取上課過程中把一些概念用淺顯易懂的例子來講解。要想做到這些,首先自己必須對這個概念有深刻的理解才行,這一切都在客觀上促進了自己的學習。
隨著培訓的增多,有部分客戶開始找我做實際的調優工作。記得我第一次去為客戶現場調優是2001年,去大連大通證券解決鎖等待問題。客戶環境用的是AIX和CICS。當時雖然問題解決了,但自己心裡還是比較虛,因為對AIX和CICS不瞭解,萬一是這兩個方面有問題,自己就沒辦法搞定了;這讓我認識到一個複雜系統的調整往往需要具備多方面的知識。這件事之後,我在網上買了一個140的IBM工作站小機,自己安裝AIX並開始學習。
資料庫學習Tips
根據我對資料庫的理解,目前市場上雖然有Oracle,DB2,Informix,Sybase和SQL Server資料庫,但Informix資料庫已經被IBM收購,而Sybase資料庫在技術和市場上正走向沒落,佔據市場主要份額的就是Oracle,DB2和SQL Server資料庫。SQL Server資料庫非常好,但是很遺憾的是隻能在Windows平臺使用。所以如果你深入研究SQL Server資料庫,我只能說獲取高薪的概率稍低,而且坦白的說,使用SQL Sever資料庫的企業一般是中小企業居多。而國內做Oracle資料庫的人太多,如果你想在Oracle領域出人頭地,難度極大。但是,做DB2資料庫的人反而不太多,物以稀為貴。況且,DB2資料庫廣泛應用在銀行、電信、製造行業、零售行業、保險行業等“高薪”領域中,所以我強烈建議學習DB2資料庫,做IBM技術一般獲取高薪的概率相對會大一些。我們的時間精力是有限的,所以必須選擇好方向然後努力為之。除了SQL Server,這幾個資料庫我都在使用,我個人感覺除了功能外,對於執行穩定而言,相對於Oracle不太穩定的優化器,DB2無疑是最穩定的,它的優化器無比強大。如果能在鎖方面再有更先進的技術,那麼DB2將是完美的。
這期間,我一邊學習,一邊通過了AIX的全部認證。記得非常清楚的是,為了做HA的實驗,我花費了很大工夫。因為那時小型機不像今天這麼普及,無法搞到7133陣列。後來我又學習了CICS、WebSphere、MQ和儲存。就這樣,在我培訓的過程中,發現自己哪方面薄弱並且感覺這個方向有前途,我就會開始學習。不過,那時我的技術主要還是圍繞IBM產品為主。由於自己對培訓比較用心且頗受客戶好評,找我做培訓的國內培訓機構開始變多。這個期間我自己的技術水平也增長很快。
2002年11月,我參加了首屆 “IBM DeveloperWorksLive! China 2002”大會,並獲得IBM首次在國內評選的“傑出軟體技術專家”獎,當時在6名獲獎者中名列第2。這個獎項客觀上對我在客戶群的擴充方面起到很大幫助。找我解決問題的人更多了,所以2002—2003年也成了我技術提升最快的兩年。
這兩年內,我陸續學習了HP-UX、WebSphere和MQ並通過認證。我自己的感覺是,如果你把一門技術研究得非常深、非常透,由於觸類旁通的緣故,再去學習另一門技術時就很輕鬆。所以,我在學完AIX再去學習HP-UX時,感覺非常輕鬆。同樣,在學習ORACLE和DB2後再去學習Informix也同樣很容易。通過這種縱向的深入和橫向的比較,各種產品的所長所短也會非常清楚,自己的技術視野無意間更加全面化。而且通過對一個產品的深入,你往往能夠發現這個產品的缺點和需要改進的地方。就拿DB2來說,每次版本更新的新特性,在新版本未上市前我就可以猜得差不多了。這主要有三個原因:一是我貼近真實使用者,瞭解他們的真正需求;二是自己一直在用且不斷總結思考;三是這些特性別的資料庫有,而DB2沒有,那在下個版本就會增加。所以相對來說,我自身對新版本的新特性學習就非常輕鬆了。就DB2而言,我擁有DB2 V5.2 、V7.1、V8.1和DB2 V9的全部認證,而且我應該是國內第一個把DB2 V8認證全部通過的人,當然,這其中也有巧合的成分。
重要的一點是:學習過程中,要不斷地把實踐和理論融合,知其然更知其所以然,這樣提升就會快很多。
現場救援“趕場”記
2004—2005年是我最忙碌的兩年,那時候找我講課的培訓機構和需要效能調優的客戶非常多,基本上整天在天上飛。培訓機構找我講課常常需要提前一個月預約。那兩年內,除了過年幾天,其他時間都是在做培訓和診斷、調優,足跡遍及國內主要城市。我自己基本上是國內六大銀行開發中心和資料中心培訓的指定講師,併為北京銀信科技、山東農信、廣東農信,交行大集中IBP等專案做資料庫技術顧問。
那時的我年輕、精力充沛。記得最刺激的一次是2004年9月的一天,上午9點為上海移動IT部門做AIX動態邏輯分割槽(DLPAR)培訓,結束時是17點。之後,立刻坐計程車前往揚州,於20點到達揚州供電局並協助他們進行電力負荷控制系統專案上線,一直奮戰到凌晨3點半。接著,又連夜乘計程車趕往上海,在凌晨6點到達酒店。休息兩小時後,8點出發,準時出現在上海移動培訓現場。那時我對報酬不太在意,想的主要是用心積累技術經驗和客戶資源。在我看來,能夠不斷通過實踐讓自己成長是第一要義。而且,去的客戶現場越多,處理的問題就越多,也就越多地發現自己的不足,然後再拼命學習,不斷積累、總結和思考,進入了一個良性迴圈。
至今我仍然懷念那段充實、緊張而充滿激情的光輝歲月。2004年和2005年,一方面因為以獨立諮詢顧問的個人身份無法出具發票;另一方面,專案越做越大,尤其是很多銀行的資料庫架構和維護專案涉及合同金額也越來越大,需要簽訂正式公司合同。於是,我就分別在上海、北京註冊了公司。當然這些年我並非都是一帆風順,也犯過一些重大錯誤,例如:我曾經在2002年5月1日把海南美蘭機場的資料庫調死,導致機場航班資訊管理系統癱瘓。早期也曾經因為調整某證券系統當機而影響股民交易,這些都對客戶造成了影響,但這些都是成長必須要走的路。經過這兩次事件後,我自己也思考、總結了很多,在之後的調優工作中我基本上再沒有犯過錯誤。
我的祕訣:學習、積累、規劃
2006年8月我獲得“2006年中國首屆傑出資料庫工程師”稱號,算是對我多年學習資料庫的一個總結。自2007年開始,我專注於做一些大客戶的運維工作,並相應減少了培訓次數。2008年,我被建設銀行以年薪217萬聘請為資深技術專家來維護Oracle和Informix資料庫。就做技術而言,以一己之力能掙到年薪幾百萬常常令我感到自豪,也讓我感受到技術的魅力,覺得自己多年來對技術的鑽研得到了認可。
之所以講述我的技術之路,主要目的是給大家一些參考,儘可能多地去了解社會的需求,有意識給自己制定人生規劃。我自己認為,多年來能取得這樣的成績,勤奮、努力和堅持一直是我最看重的。因為有了這些,才不至於當機遇光顧時,你卻不知所措。
現在很多年輕人,恰恰缺少的就是這樣的忘我與痴迷,在我熟悉的資料庫技術領域,很多年輕人越來越早地將注意力集中在薪水和職位上,這是很不明智的行為。其實,往往那些將諸如高薪與職位忘懷的人反而能更快地取得成功。“不經一番寒徹骨,安得梅花撲鼻香?”這樣的道理人人都懂,可能夠真正去實踐的人卻並不多。結合我的學習經驗與感悟,我總結有16字要訣:去除浮躁,認真學習,不斷積累,尋找機遇。
最後,我用這句話與大家共勉:古之成大事者,不唯有超世之才,亦唯有堅韌不拔之志也!
相關文章
- 我的資料庫學習“曲線”----牛新莊 (zt)資料庫
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師大資料學習路線之大資料自學路線二程式設計師大資料
- 好程式設計師大資料學習路線之大資料自學路線一程式設計師大資料
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師大資料學習路線分享hdfs學習乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 好程式設計師Python學習路線分享Linux和資料庫部分程式設計師PythonLinux資料庫
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料
- 好程式設計師大資料學習路線之mapreduce概述程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料學習路線Hadoop學習乾貨分享程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享Lambda表示式程式設計師大資料
- 好程式設計師大資料學習路線分享UDF函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料學習路線之zookeeper乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享AWK詳解程式設計師大資料
- 好程式設計師大資料學習路線分享TCP和UDP學習筆記程式設計師大資料TCPUDP筆記
- 好程式設計師大資料學習路線分享hive的執行方式程式設計師大資料Hive
- 好程式設計師大資料學習路線之hive表的查詢程式設計師大資料Hive
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 好程式設計師大資料學習路線分享高階函式程式設計師大資料函式
- 好程式設計師大資料學習路線hive內部函式程式設計師大資料Hive函式
- 好程式設計師大資料學習路線之hive儲存格式程式設計師大資料Hive
- 好程式設計師大資料學習路線分享大資料之執行緒程式設計師大資料執行緒
- 好程式設計師大資料學習路線分享執行緒學習筆記二程式設計師大資料執行緒筆記
- 好程式設計師大資料學習路線分享多執行緒學習筆記程式設計師大資料執行緒筆記
- Java程式設計師面試學習資料彙總Java程式設計師面試
- 程式設計師必讀的書籍和期刊雜誌程式設計師
- Python程式設計師學習路線圖Python程式設計師
- 程式設計師數學四部曲程式設計師
- 好程式設計師大資料學習路線分享大資料之基礎語法程式設計師大資料
- 好程式設計師大資料學習路線分享彈性分散式資料集RDD程式設計師大資料分散式
- 好程式設計師大資料學習路線分享Hadoop機架感知程式設計師大資料Hadoop