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