我們做了一個向數據庫存放數據以供分析真實應用程序性能的基准測試。為了進行測試,我們對一個基於Oracle的應用程序中的模塊用Caché的ObjectScript進行了重寫。原模塊的功能在Caché上重現只需要40人小時。
我們記錄了基於Caché的單元完成特定任務所需的時間,並和現有的Oracle數據庫進行比較,結果是 采用Caché的應用程序快5倍,它僅用280分鐘就完成了用Oracle需1441分鐘完成的數據加載和過濾任務。
表格次序模塊
Meralco基於Oracle 8i的表格次序模塊用來取得Fields中產生的文本文件,並生成兩張表——維表和事實表,他們分別用來分析和報告。為了完成任務,它要執行下列步驟:
1.表中的多個文本文件(ordenes.txt和gcahorde.txt)要存在兩張表ORDENED和GCAHORDE中。在基於Oracle的應用程序中,這通過OracleSQL*Loader來完成。
2.GCAHORDE表被過濾,生成GCAHORDE-Filtered表。
3.運用Oracle Package和存儲程序,由GCAHORDE-Filtered和ORDENED生成表或維表DD_FIELD_ORDER。
4.運用Oracle Package和存儲程序,由GCAHORDE-Filtered和ORDENED生成D F_FIELD_ORDER
重寫表格次序模塊
Caché允許用ODBC和JDBC存取數據,這樣許多傳統關系型應用程序只要做少許變動就可以在Caché數據庫上運行。象Meralco的表格命令單元這樣極度依靠存取程序的應用程序是個例外。把一個傳統關系型應用程序轉換到Caché,這些存程序需要重新用Caché ObjectScript編寫。因此,用Caché ObjectScript重寫Field Order模塊的功能應該比改寫現存的代碼要快。
此方法的另一個好處就是允許基於Caché的單元采用Caché對輸入文本文件的預處理功能。因為從原始的gcahorde.txt文件生成的數據進入數據庫時就已被過濾了。基於Caché的單元就不需要另外的過濾步驟了。
在Meralco的指導下,InterSystems開發了基於Caché的Field Order模塊,對於熟悉Caché的開發人員只需要40人小時。
測試結果
Caché和Oracle 8i的表格命令單元處理相同的文本文件,每種軟件完成不同任務的時間都被記錄,Caché運行時間比Oracle快4-23倍。結果如下:
* 共過濾13,396,510 條源記錄,加載 90,349 條記錄
結論
在這個事實的數據倉庫應用的性能測試中運行程序中,在執行數據存儲和過濾功能時,Caché比Oracle快5倍。把基於Oracle的應用程序重寫成基於Caché的應用程序需要40人小時。