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