經常有人問我,有關數據庫方面的職位、職業規劃、轉型等相關的問題。對于經常聽到的“DBA(數據庫管理員)、數據庫開發工程師、數據挖掘工程師、數據庫架構師......”這些職位,之前我也比較迷惑,甚至搞不清楚這些崗位具體的工作任務和職責,更別提什么職業
經常有人問我,有關數據庫方面的職位、職業規劃、轉型等相關的問題。對于經常聽到的“DBA(數據庫管理員)、數據庫開發工程師、數據挖掘工程師、數據庫架構師......”這些職位,之前我也比較迷惑,甚至搞不清楚這些崗位具體的工作任務和職責,更別提什么職業規劃了。后來詢問了一些專門從事數據庫方面工作的朋友,也查了一些資料,加入了自己的一點點見解。抽空整理了一下,寫出本文,希望能夠幫助到想走這條路的朋友。由于本人也并不太專業,如有錯誤,望及時指出。
所謂數據庫管理,就是我們通常說的DBA(數據庫管理員)。主要工作是做數據庫安裝、管理、調優、備份、容災、集群、安全等(拿sqlserver DBA為例子,工作職責可以參考http://blog.csdn.net/dinglang_2009/article/details/7352850),主要技術點是除了對數據庫本身比較熟悉外,還要對硬件(主機、存儲、網絡)、操作系統等方面有較好的理解,否則很難做到真正的高手。例如,在做數據庫調優中,I/O是比較常見的性能瓶頸,你要想真正最大限度的調優,必須了解磁盤(硬件)的工作原理,還要了解操作系統的相關知識(例如windows下的文件系統的特性)。在做數據庫集群的過程中,拿sqlserver為例子,必須先實現windows操作系統的集群,如果你不了解windows系統的管理,怎么能勝任呢?優秀的DBA,不一定是個優秀的系統管理員,但至少也是非常數據操作系統實現和管理的,這毫不夸張。
總的一點,就單單這個方向而言,要學的知識和技術也確實太多了。所以,通常DBA只需要熟悉一款數據庫產品(例如Oracle。國內sqlserver DBA很少)即可,能在職業生涯中走得很遠。相反,多而不精是很忌諱的。
所謂數據庫開發,我認為有好幾種。首先,一般人理解是指涉及到數據庫應用的開發。例如使用php+mysql開發網站的,運用Java+Oracle開發銀行系統的,asp.net+mssqlserver開發企業級ERP系統的......這些都可以認為是數據庫開發。在某些公司(一般是大公司),也有專業從事數據庫層面開發的工程師。通常他們的系統都比較依賴于數據庫層面,例如使用了很多事務控制,存儲過程,高并發經常造成數據庫死鎖等等。這樣一來,工作任務會很重,必須有單獨的“數據庫開發工程師”。還有一種是采用純數據庫系統上的語言進行開發工作,這類一般是指專注于純數據庫技術開發的人員,如數據挖掘工程師(數據庫抽取、傳輸、加載,是數據倉庫應用的一部份)。此類入門的門檻較高,薪資待遇也非常好,隨著商業智能在國內的興起,這類職位的需求也越來越多。
有些大型公司,對數據庫應用比較深入,可能會設置專業的DBA從事開發顧問工作,主要責任是與項目組一起進行系統的數據庫結構設計、SQL相關的開發優化,建庫建表操作等,這類DBA要求對系統業務有一定了解,對數據庫開發與優化也比較熟悉,對這種職位每個公司的名稱可能不一樣,有些公司還是稱為DBA或數據庫開發工程師,阿里巴巴公司稱為開發DBA或應用DBA。例如我有個朋友在阿里巴巴下面的支付寶DBA項目組,他就主要從事Oracle數據庫管理和調優工作。總而言之,大公司會細分,小點的公司則一般希望你是全能型的。這很好理解,大公司有錢,且對技術要求更高,所以需要很多“專才”來協作。而小公司財力等各個方面有限,相對技術要求低一點(也不一定),所以更傾向于“通才”(至于那種太小的公司或者不是專門從事IT行業的,一般不會設專門的DBA。打個比方,一個皮包公司招到一個程序員,恨不得立馬就把公司里的美工也炒了,可想而知小老板對人才的渴望和要求)。至于“通才”還是”專才“,還是要看自己定位了。
表面上看DBA是從事數據庫管理工作,不需要軟件開發技能,但是隨著個人的發展,你需要經常與開發人員打交道,需要寫代碼模擬開發人員訪問數據庫的 CASE,還需要做一些新技術的測試學習,寫一些自動化腳本等。所以在DBA成長的過程中,開發技能也是必不可少的。實際上,大部分DBA都是從事了一段時間開發工作后才轉型為DBA崗位。例如我剛才說道的那位朋友,之前也是從事J2EE方面開發的,積累到一定階段后,逐漸轉型DBA。
所以對于應屆生,我不建議直接挑戰DBA崗位,最好還是先從事一段時間開發工作,如果對數據庫管理的工作比較感興趣,可以在工作過程中不斷學習數據庫知識,幫助團隊解決數據庫的問題,當決定轉型為DBA或者是工作中有明確的DBA需求后,再選擇從數據庫概念、功能、管理、開發、調優逐步系統的學習數據庫知識,多做測試與實踐,在專業論壇中處理更多的問題。不要忽略論壇,Oracle大牛馮大輝、蓋國強,他們就是在論壇和工作中積累起來的。
3.關于考試與認證
早幾年,在我還在上學的那個時候,“認證”是非常流行的,認可度也不錯。數據庫相關培訓的價格應該都不低(例如Oracle OCP OCM 等),外界的認可度也沒以前好,因為現在認證考試基本上很容易通過。去參加數據庫培訓也并不一定能學到多少東西,更重要的是個人的興趣與環境。如果你真想提高自己,而且有經濟基礎,那可以選擇參加數據庫培訓,但前提是你要具備一定的基礎再去,因為培訓的時間一般很短,要想在培訓的時間內消化基本上不太可能,所以最好先拿認證試題測試一下自己的能力,如果你連題目的意思都不理解或者里面的概念都沒聽過那還是花一些時間再自學一下吧。
4.數據庫學習的方法
就我個人而言,對數據庫談不上有什么深入研究。稀里糊涂的用了幾年,不敢提太多建議誤人子弟。關于數據庫學習的方法,一定要理論加實踐(否則就是紙上談兵了),光看書是沒用的,而且會讓人感覺投入多收益少而失去學習興趣。開始時多動手實踐,掌握常用的功能,在工作中或網絡上解決實際的問題,學習別人解決問題的方法,對于不理解或不熟悉的知識點自己要親自實踐,解決的問題多了,自然就會感覺水平提高。到一個階段后,接著會發現水平提高得越來越慢,這時反過來從更基礎的層面系統的學習數據庫知識,尤其是研究偏底層和原理性的知識,再加以實踐。過了這個階段,基本算是入行了。我在博客園和CSDN等網站上,經常有許多深入數據庫底層相關的文章與討論,讓我這種菜鳥望而卻步,這些知識很重要而且難掌握,但并不表示這些知識很實用,因為我們學習知識主要目的是解決問題,而不是表現自己。因為我們大多數人還是從事應用層開發。我曾對sqlserver的索引、事務、鎖一直比較疑惑,想惡補一下。抱著幾本《sqlserver 2005 技術內幕》啃,這系列的書是從sqlserver 2005底層開始揭示的,確實寫的好,可惜不太適合我這種菜鳥。試想,連一條復雜的sql語句都寫不出來,你跟他講sqlserver引擎內部執行原理,那能有好效果嗎?所以,還是那句經典的話:由淺入深,循序漸進,理論加實踐。說起來簡單,做起來難??!沒有捷徑。工作中積累,業余還得學習,不斷積累多年。
blog.csdn.net/dinglang_2009
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com