長沙尚學堂|十年樹人|成就高薪
致力推動IT教育,我們正在行動    咨詢熱線:0731-83072091

一文讀懂大數據庫程序員求職就業那些事兒

時間:2018-08-10 15:41:51   來源:長沙尚學堂   閱讀:

1當前市場對于數據庫程序員的需求如何?待遇如何?

 

數據庫開發人員和維護人員在市場上一直都是急缺人才。

如果想往DBA這個方向發展,那么Oracle、MySQL、DB2或非關系型數據庫(如MongoDB)都可以。在Oracle收購MySQL后,MySQL的發展勢頭也不錯,大公司也都在將部分數據庫往MySQL遷移,例如阿里巴巴、盛大網絡等等公司的部分數據庫,很多都使用的是MySQL數據庫。所以,市場上也有很大一部分的MySQL DBA的需求。Oracle自然就不用說了,關系型數據庫中的老大,大部分有實力的公司使用的都是Oracle或者DB2與MySQL的結合。如果都使用Oracle,則成本太高,使用DB2一般都能享受到IBM提供的一條龍服務,從服務器到數據庫再到數據庫管理軟件,DB2大部分都應用于金融領域。SQL Server的使用者相對較少,主要因為微軟的軟件對平臺依賴性比較大,發展受到了限制。不過現在微軟在開發基于Linux平臺的SQL Server。如果只是想了解數據庫的簡單操作,那么可以從事數據庫的開發工作。

小公司數據量有限,使用SQL Server數據庫就可以滿足日常的需求,但SQL Server的可移植性差,且相比DB2和Oracle,數據處理功能較差。其實,公司使用什么數據庫需要看公司的性質,金融行業的公司或大企業、巨型企業、銀行等肯定首選DB2或Oracle,一般不會使用其他數據庫。因為這類公司數據量大,日數據量可達到過億條,每日要處理如此龐大的數據量,必須選擇DB2或Oracle。對于普通民營小公司,待處理數據量有限,使用SQL Server也完全能夠滿足需求。

有關待遇方面,可以看看獵聘網給出的對DBA的薪資:

 

總體而言,在有工作經驗的情況下,在上海、北京這些一線城市中,最低的工資水平都可以達到1萬元/月以上,二線城市在7000元/月左右,具體月薪,因人而異(備注:以上工資標準為2016年市場行情)。

 

 

2數據庫程序員有哪些可供選擇的職業發展道路?

 

一般來說,可供數據庫程序員選擇的職業發展道路有以下幾個:數據庫開發轉DBA,DBA升項目經理,DBA升公司技術總監,轉行做技術銷售,轉到大數據上,轉到云計算上,轉到數據庫架構師上。

 

3當企業在招聘時,對數據庫程序員通常有何要求?

 

下面來看看獵聘網給出的對Oracle DBA的招聘職位JD(Job Description,工作說明)。

崗位職責:

1)承擔數據庫邏輯結構設計、歷史數據歸檔管理、數據庫安裝、調測、調優、日常維護、備份及恢復。

2)性能優化和數據庫配置管理。

3)產品性能測試、分析和推動改善。

4)數據庫技術支持。

5)數據架構研究工作。

職位要求:

1)具有3年以上的主流數據庫開發經驗,1年以上大型項目數據庫架構設計及管理經驗。

2)精通PostgreSQL數據庫,熟悉Oracle、MySQL、SQL Server等主流數據庫,熟悉數據存儲、性能優化、數據挖掘及數據同步技術。

3)精通存儲過程、函數。

4)具備通用數據庫訪問層邏輯代碼封裝能力。

5)精通數據建模技術,熟悉各種數據集成和數據遷移技術。

6)熟悉Linux/UNIX操作系統,具備TB級數據處理經驗。

7)有OCP證書者優先。

8)具備良好的抽象思維,能理性地做出技術決策,具有風險控制意識。

下面再看看第二家公司的招聘MySQL職位JD。

工作職責:

1)負責線上、線下數據庫環境的建設、遷移、維護。

2)負責數據庫日常運行監控和性能調優。

3)負責預研新的數據庫技術適應業務增長的需求。

4)建立數據庫操作標準,開發數據庫相關工具。

5)負責數據庫方面技術難題的攻關。

崗位要求:

1)計算機及相關專業本科及以上學歷,有大型互聯網公司工作經驗者優先。

2)5年以上分布式MySQL數據庫系統的工作經驗,精通/熟悉MySQL數據庫的運行機制和體系架構。

3)精通/熟悉MySQL性能優化與調整,有大型分布式MySQL數據庫系統的工作經驗者優先。

4)較強基于RDBMS底層的代碼的優化和Debug經驗。

