DBA的角色以及與業務的關系為何
--本文的內容來源于我和趙元杰老師的一次聊天,趙老師是非常資深的Oracle專家,對Oracle的根本原理以及對既有數據庫的優化有非常深的造詣和非常豐富的經驗,他對于技術的鉆研精神,非常值得我們這些后輩學習。
當前,在很多公司中,不管是IT公司還是非IT的企業,都會配備DBA這樣一個職位,負責管理相關的數據庫。然而,很多時候,DBA這個職位的位置卻有些尷尬。
一般,一個企業的IT團隊會分為兩個部分,一部分我們可以稱之為基礎設施或者基礎架構(Infrastructure)團隊,他們會負責管理企業的計算機硬件、服務器、網絡設備、電話等等;而另一部分一般稱為應用開發,負責與軟件開發相關的工作。
那么DBA應該歸屬于哪個團隊呢?從程序員的角度來看,DBA當然應該歸屬于應用開發團隊。然而,實際情況并非如此,因為DBA要負責管理數據庫服務器,所以很多時候都會被劃分到基礎架構團隊。而且,一般來說,數據庫的結構設計工作,都是由應用開發團隊來完成的。DBA并不會根據應用開發的需要來對數據庫服務器進行規劃,而只是簡單地保證有足夠的數據庫空間供應用開發團隊使用就好了。
同時,開發團隊也不一定認可DBA稱為開發團隊的一員,當前很多企業都在搞EA(Enterprise Architecture),也就是企業架構,期望IT的架構能夠和業務架構相互匹配,從而讓IT能夠更好地為業務服務。在這里,IT的架構研究更多著重在企業的各種應用服務器,重點也在于應用開發方面,而并沒有把數據庫的架構那納入進來,或者說沒有把它提到一個足夠高的位置上來。
另外,現在有了云技術,越來越多的企業會把數據放在云存儲上,從而降低公司的成本,如果真的把所有的數據都放到云端的話,那么DBA這個角色就沒有在企業中存在的必要了。
然而,我們是否認真的考慮過,數據庫的架構是否要和業務的架構匹配呢?或者說,DBA是否需要了解業務,才能夠更好地完成自己的工作呢?
如果深入了解數據庫的運行原理之后,我們會發現DBA了解業務是非常必要的,不妨舉例說明:
大家都知道,在Oracle數據庫中可以設置很多表空間,而不同的表空間可以放置在性能不同的存儲設備上,那么在哪里放置什么樣的表空間,而在表空間里存儲什么樣的數據就有講究了。
比方說對于經常會用到的數據,像一些基礎數據,就需要放在性能高的地方,而不會經常使用的數據,像日志、備份數據,就可以放在性能低的地方。
比方說有時效性的數據,對于最近的數據或者說今年的數據,就應該放在性能高的地方,而十年前的數據,可能需要歸檔了,就可以放在性能低的地方。
再比方說各種數據存儲的問題,各個部門所要使用的數據表之間都會有很多關系,而把這些數據存儲在相近的位置,那么在獲取數據的時候就會比較快,而如果散落在各個角落,那在獲取數據的時候就比較麻煩,性能也低。
另外,還有一些Oracle專有的技術,像各種類型的索引,對于各種不同的數據,采用不同的索引,最終的性能也不同;還有對數據表的分片(partition)技術,也必須在了解了業務之后才能夠作出比較合理的選擇。
由上面的內容,我們可以看出來,想要真正保證數據庫的設計和運行的性能,DBA非常有必要了解業務的一些信息。
而當前的很多DBA的工作方式卻很無奈,對于表空間,他們可能只會建立一個非常大的表空間,然后把所有的應用數據都放在一起;在開始的時候,也沒有辦法對數據庫的存儲設備等進行有效合理的規劃,根本的原因還在于他們無法了解到業務的信息。
綜上所述,作為DBA,需要更多地參與到系統的建設中來,而不是單純地對服務器進行管理,而且需要了解更多的業務知識。
你的觀點如何?
原文鏈接:http://www.cnblogs.com/houbowei/archive/2011/09/30/2196179.html
【編輯推薦】