摘要:該文分析了應用型工程數據庫應用領域及其特點,指出通過數據預處理、合理使用范式規則設計表結構等來優化工程數據庫數據表。同時提出了索引和查詢語句優化選擇、事務執行轉向服務器端進行數據操作等手段優化數據庫性能。
關鍵詞:工程數據庫;數據預處理;規范化;存儲過程
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2009)26-7340-02
Research on Technologies of Improving the Performance of Engineering Database
XIA Hong-xia1,2, QIAN Zheng2
(1.Hefei University of technology, Hefei 230041, China; 2.Anhui Vocational College of Electronics Information Technology, Hefei 230041, China)
Abstract: The characteristics and areas of application of application-oriented engineering database is analyzed in this paper.Throughing the data pre-processing and using rule of paradigm design table structure reasonably to optimize engineering database tables. It also pointed out that the engineering database performance optimization tool including selecting indexing and query appropriately and turned to server-side implementation of services for data manipulation.
Key words: engineering database; data preprocessing; standardization; stored procedures
計算機應用的逐步深入推動了數據庫管理系統在各個應用領域的發展。工程與科學研究一直是數據及計算量繁雜的應用領域,其數據量的增加更加迅速,這些數據的產生、處理、傳遞、存儲變得越來越復雜,使用數據庫對其數據進行管理也變得極其重要。目前工程數據庫理論逐步成熟并進入實際應用,隨著工程應用要求的提高工程數據庫正向以下幾個方面發展:
1)工程數據庫正向面向對象、面向多媒體、面向知識等方面發展。由于工程數據庫管理對象結構趨于復雜,傳統的關系型數據庫需要加以擴展方能適應其數據結構模型,面向對象設計思想及多媒體技術的成熟使其在工程數據庫的應用成為重要的發展方向。同時由于工程數據庫管理內容包含諸如工程裝配序列、工藝技術、工程設計等,這就要求工程數據庫系統不僅能夠對工程設計數據進行管理,還需要進行推理,管理應用中涉及的各領域相關知識。通過人工智能、專家系統和工程數據庫的結合,從已有數據中演繹推理出新的數據或歸結特征數據來滿足實際應用的需要。
2)工程數據庫體系結構由基于主機的計算機系統經過文件服務器結構、客戶機/服務器方式,逐步發展為在C/S體系基礎上擴充的包括客戶、數據庫服務器、應用服務器構成的三(多)層結構[1]。
3)大型工程數據庫以及應用型工程數據庫同時快速發展。對于工程數據庫的實際應用上,除了應用上述各種新技術的大型工程數據庫不斷研制成功外,面向各種中小型項目的應用型工程數據庫也迅速發展,應用于發動機研制、鑄造工程、地鐵土建工程、汽車焊裝及冷沖模等各領域具體項目[2]。這些應用型項目的特點是項目規模較小,開發周期較快,項目針對性強,數據特征明顯,開發模式多選擇C/S模式或者B/S模式。
在各種應用型工程數據庫設計中,往往注重通過對系統層進行調整來實現數據庫優化,而忽視數據處理及表結構設計、數據查詢語句編寫等問題,但對于各種中小型項目的應用,從這些方面來對的工程數據庫進行性能優化可以大幅度提高應用型工程數據庫整體性能。
1 進行數據預處理,合理使用范式規則優化數據表結構設計
為工程數據庫提供有效數據是優化性能的必要條件。以面向通用類機械產品虛擬裝配的工程數據庫系統為例,通過對其輸入數據進行預處理以及數據表結構進行研究,優化數據管理性能。該系統經過一系列數據模型建模后,確定各數據表結構及具體程序界面,編寫對應的數據管理應用程序[3]。
1)對初始數據建立規則庫進行推理,通過數據預處理增加系統穩定性。
以某軸零件為例,在設計界面需要輸入零件編號等相關信息。在系統進行測試階段時發現,在讀取工程數據庫相關數據時出現程序異常中斷,裝配件顯示異常現象,經測試是由于其輸入數據時部分數據未按系統要求格式輸入而導致的。
其工程信息輸入內容如表1。
通過對以上內容建立包括對大徑和小徑進行比較,各數值上下界檢查,件數牌號等數據類型檢查,零件編號格式檢查等預處理規則,對所輸入數據進行按規則進行檢查,對與系統格式不相同的輸入內容要求更新,提高系統穩定性。
2) 合理使用范式達到規范性和實用性的統一
數據庫的設計要求將數據分布到多個表中,以控制數據冗余,達到在磁盤使用空間和性能之間取得平衡的目的。在商用數據庫數據表設計中,通過關系規范化的設計手段可以很好的實現這一點,采用范式規則使數據信息在邏輯上更加緊密,有利于建立索引和維護數據完整性。
但在通用型工程數據庫中,為保證規范性而要求完全按照關系規范化理論設計數據表往往會犧牲其實用性。面向通用類機械產品虛擬裝配的工程數據庫系統中物理屬性信息表結構設計如表2。
該表中零件編號字段為主關鍵字,其中零件類別、零件質量、顏色等字段依賴于零件編號字段,密度字段內容依賴于零件類別字段。按照關系規范化理論,零件類別->密度屬于傳遞依賴關系,密度字段屬于數據冗余,該關系也不滿足3NF。此處可以通過范式分解將此表數據儲存在兩個表中以滿足3NF。
但在實際應用中,此表的設計是合理的,不能為了追求滿足3NF或更高范式級別而對表格進行拆分。因為虛擬裝配過程中經常需要使用零件的密度和質量來計算體積。如果這些數據存放在多張表中,將會增加I/O代價,多表連接也會延長查詢時間,導致系統性能下降。
由此,對于面向具體項目的應用型工程數據庫來說,要同時考慮數據表結構設計的規范性以及設計性能,通過范式與非范式相結合的策略,達到設計規范同時避免潛在性能下降的目的。
2 關聯規則數據挖掘在教學系統中的應用
2.1 合理利用索引提高數據表檢索效率,優化高頻數據操作語句
設計工程數據庫庫時,往往通過對經常使用的數據表以及數據操作語句進行優化,以達到提升系統效率的目的。
1) 索引設計優化技術
雖然建立索引本身會占用一定量的系統資源,但對工程數據庫系統中常用的數據表建立索引可以提高檢索和更新數據的速度,尤其是需要經常對某些數據表進行操作或者訪問的數據表中包含大量完全不同的數據,索引的使用更可以提升系統總體性能。對于面向通用類機械產品虛擬裝配的工程數據庫系統中多重數據表,可以采用聚集索引(clustered index)或非聚集索引(nonclustered index),但對于特定的任務采用對應索引可能有更高的效率。
對于一張大型或經常使用的數據表,建立索引的順序通常是首先建立聚集索引,然后再建立非聚集索引以減小非聚集索引的重建時間。這是因為聚集索引和數據表記錄的物理順序一一對應,非聚集索引需要隨聚集索引的增刪而進行重建。由于聚集索引指定了表中數據的物理順序,每張表只能有一個聚集索引。因此聚集索引通常基于數據表中的主key進行創建。在經常按順序訪問數據表或返回大量的檢索結果時,通過使用聚集索引可以順序訪問表中的數據從而提高數據查詢性能;另外在訪問包含連接或者GROUP BY字句時也可以使用聚集索引來提高系統性能。
而非聚集索引包含了指向數據頁上的表行指針,這樣可以通過直接查找數據值后對數據表中特定位置的數據進行訪問從而實現對某些數據的精確匹配查找。由于非聚集索引的順序和表行的物理順序不同,一個表可以有多個非聚集索引。通常情況下,在進行精確匹配的查找時或者在確定查詢只返回少量數據的情況下往往使用非聚集索引。
2) 查詢語句選擇
在數據庫設計中,查詢效率是非常重要的性能指標。對于如服務器內存不足或網絡通信存在缺陷等系統問題,較易確定問題所在,解決手段也比較明確。在具體應用中,可能使用多個語句都可以實現同一個查詢操作,但效率相差很大。一般數據庫均提供一些工具來對查詢效率進行比較。如對面向通用類機械產品虛擬裝配的工程數據庫系統中可以同時使用表連接查詢、嵌套查詢以及相關子查詢來實現對深溝球軸承特征參數的查詢。經過查詢分析器比較發現三種查詢的返回結果相同,但執行效率相差較大,其中I/O操作相關子查詢和嵌套查詢相同,均優于連接查詢,CPU執行時間上相關子查詢優于其他兩種查詢方式,在此例中使用相關子查詢較為合適。
在工程應用中,由于不同查詢使用的環境不同,隨著時間變化查詢的對象也會產生變化,因此對系統查詢頻率較高的語句定期進行比較,使用效率較高的查詢方式可以明顯提高系統查詢效率從而提高系統整體性能。
2.2 事務執行轉向服務器端,減輕應用程序的數據處理量
應用型工程數據庫多采用C/S模式或者B/S模式開發,在實際開發中,這兩種體系結構通常不是直接對數據庫進行操作,而是使用應用程序通過各種數據庫API,諸如ODBC、ADO、OLE DB等來實現。具體方式是通過以上API來執行數據查詢等語句,應用程序處理返回的處理結果集。對于B/S模式常通過后兩種方式以XML方式獲得處理結果集。
這種方式可以實現程序應用程序前端對數據的處理和交互,是應用型工程數據庫的重要組成部分。但是過于依賴這種方式將加大應用程序數據處理量,導致程序響應速度遲緩,同時限制了工程數據庫的擴展使用。在實際開發中,可以通過服務器端的應用邏輯來減輕應用程序端的數據I/O及計算量,實現對整體系統的性能進行優化。
在服務器端的應用邏輯包括存儲過程和觸發器等,存儲過程是指在數據庫中由用戶自定義的預先定義并編譯好的事物,它可以通過接收參數后執行規定事務并返回狀態值或動態結果,可按應用需求來調用另一存儲過程等。和直接在應用程序端利用數據庫API執行數據庫操作相比,利用存儲過程可在執行時進行編譯并放置在后臺的Cache中,可以直接進行再次執行。同時利用存儲過程可以減少網絡傳輸代價,這是因為一方面存儲過程在服務器端執行,另一方面存儲過程返回的存儲過程名、參數、查詢結果等少量詞句而不是整個事務的查詢語句。在特定條件下才執行的相關事務可選用觸發器,它具有和存儲過程類似的優化效果。
3 結論
總之,在應用型工程數據庫設計和使用中,僅通過優化數據模型、調整系統層設置(如處理器數量、文件系統、內存等)來優化系統往往取不到預期效果,對于中小型系統更是如此。工程實踐中往往采用以下方式進行優化:1) 通過規則推理對輸入數據進行優化,保證數據的完整性和準確性;合理利用范式和非范式策略設計數據表結構,保證實用性和規范性的統一。
2) 對常用的表和執行語句進行索引和查詢語句優化選擇;將事務執行轉向服務器端來節省網絡開銷,提升事務運行效率。
按以上方式來優化數據庫,可以較明顯的提升面向通用類機械產品虛擬裝配的工程數據庫等應用型工程數據庫系統實際運行效果。
參考文獻:
[1] 喬淑云,孟凡榮,李來喜,等. 工程數據庫體系結構的應用研究[J].能源技術與管理,2004(3):88-89.
[2] 陳躍鵬,任建平.發動機工程數據庫與機械CAD應用程序間的信息傳遞[J].機械管理開發,2004,78(3):71-73.
[3] 宛延凱.工程數據庫系統[M].北京.清華大學出版社,2000:73-78.