5)對數據庫系統中間件的開發,以及分布式環節運維工具有經驗。

6)了解主流分布式存儲產品,如Redis、Hbase、MongoDB等產品,并有應用、開發、運維等經驗。

7)了解主流數據庫,并對數據庫安全有很強的經驗。

8)有良好的溝通協調能力,有責任心,思維邏輯性強。

對DBA而言,掌握數據庫的基本知識是必不可少的。從數據庫的操作角度而言,SQL語句才是基礎中的基礎。DBA 一方面要根據需求在數據庫中實現某些功能,另一方面要指導非數據庫專業人士在數據庫中完成他們想要實現的功能,所以,關于數據庫中很多細節性的東西都需要DBA去掌握。

另外,需要了解數據庫架構方面的知識,掌握SQL底層的一些知識。例如,一般學過數據庫的人都知道索引對提高查詢性能十分重要,但卻不知道過多的索引也會給數據的處理帶來負擔。如果不了解索引的內部實現機制以及SQL使用索引的原理,那么就無法合理地創建索引。

在實現了用戶的需求后,接下來的工作就是維護。再好的數據庫架構,也需要經常被維護和保養。例如,原來很有效的索引因為索引碎片的增多,讀取的性能就會下降;因為業務的變化,有的索引被刪除了,那么如何保證重要的數據不會丟失,敏感的數據不會被不該訪問的人訪問。這一系列的問題,除了要調查、分析,并制訂出一套完整的方案外,還需要相關的知識來實施這套方案。日常維護的過程中會遇到非常多的問題,這些問題除了SQL的問題外,很多是跟系統或者網絡相關的,甚至是程序中出現的問題需要調試。所以,對于一名優秀的DBA而言,操作系統、計算機網絡與通信、程序設計語言等相關知識都需要有所涉獵。

為了管理好數據庫,特別是管理好多臺服務器,DBA有時也需要編寫工具來輔助完成任務。所以,懂Shell或Python也是必不可少的。

通過上面的分析,可以得出DBA需要的技能如下:

1)數據庫知識(熟練掌握),包括SQL語言、備份、恢復、管理、數據庫結構知識、數據庫運行原理。

2)至少熟練掌握一種數據庫,了解其他數據庫(有一定應用能力)。很少有不與其他類型數據庫交互的數據庫,如果只熟練掌握一種數據庫,那么當需要與其他數據庫交互時,就會無從下手。

3)綜合能力(有一定的應用能力)。有一定的程序設計能力,包括操作系統、網絡與安全等知識。

 

4數據庫程序員的日常工作是什么?

 

從DBA的角度而言,DBA的工作職責基本包含以下幾點:

l  每日監控數據庫以保證其可用性。

l  收集系統統計和性能信息,以便做定向分析。

l  配置和調整數據庫實例,以便可以在應用程序特定要求下達到最佳性能。

l  分析和管理數據庫安全性。控制和監視用戶對數據庫的訪問,必要時需要開啟數據庫的審計功能。

l  制定備份恢復策略,保證備份的可用性。

l  升級RDBMS軟件,在必要時使用補丁。

l  安裝、測試和評估Oracle新的相關產品。

l  設計數據庫表結構。

l  創建、配置和設計新的數據庫實例。

l  診斷,故障檢測和解決任何數據庫相關問題。在有必要時,需聯系Oracle支持人員以便使問題得到解決。

            l  確保監聽程序正常運行。

           l  與系統管理員一起工作,保證系統的高可用。

DBA的工作內容包含以下幾點:

1.實時監控數據庫告警日志

對于DBA來說,實時地監控數據庫的告警日志是必須進行的工作,監控并且應該根據不同的告警級別,發送不同級別的告警信息(通過郵件、短信),這有助于及時了解數據庫的變化與異常,及時響應并介入處理。

2.實時監控數據庫的重要統計信息和等待事件

實時監控對于數據庫的運行至關重要。要高度關注那些能夠代表數據庫重要變化的統計信息,并且據此發送告警信息。監控哪些統計信息應當根據不同的環境來區別對待,對于單機、RAC環境等各不   相同。

3.部署自動的AWR報告生成機制

每天要檢查前一天的AWR報告(AWR報告是Oracle 10g下提供的一種性能收集和分析工具,它能提供一個時間段內整個系統資源使用情況的報告,通過這個報告,就可以了解一個系統的整體運行情況,這就像一個人的全面的體檢報告),熟悉數據庫的運行狀況,做到對數據庫了如指掌。

4.每天至少了解或熟悉一個Top SQL

根據AWR報告,每天至少了解或熟悉一個Top SQL,能優化的要提出優化和調整建議。一個DBA應當對穩定系統中的SQL非常熟悉和了解,這樣才可能在系統出現性能問題時快速地作出判斷和響應。

