一位資深DBA的十年職業(yè)之路
針對目前中小企業(yè)IT系統(tǒng)選型缺乏強大獎金和雄厚技術(shù)支持的情況,我們采訪了某數(shù)據(jù)管理中心高級工程師盧濤(網(wǎng)名:〇〇)。盧濤向我們介紹了他十年的數(shù)據(jù)庫管理工作經(jīng)歷,希望這個經(jīng)歷的介紹能對企業(yè)在部署數(shù)據(jù)庫有一個借鑒的經(jīng)驗,也希望給剛?cè)胄械腄BA一個學(xué)習(xí)的榜樣。
盧濤介紹說,在工作當(dāng)中***接觸數(shù)據(jù)庫要上溯到上世紀(jì)90年代中期,那時,計算機還是以單機為主,應(yīng)用的主要數(shù)據(jù)庫是FoxPro,這雖然也是一款支持多用戶的關(guān)系型數(shù)據(jù)庫產(chǎn)品,但主要還是限于單機使用。使用數(shù)據(jù)庫的主要方式是編寫和運行過程式的,包括界面和業(yè)務(wù)邏輯的prg程序訪問后臺的表,用到的數(shù)據(jù)庫功能很有限,數(shù)據(jù)庫管理也僅限于數(shù)據(jù)庫表文件和程序文件的備份。
大約在2001年,***接觸了Oracle 8i數(shù)據(jù)庫,其實,單位使用這種數(shù)據(jù)庫是比這個時間更早的,但只有少數(shù)Unix服務(wù)器使用,還沒有推廣到一般的應(yīng)用。那時基本上是雙軌運行,大型數(shù)據(jù)分析處理用Oracle,編寫PL/SQL程序或用Pro*C程序處理業(yè)務(wù)邏輯,小型數(shù)據(jù)采集和加工用其他小型數(shù)據(jù)庫,比如MS Access、Visual FoxPro等,還有自行設(shè)計的Visual C++編寫的用類數(shù)據(jù)庫的文件存儲和處理保表的系統(tǒng)。
2004年,***次將C/S架構(gòu)引入到數(shù)據(jù)采集軟件之中,軟件不必和小型數(shù)據(jù)庫管理系統(tǒng)捆綁,數(shù)據(jù)庫采用MySQL 4,從現(xiàn)在的標(biāo)準(zhǔn)去看,那是一個缺少很多基本功能的數(shù)據(jù)庫,比如沒有定點小數(shù)數(shù)值類型,SQL語句不支持子查詢,因此給開發(fā)工作帶了很多困難,基本上業(yè)務(wù)邏輯還是通過C++應(yīng)用程序來實現(xiàn),只不過可以通過網(wǎng)絡(luò)并發(fā)訪問數(shù)據(jù)庫罷了。在數(shù)據(jù)分析階段仍然采用Unix上的Oracle 9i數(shù)據(jù)庫,因為它在大數(shù)據(jù)量處理上,性能比MySQL具有很大的優(yōu)勢,功能也強大很多。利用OEM工具可以進行數(shù)據(jù)庫的管理和性能診斷,數(shù)據(jù)庫管理使用 Unix的后臺定時任務(wù)crontab來執(zhí)行邏輯導(dǎo)出到磁盤,定期備份到磁帶。由于應(yīng)用程序的默認(rèn)口令比較簡單,為了防止未經(jīng)授權(quán)的用戶利用該用戶直接訪問數(shù)據(jù)庫,利用觸發(fā)器和SQL net配置文件限制登錄IP,保證數(shù)據(jù)庫安全。
2007年,將2004年的系統(tǒng)進行了升級改造,數(shù)據(jù)采集和分析的數(shù)據(jù)庫同時支持MySQL 5、Oracle和MS SQL Server 2005,軟件改為符合j2ee標(biāo)準(zhǔn)的3層C/S架構(gòu),中間層使用Tomcat,由于要兼顧不同數(shù)據(jù)的特點,應(yīng)用軟件專門虛擬了一層統(tǒng)一的數(shù)據(jù)訪問層,自動根據(jù)數(shù)據(jù)庫類別映射到不同的功能,比如數(shù)據(jù)導(dǎo)入,SQL Server用bcp實現(xiàn),Oracle調(diào)用SQL Loader, MySQL則采用load data in file方法,有些數(shù)據(jù)庫不支持的功能,就用等價的辦法替代,比如用表連接代替子查詢。在數(shù)據(jù)分析階段采用Unix上的Oracle 10g數(shù)據(jù)庫,充分利用數(shù)據(jù)庫的功能,比如擴展的group by、分區(qū)、數(shù)據(jù)泵導(dǎo)入導(dǎo)出使得軟件的性能得到很大提高。支持多種數(shù)據(jù)庫平臺給開發(fā)和測試工作帶來了很大的工作量和維護難度,因為任何一個功能必須考慮各種數(shù)據(jù)庫的特性,否則就會有問題,而不同數(shù)據(jù)庫的處理機制又有較大區(qū)別。
2008年,組織另外一個團隊開發(fā)了一套數(shù)據(jù)采集和分析報表系統(tǒng),采用3層B/S架構(gòu),不再支持多種數(shù)據(jù)庫平臺。對數(shù)據(jù)量較少的用戶,用Oracle XE數(shù)據(jù)庫,除了一些高級功能,如并行、分區(qū)等外,絕大多數(shù)功能都和Oracle 10個沒有區(qū)別,極大地方便了將來數(shù)據(jù)量擴大時,升級到Oracle標(biāo)準(zhǔn)版或企業(yè)版。由于新開發(fā)隊伍對Oracle數(shù)據(jù)庫的了解不夠,采用了一些不合理的表結(jié)構(gòu)設(shè)計和應(yīng)用程序架構(gòu),應(yīng)用程序承擔(dān)了大多數(shù)數(shù)據(jù)處理任務(wù),導(dǎo)致不能充分發(fā)揮數(shù)據(jù)庫的功能,軟件性能不是很高,但仍然可以完成任務(wù)。數(shù)據(jù)庫管理通過 EM頁面,無需安裝客戶端,便于隨時隨地監(jiān)控數(shù)據(jù)庫的狀況。
2010年,在2008年的系統(tǒng)進行了升級改造,一方面針對數(shù)據(jù)分析功能修改了算法,充分利用數(shù)據(jù)庫的功能,另一方面,利用多個應(yīng)用服務(wù)器合作完成較大的任務(wù),充分利用硬件CPU和內(nèi)存資源。使得產(chǎn)品性能有比較大的提升。為了提高并發(fā)訪問能力和負(fù)載均衡,使用了F5設(shè)備。
目前,2010年升級的系統(tǒng)正在運行當(dāng)中,為了提高可用性,將數(shù)據(jù)庫改用Oracle 11g R2 RAC。為了解決上下級數(shù)據(jù)同步問題,先后試用了GoldenGate和IBM MQ軟件,有待于下一階段實施。
數(shù)據(jù)庫在業(yè)務(wù)中的重要性日益提高,對于數(shù)據(jù)管理和處理有其他軟件不能替代的作用。完全可以說現(xiàn)在的數(shù)據(jù)中心就是以數(shù)據(jù)庫為中心的,其上層的應(yīng)用軟件、中間件和下層的硬件資源都是圍繞數(shù)據(jù)庫提供服務(wù)的。舉個例子,雖然我們2001年的系統(tǒng)不再運行,但我們?nèi)钥梢詮漠?dāng)時的數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù),用于2010年系統(tǒng)的歷史數(shù)據(jù)比較和分析??梢韵胍?,將來軟件可能進一步改進和發(fā)展,但數(shù)據(jù)卻是持久的。
#p#
十余年的工作,對數(shù)據(jù)庫開發(fā)和維護有下面幾點體會:
1. 開發(fā)數(shù)據(jù)處理軟件已經(jīng)離不開數(shù)據(jù)庫, 要充分發(fā)揮數(shù)據(jù)庫的功能才能開發(fā)出高效的軟件。
2. 要選擇一種功能比較完善的數(shù)據(jù)庫,充分利用數(shù)據(jù)庫版本的升級帶來的新技術(shù)的好處。
3. 一個應(yīng)用同時支持多種數(shù)據(jù)庫是困難的,應(yīng)該集中精力用好一種數(shù)據(jù)庫。選擇了一種數(shù)據(jù)庫就不輕易改變,以節(jié)省學(xué)習(xí)成本和繼承開發(fā)經(jīng)驗。
4. 數(shù)據(jù)庫的表現(xiàn)需要各種軟硬件的配合,比如主機、存儲、操作系統(tǒng)和應(yīng)用軟件,開發(fā)人員了解得越多,越有利于開發(fā)高效的軟件。數(shù)據(jù)庫應(yīng)選擇能充分利用硬件的版本,比如用64位版本。開發(fā)人員應(yīng)了解技術(shù)的發(fā)展,了解過去的正確觀念在新條件下未必依然正確,比如用磁盤陣列存儲就不必人工指定表分區(qū)和數(shù)據(jù)文件對應(yīng)就可以實現(xiàn)IO在多個磁盤的均衡分布。內(nèi)存和CPU增加使SQL可以采用HASH連接等獲得更好的執(zhí)行計劃。
5. 數(shù)據(jù)庫優(yōu)化工作應(yīng)在設(shè)計階段就考慮,這時更改的成本***,收效***。系統(tǒng)運行時同時監(jiān)控性能的狀態(tài),及時作出必要的調(diào)整,可以利用數(shù)據(jù)庫提供的各種工具。
6. 隨著用戶業(yè)務(wù)種類和數(shù)量的增長,需要管理的數(shù)據(jù)庫數(shù)量也不斷增加、環(huán)境越來越復(fù)雜,管理的難度也提高了,需要數(shù)據(jù)庫開發(fā)人員和數(shù)據(jù)庫管理員分工合作。雖然數(shù)據(jù)庫軟件在一定程度上能提供幫助,仍然需要經(jīng)驗豐富的專業(yè)的人員和完善的數(shù)據(jù)庫管理制度,并嚴(yán)格執(zhí)行。
針對于數(shù)據(jù)庫未來幾年所面臨的挑戰(zhàn),盧濤給出了以下幾點:
在未來的幾年,隨著數(shù)據(jù)大集中的要求進一步提高,系統(tǒng)的在線用戶將有較大的增長,對系統(tǒng)應(yīng)付并發(fā)讀寫訪問的能力是一個考驗,考慮利用內(nèi)存數(shù)據(jù)庫等技術(shù)提高在線事務(wù)處理的能力。
數(shù)據(jù)庫的安全日益重要。同樣不能僅依靠數(shù)據(jù)庫提供的功能,比如加密、口令安全策略,而要從物理安全、訪問控制、安全網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)庫備份恢復(fù)等多方面予以保障,經(jīng)過實踐檢驗的制度和應(yīng)急方案必不可少,同時加強開發(fā)人員和用戶管理,限制應(yīng)用程序的用戶權(quán)限,禁止管理員用戶執(zhí)行非管理操作。某些數(shù)據(jù)庫產(chǎn)品提供了審計功能,如果業(yè)務(wù)有此方面需要,也考慮采用。
傳統(tǒng)數(shù)據(jù)庫按用途分,分為OLTP和數(shù)據(jù)倉庫,不同用途的數(shù)據(jù)庫配置參數(shù)有一些差別,編寫的應(yīng)用程序也很難同時滿足這2種不同的業(yè)務(wù)需要。某些廠商已經(jīng)推出了同時適用2種應(yīng)用場合的產(chǎn)品。
2010-2011年是列存儲數(shù)據(jù)庫發(fā)展較快的階段,對海量數(shù)據(jù)倉庫的分析查詢有很好的效果。傳統(tǒng)數(shù)據(jù)庫廠商在這方面動作不大,希望能在新版軟件中添加這方面的功能,以進一步提高數(shù)據(jù)分析操作的性能。
【編輯推薦】