攜程開源數(shù)據(jù)庫訪問框架Ctrip DAL

責(zé)任編輯:editor006

作者:赫杰輝

2016-09-30 19:23:37

摘自:INFOQ

伴隨這一過程的是如何管理數(shù)據(jù)庫擴(kuò)展,如何規(guī)范數(shù)據(jù)庫訪問,如何保護(hù)數(shù)據(jù)庫投資,如何應(yīng)對(duì)訪問量增加,如何預(yù)防安全問題等一系列挑戰(zhàn)。

隨著企業(yè)規(guī)模擴(kuò)張和業(yè)務(wù)量的急劇增加,作為系統(tǒng)核心的數(shù)據(jù)庫相關(guān)開發(fā)也會(huì)經(jīng)歷一個(gè)由單一團(tuán)隊(duì)發(fā)展為多團(tuán)隊(duì);由單機(jī)擴(kuò)張到集群;由單數(shù)據(jù)庫發(fā)展為多數(shù)據(jù)庫;由采用單一數(shù)據(jù)庫產(chǎn)品到多種數(shù)據(jù)庫產(chǎn)品并存的過程。伴隨這一過程的是如何管理數(shù)據(jù)庫擴(kuò)展,如何規(guī)范數(shù)據(jù)庫訪問,如何保護(hù)數(shù)據(jù)庫投資,如何應(yīng)對(duì)訪問量增加,如何預(yù)防安全問題等一系列挑戰(zhàn)。作為國(guó)內(nèi)在線旅游行業(yè)的翹楚,攜程也曾經(jīng)面對(duì)同樣困擾。為了應(yīng)對(duì)這些挑戰(zhàn),實(shí)現(xiàn)企業(yè)10倍速發(fā)展,攜程開發(fā)了具有自己特色的數(shù)據(jù)庫訪問框架Ctrip DAL。Ctrip DAL支持流行的分庫分表操作,支持Java和C#,支持MySQL和MSSqlServer。使用該框架可以在有效地保護(hù)企業(yè)已有數(shù)據(jù)庫投資的同時(shí),迅速,可靠地為企業(yè)提供數(shù)據(jù)庫訪問層的橫向擴(kuò)展能力。整個(gè)框架包括代碼生成器和客戶端。工作模式是使用代碼生成器在線生成代碼,通過DAL客戶端完成數(shù)據(jù)庫操作。生成器具有豐富的向?qū)е敢?,操作?jiǎn)單清晰,既可以批量生成標(biāo)準(zhǔn)DAO,也可以在方法級(jí)別定制數(shù)據(jù)庫訪問??蛻舳藙t可以簡(jiǎn)單地通過標(biāo)準(zhǔn)的maven方式添加依賴。

Ctrip DAL與一般數(shù)據(jù)庫框架最大的不同是從企業(yè)跨部門的角度,統(tǒng)一管理數(shù)據(jù)庫相關(guān)資源。通過部署代碼生成器,企業(yè)可以做到有效的管理全公司的DAL開發(fā)團(tuán)隊(duì),明確數(shù)據(jù)庫歸屬和定制數(shù)據(jù)庫訪問。通過代碼生成器生成的標(biāo)準(zhǔn)DAO代碼與客戶端配合使用,可以大幅提高工作效率,保證代碼質(zhì)量。解決了業(yè)內(nèi)常見的伴隨業(yè)務(wù)成長(zhǎng)而帶來的系統(tǒng)維護(hù)困難,開發(fā)效率低下,代碼風(fēng)格五花八門,代碼質(zhì)量參差不齊等痛點(diǎn)問題。
為了適應(yīng)不同公司的實(shí)際情況,DAL定義了豐富的擴(kuò)展接口,覆蓋了從數(shù)據(jù)源管理,數(shù)據(jù)庫映射,連接串讀取到自定義訪問方式等等方方面面的功能。同時(shí)為了方便系統(tǒng)監(jiān)控還內(nèi)置了系統(tǒng)狀態(tài),日志和統(tǒng)計(jì)模塊。Ctrip DAL由攜程技術(shù)中心框架部DAL團(tuán)隊(duì)開發(fā),歷經(jīng)3年不斷打磨,在長(zhǎng)期的實(shí)際使用中吸收了大量用戶反饋。目前攜程超過117個(gè)獨(dú)立DAL團(tuán)隊(duì)通過代碼生成器管理數(shù)據(jù)庫和創(chuàng)建DAO。2000多個(gè)應(yīng)用在使用DAL框架,占攜程所有數(shù)據(jù)庫應(yīng)用總數(shù)超過90%。本次開源的產(chǎn)品包括代碼生成器和Java客戶端,C#客戶端也將近期開源。DAL各個(gè)組件的安裝和使用都有詳細(xì)的文檔說明,開箱即用。

 

通過開源攜程自身使用DAL框架,攜程希望在滿足自身需求的同時(shí),服務(wù)于廣大企業(yè),并繼續(xù)為中國(guó)方興未艾的開源運(yùn)動(dòng)出點(diǎn)力。