5.部署完善的監控系統,并對重要信息進行采樣

DBA應該對數據庫部署完善的監控系統,并對重要信息進行采樣,能夠實時或定期生成數據庫重要指標的曲線圖,展現數據庫的運行趨勢。

6.全面深入地了解應用架構

對于一名DBA而言,一定要深入了解應用。在數據庫本身變得更加自動化和簡化之后,未來的DBA應該不斷走向前端,加深對于應用的了解,從應用角度對數據庫及全局進行把握和優化。

7.撰寫系統架構、現狀、調整備忘錄

根據對數據庫的研究和了解,不斷記錄數據庫的狀況,撰寫數據庫架構、現狀及調整備忘錄,不放過任何可能的優化與改進的機會。

當然,DBA的工作內容遠不止上面列出的這幾點,像數據庫安裝、數據庫備份、數據庫恢復等都屬于DBA的工作內容,這里不再詳述。

 

5要想成為一名出色的數據庫程序員,需要掌握哪些必備的知識?

 

數據庫應用可以分為數據庫開發、數據庫管理、數據庫優化、數據庫設計等,要根據自己的工作性質來選擇性地學習。從宏觀角度來說,需要了解數據庫有哪些功能,數據庫應用可以如何分類,并且要知道哪些是重點知識。如果你是一個數據庫開發人員,那么你就應該首先了解SQL和PL/SQL的編寫,而不是數據庫的備份與恢復。數據庫開發要求開發人員能利用SQL完成數據庫的增加、刪除、修改、查詢的基本操作,能用PL/SQL完成各類邏輯的實現。

相比數據庫開發來說,數據庫管理人員的人數需求在IT市場要少得多。這是由工作性質決定的。無論生產還是測試環境,搭建數據庫都不可能非常頻繁。如果數據崩潰需要恢復、數據需要遷移、緊急故障需要處理的情況頻繁出現,那么這個企業基本上也就無法正常運營下去了。但是一旦出現問題,管理人員無法及時恢復故障,將會受到來自各方面的指責,壓力非常大。和開發人員相比,管理人員不需要每時每刻地忙碌著,但是卻要時刻注意充電,提升自己的應急處理能力,還需要時刻對系統進行健康檢查,以防不測。此外,雖然開發在邏輯思維方面的要求要高于管理,但是責任和壓力卻遠沒有管理這么大。數據庫管理人員能完成數據庫的安裝、部署、參數調試、備份恢復、數據遷移等系統相關的工作,能完成分配用戶、控制權限、表空間劃分等管理相關工作:能進行故障定位、問題分析等數據庫診斷修復相關工作。

不少企業沒有設置專門的數據庫優化崗位,它可能被融入資深開發、資深管理和資深設計人員的技能之中。對于有這樣角色的企業來說,場景可能是這樣的:生產環境運行緩慢,數據庫管理人員通過跟蹤診斷,查出問題所在,原來是系列SQL運行緩慢導致的整個數據庫性能低下。這個時候對于數據庫管理人員來說,他的工作結束了,然后優化人員介入,利用自己的知識優化這些SQL。在沒有專門角色的場景下,可能是這個管理人員有著豐富的技能,他優化了這些SQL,也可能是資深開發人員或者是資深設計人員優化了這些SQL。但是從工作職責劃分、從更專業的角度來說,應該設置專職人員。數據庫優化所需要的人員是最難估算的,或許很多,或許很少,甚至沒有,但是卻是最重要的技能之一。數據庫優化能在深入了解數據庫的運行原理的基礎上,利用各類工具及手段發現并解決數據庫存在的性能問題,從而提升數據庫運行效率,這個說著輕巧,其實很不容易。

數據庫設計需要掌握的知識點最多,從事數據庫設計是很不容易的,這是屬于核心崗位的位置,少數人的規劃和部署決定了產品最終的質量和生命力。從市場需求來說,從事設計的人員最少。一般來說,一個應屆畢業生在相關開發、管理崗位努力工作兩年后,都可以把開發及管理工作做得比較出色。要把優化工作做到得心應手應該至少要3年以上。要想從事設計相關工作,一般需要5年以上的工作經驗。數據庫設計需要深刻理解業務需求和數據庫原理,合理高效地完成數據庫模型的建設,設計出各類表及索引等數據庫對象,讓后續應用開發可以高效穩定。

