開發資料庫應用系統,最關鍵的一環在於資料庫的建模設計。從邏輯到物理,任何環節疏於設計,整個系統就如蓋在危樓之上,隨著開發深入將面臨不可預期的風險,修改成本將呈指數級上升。優良的資料庫設計是高效能系統的基石。
建模階段與具體資料庫無關,可使用 Rational Rose、PowerDesigner 等通用工具。此階段依據系統需求,分析資料內部與外在關係,建立完整資料結構(關聯式資料庫即表結構),並進行資料量、流量、回應速度的估算。操作準則包含資料庫正規化、用戶需求、分析師經驗,從效能、安全、易管理性、易開發性出發。工具雖非強制,但能簡化流程並產出 E-R 圖,讓分析過程一目瞭然。
物理設計與目標資料庫、硬軟體平台息息相關,核心在於合理分配物理空間,關乎資料安全與效能。具體包含:表空間資料檔案在磁碟上的分配、依資料量決定 redo log、rollback segment 大小並分配。分配原則(以 Oracle 為例):
資料庫建立時有預設參數,但需依應用特性(OS 平台、實例數、記憶體大小、執行緒模式、備份模式等)調整。此步驟對效能至關重要,也是滿足應用功能需求的關鍵。
須考量與選定開發工具的介面相容性(JDBC、BDE、ADO 等),重點在可用性與效率。此步驟多仰賴實務經驗,因產品層出不窮,需在實戰中驗證最佳選擇。
系統服務數十家分廠,各廠維護 Access 資料庫定期傳輸至總部,屬分散式資料庫架構。
人員檔案約 100MB,加上編碼資料總量約 300MB。資料輸入維護於各廠,匯總至總部,流量大、回應速度要求一般。採用 Rational Rose 2000,依需求設計 Use Case View,於 Logic View 產生實體與 E-R 圖,再生成 Data Modeler,最後透過 Schema Generation 在目標 Schema 下建表。
採用 large 範本(用戶約 100 人)。SHARED_POOL_SIZE 設為預設 1.5 倍;DB_BLOCK_BUFFERS 25MB;SORT_AREA_SIZE 10MB;LOG_BUFFER 1.5 倍;DBWR_IO_SLAVES=1;ROLLBACK_SEGMENTS=10 分置兩磁碟;PROCESSES=80;MTS_SERVERS=3;MTS_DISPATCHERS=tcp,3;啟用 ARCHIVE_LOG_START。參數需在應用上線後持續微調。
採用 Borland C++Builder 5,使用成熟穩定的 BDE 介面。
資料庫建模設計是持續迭代的過程,由 DBA、設計師、開發人員共同完成,分工各有側重。若開發與生產環境不同,需雙軌設計並確保相容性與可移植性。希望這些實務經驗能提供參考借鑑。