Oracle平臺應用數據庫系統的設計與開發 (2)
java script:;" onClick="javascript:tagshow(event, '%CA%FD%BE%DD%BF%E2');" target="_self"> 數據庫 應用系統的設計與開發 1、應用設計 不論使用何種工具或語言來開發應用程序,都需要進行應用的全面設計。應用設計包括: 首先,分析應用要完成的功能,確
javascript:;" onClick="javascript:tagshow(event, '%CA%FD%BE%DD%BF%E2');" target="_self">
數據庫應用系統的設計與
開發 1、應用設計
不論使用何種工具或語言來開發應用程序,都需要進行應用的全面設計。應用設計包括:
首先,分析應用要完成的功能,確定應用類型,是OLTP(聯機事務處理)系統、DSS(決策支持)系統還是批處理系統;
其次,了解應用在何時由誰使用、應用訪問的數據、應用程序用到的組件、應用被要求的響應時間等,在設計前,必須對這些問題盡量進行解答,這對應用設計特別是大規模的應用設計非常重要;
第三,根據上面的
資料,確定應用的體系結構,是采用client/server兩層架構的方式,還是采用browser/server多層架構的方式實現一個開放的分布式應用系統,如何對應用
服務器進行選擇與配置;
第四,將應用按功能劃分為一個或多個應用程序,明確應用程序的具體功能、類型、組成,使用時間及高峰時間、事務的流量、用戶組成、訪問的
數據庫對象等,確定應用程序間的關聯和互操作特性,對各個應用程序的執行時間合理地進行安排;
第五,對應用程序進行模塊化設計,選擇實現應用的數據庫組件和
開發語言及工具。
2、應用開發
在應用開發階段,根據應用的不同,實現的方法和步驟會有很大的差異。這里只討論以下在應用開發中需要重點注意的幾個問題。
1) 在開發會話關鍵型應用程序時,盡可能使用Pro*C/
C++或OCI。在編寫后備實例和數據庫失敗恢復等需要進行數據庫重新連接的代碼時,用Pro*C/
C++ 或OCI比用PL/
SQL要容易實現,在
Oracle8/8i中,OCI可以實現透明應用程序失敗恢復(TAF)。編寫數據庫操作繁重的應用程序,使用OCI,OCI程序對數據庫的訪問是通過調用OCI庫函數實現的,能夠直接到達系統內核,比Pro*C/C++速度更快。
2) 在開發會話關鍵型應用程序時,盡量實現失敗檢查和恢復能力,如指定后備數據庫或實例、終止出錯客戶進程等。
3) 編寫代碼時,要考慮應用程序的可維護性,盡量將應用程序獨立于數據庫的變化??墒褂靡晥D、相對變量類型定義(%TYPE)、記錄型變量定義(%ROWTYPE),采用表驅動的應用程序設計模式。
4) 進行充分的
單元測試和模塊測試,為應用集成打下堅實的基礎。
5) 對關鍵表操作的應用程序實現要特別當心,必要的話,在應用中對關鍵表先做備份,應用成功執行后再刪除備份表。
6) 編碼結束后,應對代碼進行優化。前面提到過,代碼優化在數據庫應用中非常重要,很高比例的
性能問題與編碼拙劣的應用程序有關。
7) 定期對應用操作的數據庫對象增長的情況進行監控,避免因空間不足引起的應用程序的失敗。
8) 對應用的數據定時進行整理。有些應用中,存放在數據庫表中的數據只要求保存一段時間,就需要定時對數據進行刪除。如果手工進行刪除操作,
工作量很大,可以用Oracle提供的作業來完成,
unix系統下可用cron進程來實現。筆者在工作中經常使用cron來做數據的定時刪除,根據應用要求,編制Pro*C/C++程序,編寫Shell腳本調用應用程序,將Shell腳本提交給cron進程。
注意:在Shell腳本中必須設置相應的Oracle環境變量,如ORACLE_BASE、ORACLE_HOME、NLS_LANG、LD_LIBRARY_PATH、PATH等,用戶環境文件中的定義是無效的。
9)對于大量刪除操作的應用程序,如果表是分區存放的,可對數據分區執行截斷(truncate)操作,截斷操作執行速度快并且不會產生碎片,但截斷后可能需要進行重建索引的工作。對大量的數據做刪除(delete)操作,會引起數據庫回滾段的急劇增長,建議根據刪除數據量為這類應用創建特殊的專用回滾段,為專用回滾段指定合適的storage參數。平常,專用回滾段可以是離線的(offline),在事物開始前,使專用回滾段在線(online),指定事物使用專用回滾段,事物結束后再使專用回滾段離線,筆者使用的部分代碼 (Pro*C/C++) 如下所示。
..
EXEC SQL WHENEVER SQLERROR goto Error;
EXEC SQL CONNECT :uid;
..
EXEC SQL ALTER ROLLBACK SEGMENT RBS_SPEC ONLINE;
EXEC SQL SET TRANSACTION USE ROLLBACK SEGMENT RBS_SPEC;
..
EXEC SQL DELETE FROM .. WHERE ..;
EXEC SQL ALTER ROLLBACK SEGMENT RBS_SPEC OFFLINE;
.. |
結束語
Oracle數據庫是一個功能強大的數據庫系統,適用于各種各樣的應用系統,系統規??纱罂尚?,應用設計或簡單或復雜,因此在使用過程中要根據各自不同的應用進行設置與調整。