另外,在就業的時候很多人眼高手低,一畢業就想從事設計及優化相關工作,結果碰了一鼻子灰找不到工作,因為企業根本不給你這個機會。也有人一個勁地想做數據庫管理工作,但是由于管理相關的崗位比較少,結果成功的人寥寥無幾。很多時候當興趣和工作不匹配時,不要強求,要耐心找機會。例如,掌握SQL開發技巧后,可以匹配到很多適合自己的崗位,輕易地獲取工作機會,而精通SQL及PL/SQL開發技巧,對管理優化和設計都是非常有幫助的。

剛畢業從事數據庫開發相關工作,后續有機會再從事管理相關工作,期間兼顧優化相關的技能學習,主動承擔起優化的任務,爭取成為一個兼職或者專職的優化人員。最后,隨著業務的熟悉,水到渠成的從事數據庫設計相關工作。當然,大家千萬不要誤認為設計就一定比管理好,管理就一定強過開發,市場的供需決定了人員的比例,但是各個崗位都可以有出色的專家,最完美的還是在自己感興趣的領域中大展手腳。

要想成為一名出色的DBA,需要掌握的知識非常多,尤其現今的很多企業對DBA的要求極高,一般都是要求熟練掌握一種數據庫,同時熟悉其他數據庫。下圖展示了一名優秀的DBA需要掌握的一些基本內容。

 

對于這些內容,可以從一些博客或著名網站去學習,如作者的博客、itpub論壇、Oracle官方網站等。一定要學會對Oracle官方文檔的搜索。工作環境沒有外網的讀者可以先在有外網的環境下去編者的云盤下載離線的官方文檔。在Oracle學習初期可以利用編者制作好的CHM格式的官方幫助文檔進行全文搜索。另外,編者在個人云盤里分享了很多的學習資料,包括數據庫、Java等其他資料,讀者可以有選擇性地下載需要的學習資料。所以,總體來說,獲取Oracle知識的可靠途徑包括官方文檔(Concepts部分需要反復閱讀)、好的培訓機構、購買相關書籍、閱讀博客和公眾號、請教公司前輩、做實驗摸索總結等。

接下來將業內名人的一些話送給大家:①勤奮、堅持,這兩點非常重要;②在看不清方向的時候,低下頭來把手中的工作做好;③向他人學習,向聰明人學習,借鑒成功者、同行者的經驗非常重要;④敞開心胸,平淡看得失;⑤在正確的時間做正確的事;⑥行動有時候比思想更重要。

 

6各類數據庫求職及市場使用情況

 

先看一組DB-Engines(該網站統計全球數據庫的排行榜,網址為https://db-engines.com/en/ranking)發布的2017年8月份的數據庫排名數據,前10名排名情況如下圖所示。

 

在上圖中,Oracle、MySQL和Microsoft SQL Server仍占據前三名,Oracle雖然排名第一,但得分卻呈下降趨勢,與上月相比少了7.00,與去年同期相比少了59.85。第二名的MySQL得分也有所下降,與去年同期相比少了16.73,與上月相比下降8.81。第三名的Microsoft SQL Server得分較上月下降了0.52,與去年同期相比,得分有比較高的提升。此外,PostgreSQL數據庫排名也有所上升趨勢。

下圖是每個數據庫的變化趨勢。


 

可以看到,前3名一直保持著遠高于其他數據庫的地位。下圖是前3名(Oracle、MySQL和Microsoft SQL Server)數據庫的排名詳圖。

 

可以看到,第二名的MySQL和第三名的Microsoft SQL Server已經越來越接近第一名的Oracle,說不定在下一次排名發布時,就能看到不一樣的三甲排名。

DB-Engines排名的數據依據于以下幾個不同的因素:

            l  Google以及Bing搜索引擎的關鍵字搜索數量。

            l  Google Trends的搜索數量。

            l  Indeed網站中的職位搜索量。

            l  LinkedIn中提到關鍵字的個人資料數。

           l  Stackoverflow上相關的問題和關注者數量。

需要注意的是,這份榜單分析旨在為數據庫相關從業人員提供一個技術方向的參考,其中涉及的排名情況并非基于產品的技術先進程度或市場占有率等因素。無論排名先后,選擇適合與企業業務需求相匹配的技術,才是最重要的。

目前對于市場上數據庫的求職,主要以Oracle和MySQL為主。對于NoSQL的要求,一般都是包含在Oracle或MySQL之內的,要求精通Oracle或MySQL,熟悉一種NoSQL數據庫。Oracle主要在傳統行業招聘,而MySQL主要在互聯網行業招聘。

長沙尚學堂—IT行業資深教學品牌,IT軟件工程師的培養搖籃!現:Java開發培訓,Python,大數據培訓開班進行中

 

分享:0
開班計劃

試聽申請表

全程面授,不高薪都難

報名成功后,尚學堂工作人員將在24小時內與您聯系

熱門文章
視頻下載
猜你喜歡
海岛奇兵试玩