對比Caché和Oracle在數(shù)據(jù)庫的應(yīng)用
導(dǎo)讀:我們做了一個(gè)向數(shù)據(jù)庫存放數(shù)據(jù)以供分析真實(shí)應(yīng)用程序性能的基準(zhǔn)測試。為了進(jìn)行測試,我們對一個(gè)基于Oracle的應(yīng)用程序中的模塊用Caché的ObjectScript進(jìn)行了重寫。原模塊的功能在Caché上重現(xiàn)只需要40人小時(shí)。本文主要是比較二者在數(shù)據(jù)庫應(yīng)用方面的差別,希望對大家能夠有所幫助。
我們記錄了基于Caché的單元完成特定任務(wù)所需的時(shí)間,并和現(xiàn)有的Oracle數(shù)據(jù)庫進(jìn)行比較,結(jié)果是 采用Caché的應(yīng)用程序快5倍,它僅用280分鐘就完成了用Oracle需1441分鐘完成的數(shù)據(jù)加載和過濾任務(wù)。
表格次序模塊
Meralco基于Oracle 8i的表格次序模塊用來取得Fields中產(chǎn)生的文本文件,并生成兩張表——維表和事實(shí)表,他們分別用來分析和報(bào)告。為了完成任務(wù),它要執(zhí)行下列步驟:
1.表中的多個(gè)文本文件(ordenes.txt和gcahorde.txt)要存在兩張表ORDENED和GCAHORDE中。在基于Oracle的應(yīng)用程序中,這通過OracleSQL*Loader來完成。
2.GCAHORDE表被過濾,生成GCAHORDE-Filtered表。
3.運(yùn)用Oracle Package和存儲程序,由GCAHORDE-Filtered和ORDENED生成表或維表DD_FIELD_ORDER。
4.運(yùn)用Oracle Package和存儲程序,由GCAHORDE-Filtered和ORDENED生成D F_FIELD_ORDER
重寫表格次序模塊
Caché允許用ODBC和JDBC存取數(shù)據(jù),這樣許多傳統(tǒng)關(guān)系型應(yīng)用程序只要做少許變動就可以在Caché數(shù)據(jù)庫上運(yùn)行。象Meralco的表格命令單元這樣極度依靠存取程序的應(yīng)用程序是個(gè)例外。把一個(gè)傳統(tǒng)關(guān)系型應(yīng)用程序轉(zhuǎn)換到Caché,這些存程序需要重新用Caché ObjectScript編寫。因此,用Caché ObjectScript重寫Field Order模塊的功能應(yīng)該比改寫現(xiàn)存的代碼要快。
此方法的另一個(gè)好處就是允許基于Caché的單元采用Caché對輸入文本文件的預(yù)處理功能。因?yàn)閺脑嫉膅cahorde.txt文件生成的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫時(shí)就已被過濾了?;贑aché的單元就不需要另外的過濾步驟了。
在Meralco的指導(dǎo)下,InterSystems開發(fā)了基于Caché的Field Order模塊,對于熟悉Caché的開發(fā)人員只需要40人小時(shí)。
測試結(jié)果
Caché和Oracle 8i的表格命令單元處理相同的文本文件,每種軟件完成不同任務(wù)的時(shí)間都被記錄,Caché運(yùn)行時(shí)間比Oracle快4-23倍。結(jié)果如下:
共過濾13,396,510 條源記錄,加載 90,349 條記錄
結(jié)論
在這個(gè)事實(shí)的數(shù)據(jù)倉庫應(yīng)用的性能測試中運(yùn)行程序中,在執(zhí)行數(shù)據(jù)存儲和過濾功能時(shí),Caché比Oracle快5倍。把基于Oracle的應(yīng)用程序重寫成基于Caché的應(yīng)用程序需要40人小時(shí)。從上文中可以總結(jié)出二者是各有千秋,大家在選擇時(shí)要根據(jù)具體的情況作出正確的選擇。
【編輯推薦】