一般意義上的數(shù)據(jù)庫(kù)管理員是一個(gè)負(fù)責(zé)管理和維護(hù)數(shù)據(jù)庫(kù)服務(wù)器的人,數(shù)據(jù)庫(kù)管理員負(fù)責(zé)全面管理和控制數(shù)據(jù)庫(kù)系統(tǒng),包括數(shù)據(jù)庫(kù)的安裝、監(jiān)控、備份、恢復(fù)等基本工作。數(shù)據(jù)庫(kù)管理員的主要職責(zé)有以下幾個(gè)方面:
設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì),包括字段、表和關(guān)鍵字段;資源在輔助存儲(chǔ)設(shè)備上是怎樣使用的,怎樣增加和刪除文件及記錄,以及怎樣發(fā)現(xiàn)和補(bǔ)救損失。
2.監(jiān)視監(jiān)控?cái)?shù)據(jù)庫(kù)的警告日志,定期做備份刪除。監(jiān)控?cái)?shù)據(jù)庫(kù)的日常會(huì)話情況。碎片、剩余表空間監(jiān)控,及時(shí)了解表空間的擴(kuò)展情況、以及剩余空間分布情況。監(jiān)視對(duì)象的修改。定期列出所有變化的對(duì)象安裝和升級(jí)數(shù)據(jù)庫(kù)服務(wù)器(如Oracle、MicrosoftSQLserver),以及應(yīng)用程序工具。數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)存儲(chǔ)方案,并制定未來(lái)的存儲(chǔ)需求計(jì)劃。制定數(shù)據(jù)庫(kù)備份計(jì)劃,災(zāi)難出現(xiàn)時(shí)對(duì)數(shù)據(jù)庫(kù)信息進(jìn)行恢復(fù)。維護(hù)適當(dāng)介質(zhì)上的存檔或者備份數(shù)據(jù)。備份和恢復(fù)數(shù)據(jù)庫(kù)。聯(lián)系數(shù)據(jù)庫(kù)系統(tǒng)的生產(chǎn)廠商,跟蹤技術(shù)信息。
3.備份對(duì)數(shù)據(jù)庫(kù)的備份監(jiān)控和管理數(shù)據(jù)庫(kù)的備份至關(guān)重要,對(duì)數(shù)據(jù)庫(kù)的備份策略要根據(jù)實(shí)際要求進(jìn)行更改,數(shù)據(jù)的日常備份情況進(jìn)行監(jiān)控。
4.修改密碼:規(guī)范數(shù)據(jù)庫(kù)用戶的管理定期對(duì)管理員等重要用戶密碼進(jìn)行修改。對(duì)于每一個(gè)項(xiàng)目,應(yīng)該建立一個(gè)用戶。DBA應(yīng)該和相應(yīng)的項(xiàng)目管理人員或者是程序員溝通,確定怎樣建立相應(yīng)的數(shù)據(jù)庫(kù)底層模型,最后由DBA統(tǒng)一管理,建立和維護(hù)。任何數(shù)據(jù)庫(kù)對(duì)象的更改,應(yīng)該由DBA根據(jù)需求來(lái)操作。
5.SQL語(yǔ)句:對(duì)SQL語(yǔ)句的書寫規(guī)范的要求一個(gè)SQL語(yǔ)句,如果寫得不理想,對(duì)數(shù)據(jù)庫(kù)的影響是很大的。所以,每一個(gè)程序員或相應(yīng)的工作人員在寫相應(yīng)的SQL語(yǔ)句時(shí),應(yīng)該嚴(yán)格按照《SQL書寫規(guī)范》一文,最后要有DBA檢查才可以正式運(yùn)行。
6.最終用戶服務(wù)和協(xié)調(diào):數(shù)據(jù)庫(kù)管理員規(guī)定用戶訪問(wèn)權(quán)限和為不同用戶組分配資源。如果不同用戶之間互相抵觸,數(shù)據(jù)庫(kù)管理員應(yīng)該能夠協(xié)調(diào)用戶以最優(yōu)化安排。
7.數(shù)據(jù)庫(kù)安全:數(shù)據(jù)庫(kù)管理員能夠?yàn)椴煌臄?shù)據(jù)庫(kù)管理系統(tǒng)用戶規(guī)定不同的訪問(wèn)權(quán)限,以保護(hù)數(shù)據(jù)庫(kù)不被未經(jīng)授權(quán)的訪問(wèn)和破壞。例如,允許一類用戶只能檢索數(shù)據(jù),而另一類用戶可能擁有更新數(shù)據(jù)和刪除記錄的權(quán)限。
但是廣義上的DBA職責(zé)比這個(gè)大得多,需要覆蓋產(chǎn)品從需求設(shè)計(jì)、測(cè)試到交付上線的整個(gè)生命周期,在此過(guò)程中不僅要負(fù)責(zé)數(shù)據(jù)庫(kù)管理系統(tǒng)的搭建和運(yùn)維,更要參與到前期的數(shù)據(jù)庫(kù)設(shè)計(jì),中期的數(shù)據(jù)庫(kù)測(cè)試和后期的數(shù)據(jù)庫(kù)容量管理和性能優(yōu)化。
對(duì)于初創(chuàng)公司,DBA的工作可能由運(yùn)維工程師來(lái)兼任,從申請(qǐng)域名開(kāi)始,到服務(wù)器上架,配置網(wǎng)絡(luò)設(shè)備,部署操作系統(tǒng),安裝數(shù)據(jù)庫(kù),設(shè)計(jì)和部署監(jiān)控,防止漏洞和攻擊等等。而大型公司對(duì)DBA工作的要求越來(lái)越高,以下從各個(gè)維度來(lái)看DBA工作的職責(zé)。
產(chǎn)品生命周期維度
DBA負(fù)責(zé)了業(yè)務(wù)數(shù)據(jù)庫(kù)從設(shè)計(jì)、測(cè)試到部署交付的全生命周期管理,各個(gè)階段的職責(zé)包括:
1. 產(chǎn)品發(fā)布前
這個(gè)階段DBA的職責(zé)是數(shù)據(jù)庫(kù)準(zhǔn)入,主要包括:
1)產(chǎn)品的業(yè)務(wù)熟悉;
2)產(chǎn)品數(shù)據(jù)庫(kù)設(shè)計(jì)評(píng)審:包括架構(gòu)的合理性評(píng)估,存儲(chǔ)容量和性能是否滿足需求,是否需要緩存,是否需要冗余備份等,同時(shí)需要提供數(shù)據(jù)庫(kù)schema設(shè)計(jì)的合理性建議以使產(chǎn)品能夠滿足上線發(fā)布并穩(wěn)定運(yùn)行的基本要求;
3)資源評(píng)估,包括所需的服務(wù)器資源、網(wǎng)絡(luò)資源以及資源的分布等,同時(shí)把關(guān)產(chǎn)品對(duì)資源預(yù)算申請(qǐng)的合理性,控制服務(wù)成本;
4)資源就位,將申請(qǐng)的服務(wù)器及基礎(chǔ)環(huán)境/域名準(zhǔn)備就位。
2. 產(chǎn)品發(fā)布
這個(gè)階段DBA負(fù)責(zé)數(shù)據(jù)庫(kù)發(fā)布的具體工作,將具體的數(shù)據(jù)庫(kù)安裝部署和初始化完成后并對(duì)外提供服務(wù)。對(duì)于已在線數(shù)據(jù)庫(kù)的升級(jí)也屬于發(fā)布范疇,這個(gè)時(shí)候的產(chǎn)品發(fā)布一般要保障在線發(fā)布,在不中斷對(duì)外服務(wù)的情況下完成數(shù)據(jù)庫(kù)的升級(jí)。對(duì)于大型復(fù)雜的變更也存在中止服務(wù)發(fā)布完成后再重新提供服務(wù)的情況,但這種情況需要DBA通過(guò)盡可能的技術(shù)手段來(lái)避免。
3. 產(chǎn)品運(yùn)行維護(hù)
這個(gè)階段的工作重點(diǎn)包括:
1)監(jiān)控:對(duì)數(shù)據(jù)庫(kù)服務(wù)運(yùn)行的狀態(tài)進(jìn)行實(shí)時(shí)的監(jiān)控,包括數(shù)據(jù)庫(kù)會(huì)話、數(shù)據(jù)庫(kù)日志、數(shù)據(jù)文件碎片、表空間監(jiān)控、用戶訪問(wèn)監(jiān)控等,隨時(shí)發(fā)現(xiàn)數(shù)據(jù)庫(kù)服務(wù)的運(yùn)行異常和資源消耗情況;輸出重要的日常數(shù)據(jù)庫(kù)服務(wù)運(yùn)行報(bào)表以評(píng)估數(shù)據(jù)庫(kù)服務(wù)整體運(yùn)行狀況,發(fā)現(xiàn)數(shù)據(jù)庫(kù)隱患;
2)備份:制定和實(shí)施數(shù)據(jù)庫(kù)備份計(jì)劃,災(zāi)難出現(xiàn)時(shí)對(duì)數(shù)據(jù)庫(kù)信息進(jìn)行恢復(fù),維護(hù)適當(dāng)介質(zhì)上的存檔或者備份數(shù)據(jù)。對(duì)數(shù)據(jù)庫(kù)的備份策略要根據(jù)實(shí)際要求進(jìn)行更改,數(shù)據(jù)的日常備份情況進(jìn)行監(jiān)控。
3)安全審計(jì):為不同的數(shù)據(jù)庫(kù)管理系統(tǒng)用戶規(guī)定不同的訪問(wèn)權(quán)限,以保護(hù)數(shù)據(jù)庫(kù)不被未經(jīng)授權(quán)的訪問(wèn)和破壞。例如,允許一類用戶只能檢索數(shù)據(jù),而另一類用戶可能擁有更新數(shù)據(jù)和刪除記錄的權(quán)限。
4)故障處理:對(duì)數(shù)據(jù)庫(kù)服務(wù)出現(xiàn)的任何異常進(jìn)行及時(shí)處理,盡可能避免問(wèn)題的擴(kuò)大化甚至中止服務(wù)。這之前DBA需要針對(duì)各類服務(wù)異常,如機(jī)房/網(wǎng)絡(luò)故障、程序bug等問(wèn)題制定處理的預(yù)案,問(wèn)題出現(xiàn)時(shí)可以自動(dòng)或手動(dòng)執(zhí)行預(yù)案達(dá)到止損的目的。
5)容量管理:包括數(shù)據(jù)庫(kù)規(guī)模擴(kuò)張后的資源評(píng)估、擴(kuò)容、機(jī)房遷移、流量調(diào)度等規(guī)劃和具體實(shí)施。
4. 數(shù)據(jù)庫(kù)性能優(yōu)化
產(chǎn)品對(duì)外提供服務(wù)最重要的一點(diǎn)是用戶體驗(yàn),用戶體驗(yàn)中非常重要的是產(chǎn)品的可用性和響應(yīng)速度。而如何用最合理的資源支持產(chǎn)品提供高可用和高速度的用戶體驗(yàn),這也是DBA的重要職責(zé)。
產(chǎn)品的整個(gè)生命周期里數(shù)據(jù)庫(kù)管理員的職責(zé)重要而廣泛,這催生了各個(gè)縱向的運(yùn)維技術(shù)方向,凡是關(guān)系到數(shù)據(jù)庫(kù)質(zhì)量、效率、成本、安全等方面的工作,及涉及到的技術(shù)、組件,主要包括:
數(shù)據(jù)庫(kù)監(jiān)控技術(shù):包括監(jiān)控平臺(tái)的研發(fā)、應(yīng)用,服務(wù)監(jiān)控準(zhǔn)確性、實(shí)時(shí)性、全面性的保障。
數(shù)據(jù)庫(kù)故障管理:包括服務(wù)的故障預(yù)案設(shè)計(jì),預(yù)案的自動(dòng)化執(zhí)行,故障的總結(jié)并反饋到產(chǎn)品/系統(tǒng)的設(shè)計(jì)層面進(jìn)行優(yōu)化以提高產(chǎn)品的穩(wěn)定性。
數(shù)據(jù)庫(kù)容量管理:測(cè)量服務(wù)的容量,規(guī)劃服務(wù)的機(jī)房建設(shè),擴(kuò)容、遷移等工作。
數(shù)據(jù)庫(kù)性能優(yōu)化:從各個(gè)方向,包括SQL優(yōu)化、參數(shù)優(yōu)化、應(yīng)用優(yōu)化、客戶端優(yōu)化等,提高數(shù)據(jù)庫(kù)的性能和響應(yīng)速度,改善用戶體驗(yàn)。
數(shù)據(jù)庫(kù)安全保障:包括數(shù)據(jù)庫(kù)的訪問(wèn)安全、防攻擊、權(quán)限控制等。
數(shù)據(jù)庫(kù)自動(dòng)部署:部署平臺(tái)/工具的研發(fā),及平臺(tái)/工具的使用,做到安全、高效的發(fā)布服務(wù)。
數(shù)據(jù)庫(kù)集群管理:包括數(shù)據(jù)庫(kù)的服務(wù)器管理、分布式集群管理等。
數(shù)據(jù)庫(kù)模型設(shè)計(jì):包括數(shù)據(jù)庫(kù)邏輯和物理模型的設(shè)計(jì),如何實(shí)現(xiàn)性能最優(yōu),架構(gòu)可擴(kuò)展,服務(wù)可運(yùn)維等。
數(shù)據(jù)庫(kù)管理員以技術(shù)為基礎(chǔ),通過(guò)技術(shù)保障數(shù)據(jù)庫(kù)提供更高質(zhì)量的服務(wù)。DBA工作的職責(zé)及在業(yè)務(wù)中的位置決定了DBA需要具備更加廣博的知識(shí)和深入的技術(shù)能力。在數(shù)據(jù)庫(kù)環(huán)境的管理與維護(hù)中,技術(shù)任務(wù)可歸結(jié)成許多不同的分類。下面列出了一名DBA應(yīng)掌握的一些技術(shù)(排名不分先后)。
1.理解數(shù)據(jù)備份/恢復(fù)與災(zāi)難恢復(fù)
恢復(fù)已損壞的數(shù)據(jù)庫(kù)是每一個(gè)DBA應(yīng)掌握的最重要的技能。DBA需要完全理解數(shù)據(jù)庫(kù)所有可能的備份與恢復(fù)方法,以及不同備份方法與不同恢復(fù)策略的對(duì)應(yīng)關(guān)系。此外,DBA還需要與業(yè)務(wù)部門合作,一起確認(rèn)業(yè)務(wù)需求,明確用戶能夠容忍的數(shù)據(jù)丟失底線。此外,業(yè)務(wù)用戶還需要確定在系統(tǒng)故障情況下,他們的業(yè)務(wù)能夠維持多長(zhǎng)時(shí)間。理解這些需求可以幫助DBA開(kāi)發(fā)出一個(gè)滿足業(yè)務(wù)用戶要求的備份/恢復(fù)方法。一個(gè)優(yōu)秀的DBA要定期測(cè)試備份與恢復(fù)流程,保證他們有能力恢復(fù)業(yè)務(wù)數(shù)據(jù),滿足企業(yè)所規(guī)定的業(yè)務(wù)數(shù)據(jù)丟失與恢復(fù)要求。
2.工具集的使用
所謂工具集,指是的他們要有一組用于執(zhí)行不同DBA任務(wù)的腳本。這個(gè)工具集應(yīng)該包含不同的小代碼片段,它們可以快速診斷問(wèn)題或執(zhí)行一個(gè)特定的任務(wù)。這些工具腳本應(yīng)該按DBA的活動(dòng)類型歸類,如備份、索引維護(hù)、性能優(yōu)化、容量管理等。由于總是會(huì)執(zhí)行新任務(wù)、發(fā)現(xiàn)新問(wèn)題或找到其他人開(kāi)發(fā)的好用腳本,因此一個(gè)優(yōu)秀的DBA會(huì)不斷地給這個(gè)工具集增加新腳本。此外,他還應(yīng)該了解網(wǎng)上哪里能夠找到一些免費(fèi)的工具和腳本。一個(gè)好的DBA知道什么時(shí)候可以利用其他人編寫的腳本,從而節(jié)省自己的時(shí)間和改進(jìn)自己的工具集。
3.知道如何快速尋找答案
數(shù)據(jù)庫(kù)每天會(huì)面臨各種各樣故障的挑戰(zhàn),從硬件到網(wǎng)絡(luò),從性能壓力到程序bug,DBA都要從容應(yīng)對(duì),一一排除。即使是數(shù)據(jù)庫(kù)大牛,也不可能是無(wú)所不知的,因此每個(gè)DBA一方面需要不斷修煉自己,積累操作系統(tǒng)、網(wǎng)絡(luò)、硬件、存儲(chǔ)系統(tǒng)、分布式計(jì)算等理論基礎(chǔ),另一方面還要有快速尋找新問(wèn)題解決方法的能力。如果一個(gè)數(shù)據(jù)庫(kù)實(shí)例不能按預(yù)期方式運(yùn)轉(zhuǎn),那么快速尋找新問(wèn)題的解決方法也是一個(gè)重要能力。一個(gè)好的DBA知道如何快速地在網(wǎng)上查找一個(gè)未知問(wèn)題的解決方法。此外,他們也可能已經(jīng)知道了一些非常不錯(cuò)的網(wǎng)站,也知道業(yè)界專家會(huì)提供一些好建議,同時(shí)知道什么時(shí)候應(yīng)該忽略一些不好的建議。你可能想象不到,確實(shí)有一些建議不值得參考。
4.知道如何監(jiān)控和優(yōu)化數(shù)據(jù)庫(kù)性能
對(duì)于任何數(shù)據(jù)庫(kù)產(chǎn)品,性能都尤其重要,它會(huì)直接影響產(chǎn)品的響應(yīng)速度和用戶體驗(yàn)。對(duì)于一個(gè)DBA來(lái)說(shuō),性能優(yōu)化一般需要占用50%的工作時(shí)間,因此DBA需要知道如何監(jiān)控和優(yōu)化數(shù)據(jù)性能。
以SQL Server舉例,性能是一個(gè)關(guān)鍵的問(wèn)題,因此DBA需要知道如何修復(fù)故障和監(jiān)控性能問(wèn)題。有許多第三方性能監(jiān)控工具可以幫助DBA優(yōu)化性能。如果DBA只使用第三方工具,而不會(huì)使用SQL Server自帶的原生工具來(lái)監(jiān)控性能,那么相信很快就會(huì)出現(xiàn)問(wèn)題。雖然使用第三方工具來(lái)監(jiān)控性能也很不錯(cuò),但是DBA一定要理解SQL自帶的一些原生工具,如SQL Server Profiler、Database Engine Tuning Advisor、Dynamic ManagementViews、系統(tǒng)/擴(kuò)展的存儲(chǔ)過(guò)程、Extended Events等。許多第三方工具實(shí)際上在使用這些底層的原生工具。因此,理解這些自帶的原生工具將有利于增強(qiáng)DBA使用第三方工具的經(jīng)驗(yàn)。
5.研究新版本
在技術(shù)領(lǐng)域中,沒(méi)有什么是一成不變的。每隔兩三年,主流數(shù)據(jù)庫(kù)廠商都會(huì)發(fā)布一個(gè)大版本的更新。DBA應(yīng)該緊跟新版本所作的修改,它們可能有許多變化方法,最好的方法是遲早介入這個(gè)過(guò)程。測(cè)試版開(kāi)放后馬上下載和安裝,盡快掌握第一手使用經(jīng)驗(yàn)。一名好的DBA總是走在學(xué)習(xí)排頭兵,總是會(huì)第一時(shí)間安裝和測(cè)試新版本。這樣他們就可以盡早理解新特性,然后提出一些合理的新建議,幫助組織更好地利用新版本數(shù)據(jù)庫(kù)。
6.理解代碼最佳實(shí)踐方法
DBA應(yīng)該了解如何編寫高效的代碼。有許多糟糕的編碼實(shí)踐方法會(huì)導(dǎo)致拙劣的性能。一名好的DBA要能夠理解和識(shí)別這些糟糕的編碼實(shí)踐方法,知道如何修改這些爛代碼,讓它們變成高效代碼。此外,他們還要記錄下寫代碼的最佳實(shí)踐方法,并且將這些實(shí)踐方法分享給其他人。
7.持續(xù)不斷地學(xué)習(xí)
數(shù)據(jù)庫(kù)及其組件涉及面非常廣。DBA很難理解一個(gè)技術(shù)的方方面面。DBA需要持續(xù)學(xué)習(xí)如何管理數(shù)據(jù)庫(kù)。這個(gè)學(xué)習(xí)過(guò)程有很多方法。其中之一就是參加正式培訓(xùn)。但是,并非人人都有這樣充裕的事件和金錢,也并非人人都能夠放下手頭工作專門出去參加正式的培訓(xùn)。但是,還有許多其他方法可以獲得培訓(xùn),而且大多數(shù)還是免費(fèi)的。一名好的DBA一定要訂閱一些定期發(fā)布數(shù)據(jù)庫(kù)新技巧和新文章的社區(qū)網(wǎng)站。此外,他還應(yīng)該加入一些用戶組織,可以在周末參加一些當(dāng)?shù)氐拿赓M(fèi)沙龍活動(dòng)。
8.數(shù)據(jù)庫(kù)安全性
安全性是一個(gè)熱門話題。DBA應(yīng)該完全掌握如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)的安全訪問(wèn)。他們應(yīng)該理解操作系統(tǒng)身份驗(yàn)證和數(shù)據(jù)庫(kù)身份驗(yàn)證的區(qū)別,以及它們各自的使用場(chǎng)合。他們應(yīng)該理解如何使用數(shù)據(jù)庫(kù)角色來(lái)管理不同類型用戶的安全配置。他們應(yīng)該理解連接數(shù)據(jù)庫(kù)的端口與協(xié)議。此外,他們還應(yīng)該理解如何加密整個(gè)數(shù)據(jù)庫(kù),或者加密一個(gè)數(shù)據(jù)庫(kù)中一個(gè)表的某一個(gè)字段,同時(shí)理解關(guān)于加密數(shù)據(jù)的各種問(wèn)題。
9.數(shù)據(jù)庫(kù)設(shè)計(jì)
決定數(shù)據(jù)庫(kù)性能的一個(gè)關(guān)鍵問(wèn)題是數(shù)據(jù)庫(kù)設(shè)計(jì)。DBA需要理解關(guān)于數(shù)據(jù)庫(kù)設(shè)計(jì)的各個(gè)方面。他們要能夠理解設(shè)計(jì)好壞的區(qū)別。他們需要理解為什么使用正確的外鍵約束、主鍵、檢查約束和使用數(shù)據(jù)類型能夠保持?jǐn)?shù)據(jù)庫(kù)的數(shù)據(jù)完整性和實(shí)現(xiàn)高效的數(shù)據(jù)查詢與更新。
10.索引設(shè)計(jì)
數(shù)據(jù)庫(kù)索引是提高應(yīng)用程序檢索和更新數(shù)據(jù)速度的重要環(huán)節(jié)。DBA需要知道索引的工作原理。他們應(yīng)該知道聚簇索引和非聚簇索引的區(qū)別,知道這些索引的物理存儲(chǔ)方式。DBA應(yīng)該知道如何在執(zhí)行計(jì)劃中使用這些索引。他們應(yīng)該理解如何找到索引的使用統(tǒng)計(jì)、理解索引碎片及如何發(fā)現(xiàn)丟失的索引。他們應(yīng)該知道如何維護(hù)索引,以及索引統(tǒng)計(jì)信息對(duì)于查詢引擎的重要作用。
11.容量監(jiān)控與規(guī)劃
數(shù)據(jù)庫(kù)往往要使用大量的資源,包括CPU、內(nèi)存、I/O及磁盤空間。DBA應(yīng)該理解如何監(jiān)控?cái)?shù)據(jù)庫(kù)所需要的不同主機(jī)資源的用量。他們應(yīng)該能夠理解這些資源在不同時(shí)間的使用情況,以及利用歷史使用數(shù)據(jù)來(lái)規(guī)劃未來(lái)的容量需求。在監(jiān)控過(guò)程中,DBA應(yīng)該能夠預(yù)見(jiàn)到容量規(guī)劃會(huì)在將來(lái)什么時(shí)候出現(xiàn)問(wèn)題,然后采取必要的措施保持?jǐn)?shù)據(jù)庫(kù)不會(huì)因?yàn)槿萘肯拗贫霈F(xiàn)中斷。
12.數(shù)據(jù)庫(kù)許可證
不同的產(chǎn)品有許多不同的許可證授權(quán)方式。而且,同一款產(chǎn)品本身又有許多不同的版本。DBA應(yīng)該理解所負(fù)責(zé)的數(shù)據(jù)庫(kù)版本的不同授權(quán)模式。他們應(yīng)該能夠提供指導(dǎo)如何通過(guò)合理購(gòu)買授權(quán)來(lái)減少數(shù)據(jù)庫(kù)總擁有成本,以及如何合理利用授權(quán)方法來(lái)降低未來(lái)版本的升級(jí)成本。
13.盡可能實(shí)現(xiàn)自動(dòng)化
DBA每天都需要執(zhí)行許多的日常任務(wù)。其中一些任務(wù)需要每天執(zhí)行,而另一些則每周、每月或每年執(zhí)行。一名好的DBA需要理解如何高效地安排自己的時(shí)間。其中一種方法是建立工作流程,這些日常任務(wù)的自動(dòng)執(zhí)行。通過(guò)實(shí)現(xiàn)日常任務(wù)的自動(dòng)化執(zhí)行,DBA就可以用更多的時(shí)間去關(guān)注于數(shù)據(jù)庫(kù)環(huán)境管理中遇到的嚴(yán)重問(wèn)題。
DBA需要跟各種人員打交道,這些人員可能是銷售商、用戶、開(kāi)發(fā)人員或者管理人員。這說(shuō)明:DBA必須具有下面的個(gè)性特點(diǎn):
自信心:足夠的自信心能夠幫助DBA在重要緊急時(shí)刻果斷下決定,而不是不知所措地看著事故發(fā)生
好奇心:幾乎所有的數(shù)據(jù)庫(kù)系統(tǒng)都在不停地更新。但并不是所有的更新都有技術(shù)文檔。對(duì)于好的DBA來(lái)說(shuō),好奇心是必需的。沒(méi)有好奇心和求知欲的DBA總是等待有人告訴他們答案。而一個(gè)求知欲強(qiáng)的DBA將安裝最新版本的數(shù)據(jù)庫(kù)系統(tǒng),并立即開(kāi)始搜尋那些哪怕是細(xì)微的功能和性能上的差異和增強(qiáng),從而改進(jìn)自己的工作。應(yīng)試時(shí)一個(gè)必然問(wèn)及的問(wèn)題是:你手頭有哪些參考資料?你如何使用它們?毫無(wú)疑問(wèn),如果你只回答了數(shù)據(jù)庫(kù)的文檔,或者你甚至沒(méi)有讀過(guò)他們,你的"股票市值"將大大下降。好奇心會(huì)驅(qū)使DBA們理解數(shù)據(jù)字典(Data Dictionary)、管理工具(Tools)或者其他支持包(Packages)。
堅(jiān)韌的意志力和沉著的心態(tài):DBA常常會(huì)碰到棘手的問(wèn)題。尋找答案是一個(gè)需要堅(jiān)韌意志力、可以經(jīng)受摔打的個(gè)性特點(diǎn)。同時(shí)面對(duì)緊急情況時(shí)要能處亂不驚,保持平和的心態(tài)冷靜處理問(wèn)題。
自我驅(qū)動(dòng):自我驅(qū)動(dòng)對(duì)每個(gè)人都是很重要的,對(duì)DBA尤其如此。DBA要能想辦法使問(wèn)題出現(xiàn),而不是等待問(wèn)題的出現(xiàn)。自驅(qū)力強(qiáng)的DBA常常設(shè)法取得或者自己寫一些必要的腳本(Script)來(lái)監(jiān)控包括數(shù)據(jù)表大?。═able Size)、表空間使用(Tablespace Usage)等項(xiàng)目,這些項(xiàng)目如果被忽視,他們將遇到麻煩。應(yīng)試的時(shí)候DBA們常常被問(wèn)及在PL/SQL、SQL或者SQL*PLUS方面的經(jīng)驗(yàn),這些問(wèn)題將把你從從來(lái)沒(méi)有編寫過(guò)自己需要的腳本的那些DBA們區(qū)分開(kāi)。
良好的溝通能力、具有團(tuán)隊(duì)合作精神:DBA的工作需要跨部門、跨工種接觸很多工程師,善于溝通、團(tuán)隊(duì)協(xié)作能夠起到良好作用。很多時(shí)候,開(kāi)發(fā)者、管理者、用戶,他們會(huì)提出毫無(wú)道理的需求,DBA們需要老練地引導(dǎo)、修正它們的要求,說(shuō)服他們。
工作認(rèn)真細(xì)致,勤于思考:最后說(shuō)說(shuō)注意細(xì)節(jié),這種性格傾向非常重要。注意細(xì)節(jié)的DBA們衣著整潔,有自己的日程安排,在應(yīng)試前對(duì)應(yīng)聘的單位做過(guò)調(diào)查。注意細(xì)節(jié)的DBA們深入了解數(shù)據(jù)庫(kù)的內(nèi)核,并能理解視圖、表之間的關(guān)系。
時(shí)間管理能力:數(shù)據(jù)庫(kù)運(yùn)維的工作非常繁瑣,因此需要將碎片化的時(shí)間充分利用起來(lái)。
DBA的等級(jí)并不是很嚴(yán)格的。按照對(duì)數(shù)據(jù)庫(kù)的掌握情況,我簡(jiǎn)單地分成三個(gè)等級(jí):初級(jí)Primary、中級(jí)Intermediate和高級(jí)Senior。
初級(jí)DBA又稱為DBBS,是英文Database Baby Sitter的縮寫。初級(jí)DBA常常是兼職的,他們往往同時(shí)是程序員或者兼任其他的工作。初級(jí)DBA往往把個(gè)人簡(jiǎn)歷寫得很棒,參與了很多和數(shù)據(jù)庫(kù)有關(guān)的項(xiàng)目或工作。但是,這些項(xiàng)目或者工作往往是:第三方軟件供應(yīng)商已經(jīng)安裝并配置了數(shù)據(jù)庫(kù),他們只做一些監(jiān)控的工作。他們能處理一些簡(jiǎn)單的問(wèn)題,但大多數(shù)時(shí)候他們向應(yīng)用軟件供應(yīng)商求救。初級(jí)DBA更喜歡圖形化的數(shù)據(jù)庫(kù)管理或者監(jiān)控工具,他們喜歡Access這樣的桌面數(shù)據(jù)庫(kù)簡(jiǎn)單易用,并把這些小型數(shù)據(jù)庫(kù)的經(jīng)驗(yàn)簡(jiǎn)單地應(yīng)用到大型數(shù)據(jù)庫(kù)相關(guān)的工作中。
初級(jí)DBA是最好區(qū)分的。而中級(jí)DBA和高級(jí)DBA就不太好區(qū)分。他們的差別在于經(jīng)驗(yàn)的不同和個(gè)性特點(diǎn)、能力方面的差異。中級(jí)DBA比較多,他們可以勝任高級(jí)DBA的大部分工作,包括:
1、數(shù)據(jù)庫(kù)安裝;
2、數(shù)據(jù)庫(kù)配置和管理;
3、權(quán)限設(shè)置和安全管理;
4、監(jiān)控和性能調(diào)節(jié);
5、備份和恢復(fù);
6、解決一般的問(wèn)題;
中級(jí)DBA往往從業(yè)一年左右,熟悉某種操作系統(tǒng)環(huán)境下的數(shù)據(jù)庫(kù)。因?yàn)閷?duì)中級(jí)DBA來(lái)講,Windows NT和Unix是有很大差別的。中級(jí)DBA對(duì)SQL比較熟悉,他們自己購(gòu)買了幾本數(shù)據(jù)庫(kù)方面的書籍,并深入鉆研。中級(jí)DBA往往同時(shí)兼任數(shù)據(jù)庫(kù)程序員,他們的工作對(duì)性能、穩(wěn)定性、安全性的追求基本上不是很高,往往配合高級(jí)DBA做一些例行工作。
高級(jí)DBA在國(guó)內(nèi)是非常少的。他們能夠熟練閱讀數(shù)據(jù)庫(kù)方面的英文資料,并且都熟悉很多種操作平臺(tái)下的幾種大型數(shù)據(jù)庫(kù)。他們知道各種不同數(shù)據(jù)庫(kù)在不同環(huán)境下的優(yōu)勢(shì)和劣勢(shì),并能在數(shù)據(jù)庫(kù)平臺(tái)和數(shù)據(jù)庫(kù)環(huán)境的選擇方面做出決策。他們一般通曉系統(tǒng)架構(gòu)和數(shù)據(jù)庫(kù)設(shè)計(jì),并能對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種級(jí)別的優(yōu)化。高級(jí)DBA一般都配有助手,他們更偏向做決策和計(jì)劃。高級(jí)DBA往往在銀行業(yè)、保險(xiǎn)業(yè)、在線交易等對(duì)穩(wěn)定性、安全性、性能都要求比較高的關(guān)鍵業(yè)務(wù)處理領(lǐng)域大顯身手。
很多時(shí)候,是否取得數(shù)據(jù)庫(kù)專家認(rèn)證證書并不是很重要。很多數(shù)據(jù)庫(kù)廠商的培訓(xùn)只要你去了都會(huì)獲得證書。有很多的公司提供商業(yè)化的培訓(xùn),他們的服務(wù)質(zhì)量也有好有劣。所以證書并不是特別地有意義。
1. 薪酬競(jìng)爭(zhēng)力
1)影響因素:經(jīng)驗(yàn)和能力決定DBA的等級(jí),熟悉的數(shù)據(jù)庫(kù)系統(tǒng)決定DBA的領(lǐng)域,個(gè)性特點(diǎn)和潛力決定你的升值空間。
2)縱向?qū)Ρ龋篋BA作為專項(xiàng)領(lǐng)域的高質(zhì)量人才,薪酬競(jìng)爭(zhēng)力較高,市場(chǎng)需求旺盛,尤其是中高階DBA,往往緊缺程度高于軟件研發(fā)工程師。
3)第三方薪酬調(diào)查報(bào)告,僅供參考:
《2013年數(shù)據(jù)庫(kù)工程師薪酬調(diào)查報(bào)告》
《Database Administrator Salary》
2. 市場(chǎng)需求
1)數(shù)據(jù)庫(kù)運(yùn)維行業(yè)的市場(chǎng)價(jià)值:參考ITOM(IT Operation Management) 2013年的市場(chǎng)規(guī)模是190億美金
2)人員需求:由于業(yè)務(wù)規(guī)模較大,中大型公司比較緊缺中高階DBA,而初創(chuàng)公司由于其新生的業(yè)務(wù)特點(diǎn),比較緊缺初級(jí)和中級(jí)DBA。
數(shù)據(jù)庫(kù)作為整個(gè)系統(tǒng)的一部分,它的表現(xiàn)直接受服務(wù)器、操作系統(tǒng)、存儲(chǔ)、網(wǎng)絡(luò)、應(yīng)用程序中SQL語(yǔ)句的質(zhì)量、數(shù)據(jù)庫(kù)設(shè)計(jì)的質(zhì)量、以及其它諸多因素的影響,這些因素加在一起非常復(fù)雜,經(jīng)驗(yàn)起著非常重要的作用。因此一個(gè)好的DBA除了知識(shí)作為基礎(chǔ),經(jīng)驗(yàn)的多寡、見(jiàn)識(shí)的薄廣,往往決定了是否合格與優(yōu)秀。
優(yōu)秀的DBA不僅關(guān)心自己運(yùn)維的數(shù)據(jù)庫(kù)系統(tǒng)的原理和發(fā)展,而且緊跟業(yè)界數(shù)據(jù)庫(kù)前沿技術(shù),并關(guān)注數(shù)據(jù)庫(kù)領(lǐng)域的頂級(jí)會(huì)議。其中包括國(guó)際著名的數(shù)據(jù)庫(kù)三大會(huì)議SIGMOD、VLDB、ICDE,還有知名數(shù)據(jù)庫(kù)公司Percona主辦的Percona Live和Oracle主辦的Open World,以及國(guó)內(nèi)知名的DBA盛會(huì)中國(guó)數(shù)據(jù)庫(kù)技術(shù)大會(huì)(DTCC)等。
從另外一個(gè)角度說(shuō),DBA工作領(lǐng)域?qū)?shí)踐經(jīng)驗(yàn)和獨(dú)立工作能力要求較高,沒(méi)有經(jīng)過(guò)大量的動(dòng)手實(shí)踐是很難勝任DBA相關(guān)工作的。正是由于上述原因,其職場(chǎng)現(xiàn)狀是DBA職位不易進(jìn)入,而用人單位很難找到合適的從業(yè)人員,人員缺口非常大。
也正是由于上述原因,隨著工作年限的增長(zhǎng),DBA的經(jīng)驗(yàn)在增加,就像醫(yī)生一樣,其價(jià)值會(huì)越來(lái)越高,可以逐步成長(zhǎng)為資深DBA、系統(tǒng)架構(gòu)師、信息主管(CIO)等等,而不會(huì)出現(xiàn)許多軟件開(kāi)發(fā)從業(yè)人員在一定年齡后面臨的轉(zhuǎn)行問(wèn)題。
另外,從職業(yè)前景看,從事DBA有著更多的職場(chǎng)機(jī)遇。一般而言,系統(tǒng)中的軟硬件都是IBM、HP、Oracle等業(yè)界一流廠商提供的,在與廠商談判、合作、測(cè)試、實(shí)施、維護(hù)、優(yōu)化等等過(guò)程中,會(huì)產(chǎn)生許多極佳的職場(chǎng)機(jī)遇,這一點(diǎn)是從事開(kāi)發(fā)工作很難比擬的。
從DBA的工資統(tǒng)計(jì)數(shù)據(jù)看,隨著工作經(jīng)驗(yàn)的積累,DBA工資的增長(zhǎng)幅度會(huì)遠(yuǎn)大于其它的計(jì)算機(jī)方向。
從工作的穩(wěn)定性上看,系統(tǒng)的復(fù)雜性和經(jīng)驗(yàn)的重要性已經(jīng)決定了DBA職位的不可替代性。
從知識(shí)的積累、更新和替代角度看,數(shù)據(jù)庫(kù)的根基始終沒(méi)變,變的是不斷增強(qiáng)的功能和不斷擴(kuò)展的應(yīng)用范圍。因此,在不同時(shí)期所學(xué)的知識(shí)和獲得的經(jīng)驗(yàn)是疊加和累積的關(guān)系。
因此,DBA職業(yè)是一個(gè)高挑戰(zhàn)和高回報(bào)的職業(yè),有一定能力的和聰明的技術(shù)人員應(yīng)該挑戰(zhàn)自我,進(jìn)入這個(gè)被二十多年事實(shí)不斷證明的越來(lái)越有前景的職業(yè)。