解析數(shù)據(jù)庫(kù)管理員的角色是否已終結(jié)
數(shù)據(jù)庫(kù)管理員是數(shù)據(jù)庫(kù)中最為重要的角色之一,數(shù)據(jù)庫(kù)以來與數(shù)據(jù)庫(kù)管理員的管理,這樣數(shù)據(jù)庫(kù)才能夠最好的發(fā)揮其功效作用,然而,在過去幾年中,就開發(fā)人員如何在工作中和數(shù)據(jù)庫(kù)“共處”有了很多轉(zhuǎn)變。其結(jié)果之一是:數(shù)據(jù)庫(kù)管理員(DBA)和數(shù)據(jù)庫(kù)相關(guān)開發(fā)人員的職責(zé)發(fā)生了改變。那我們一起來看這些轉(zhuǎn)變是如何影響開發(fā)過程的。
轉(zhuǎn)變之前
在C/S年代,DBA的是系統(tǒng)管理員(專攻數(shù)據(jù)庫(kù)支持)和開發(fā)人員(創(chuàng)建各種視圖、存儲(chǔ)過程、函數(shù)等)的混合體。為了最佳性能,DBA必須知道如何優(yōu)化硬件和OS配置。為了最佳性能,DBA也需要有大量技巧,比如,表分區(qū)、建立/調(diào)整索引等。此外,DBA還要處理安全問題;DBA日常工作中最為普通的一件事是:創(chuàng)建一個(gè)有訪問限制的存儲(chǔ)過程A,把A提供給所需的應(yīng)用程序,并且要保持基礎(chǔ)表鎖定。
另一方面,開發(fā)人員一般完全受DBA支配。DBA有訪問數(shù)據(jù)庫(kù)的全部權(quán)限,DBA只給應(yīng)用程序或其他用戶授權(quán)應(yīng)有的權(quán)限。因?yàn)殚_發(fā)人員往往不善于數(shù)據(jù)庫(kù)設(shè)計(jì),所以DBA只允許開發(fā)人員模擬數(shù)據(jù)庫(kù)。此外,很多開發(fā)人員并不像DBA精通數(shù)據(jù)庫(kù),他們的SQL代碼性能往往不高,故DBA也限制開發(fā)人員運(yùn)行自定義的SQL語(yǔ)句。
然而,在很多公司/機(jī)構(gòu),這些差別和角色分工已經(jīng)不存在了。一些IT部門讓開發(fā)人員有完全訪問數(shù)據(jù)庫(kù)系統(tǒng)的權(quán)限;在其他案例中,開發(fā)人員基本上已等同DBA了。但是在大公司,這種勞動(dòng)分工一直都是非常普遍存在的。
有哪些轉(zhuǎn)變
開發(fā)框架和系統(tǒng)已是翻天覆地,所以開發(fā)人員很容易運(yùn)行數(shù)據(jù)庫(kù)相關(guān)代碼。各式各樣的開發(fā)系統(tǒng)推出(Visual Studio 2005),最終讓開發(fā)人員可以運(yùn)行參數(shù)化SQL代碼,而不再需要把SQL語(yǔ)句連接成字符串(這樣使得系統(tǒng)會(huì)遭受SQL注入攻擊)。同時(shí),借助像數(shù)據(jù)倉(cāng)庫(kù) /BI等系統(tǒng),開發(fā)人員可以創(chuàng)建自定義的SQL代碼。對(duì)于大多數(shù)目標(biāo)而已,由技術(shù)嫻熟的人員調(diào)整過的生成代碼已經(jīng)足夠好了。
對(duì)象關(guān)系映射(ORM)系統(tǒng)方面已有很大進(jìn)展,比如Hibernate和.Net Entity框架在數(shù)據(jù)庫(kù)上層新增一個(gè)抽象的附加層。如果開發(fā)人員能完全訪問數(shù)據(jù)庫(kù),ORM非常容易使用。另外,借助.Net中的LINQ to SQL和Rail的AREL,開發(fā)人員也可直接輕松和數(shù)據(jù)庫(kù)“共處”,比存儲(chǔ)過程更為簡(jiǎn)單。
最重要的轉(zhuǎn)變是各種敏捷開發(fā)技術(shù)的出現(xiàn)?,F(xiàn)在,項(xiàng)目需求(數(shù)據(jù)庫(kù)模型)可以根據(jù)客戶的要求靈活變化,而且,需求變更的實(shí)現(xiàn)在2周的Sprint當(dāng)中就可以實(shí)現(xiàn),并看到效果。而在以前,這種客戶提出的需求變化要等上好幾個(gè)月才可以看到對(duì)應(yīng)的實(shí)現(xiàn)。等待DBA更新數(shù)據(jù)庫(kù)模型、更改存儲(chǔ)過程和視圖等等,然后再讓開發(fā)人員根據(jù)數(shù)據(jù)庫(kù)的更新來調(diào)整程序,這樣的一個(gè)過程在敏捷團(tuán)隊(duì)中要經(jīng)歷很多的Stage。 所以,在這種環(huán)境下,開發(fā)人員通常自己創(chuàng)建并打包數(shù)據(jù)庫(kù),把它交給自動(dòng)化的部署系統(tǒng),由系統(tǒng)來更新數(shù)據(jù)庫(kù)。
前景如何
這會(huì)不會(huì)意味著傳統(tǒng)DBA角色已經(jīng)終結(jié)了呢?我看還沒有。我們?nèi)匀恍枰狣BA,但在很多公司/機(jī)構(gòu)中,他們正處于下坡路。
數(shù)據(jù)庫(kù)仍然還有一套不同尋常的性能,不管是普通公司,還是像擁有《全球10大終極數(shù)據(jù)庫(kù)》的大公司/機(jī)構(gòu),都需要一位或一批經(jīng)驗(yàn)豐富的專業(yè)人員來規(guī)劃和調(diào)整系統(tǒng),以達(dá)到最佳性能。除此之外,現(xiàn)有的遺留應(yīng)用程序安裝數(shù)量很大。另外,在很多應(yīng)用程序共享的數(shù)據(jù)庫(kù)環(huán)境中,DBA需要協(xié)調(diào)其他東西(通常是用合適的事務(wù)舉措編寫存儲(chǔ)過程),以確保應(yīng)用程序“互不沖突”。開發(fā)人員可以忽略而DBA不能忽視的東西之一就是數(shù)據(jù)約束。
開發(fā)世界變化日新月異,不僅DBA和開發(fā)人員受此影響,其他很多角色也不例外。不管你是不是DBA和開發(fā)人員,只要你和IT相關(guān),相信都有所體會(huì)。如果你愿意分享相關(guān)經(jīng)歷和體會(huì),可以在評(píng)論或微博中分享。
【編輯推薦】