首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 資料庫建模與設計實務精要

     編輯:Oracle 資料庫相關知識

前言

開發資料庫應用系統,最關鍵的一環在於資料庫的建模設計。從邏輯到物理,任何環節疏於設計,整個系統就如蓋在危樓之上,隨著開發深入將面臨不可預期的風險,修改成本將呈指數級上升。優良的資料庫設計是高效能系統的基石。

一、邏輯建模

建模階段與具體資料庫無關,可使用 Rational Rose、PowerDesigner 等通用工具。此階段依據系統需求,分析資料內部與外在關係,建立完整資料結構(關聯式資料庫即表結構),並進行資料量、流量、回應速度的估算。操作準則包含資料庫正規化、用戶需求、分析師經驗,從效能、安全、易管理性、易開發性出發。工具雖非強制,但能簡化流程並產出 E-R 圖,讓分析過程一目瞭然。

二、物理設計

物理設計與目標資料庫、硬軟體平台息息相關,核心在於合理分配物理空間,關乎資料安全與效能。具體包含:表空間資料檔案在磁碟上的分配、依資料量決定 redo log、rollback segment 大小並分配。分配原則(以 Oracle 為例):

  1. 表與索引分置不同表空間,嚴禁將非核心物件置於 SYSTEM 表空間,確保資料與索引表空間位於不同實體磁碟。
  2. 瞭解用戶存取模式,將頻繁同時查詢的物件分散於不同實體磁碟。
  3. 大型物件(LOB)若允許並行存取,宜採用分區技術分散儲存於多磁碟;百萬列以上大表更需注意作業系統檔案大小限制。
  4. 至少在不同磁碟建立兩個使用者自訂的 rollback 表空間,並在初始化參數中安排 rollback segment 跨磁碟輪換。
  5. redo log 檔案置於讀寫較少的磁碟,每實例至少兩組以上,同組成員置於不同裝置。
  6. 估算表與索引大小,決定表空間尺寸與磁碟配置,依表特性設定儲存參數(pctfree、pctused)。

三、資料庫參數設計

資料庫建立時有預設參數,但需依應用特性(OS 平台、實例數、記憶體大小、執行緒模式、備份模式等)調整。此步驟對效能至關重要,也是滿足應用功能需求的關鍵。

四、與開發工具的介面整合

須考量與選定開發工具的介面相容性(JDBC、BDE、ADO 等),重點在可用性與效率。此步驟多仰賴實務經驗,因產品層出不窮,需在實戰中驗證最佳選擇。

實戰案例:大型企業集團勞資管理系統

系統服務數十家分廠,各廠維護 Access 資料庫定期傳輸至總部,屬分散式資料庫架構。

邏輯建模

人員檔案約 100MB,加上編碼資料總量約 300MB。資料輸入維護於各廠,匯總至總部,流量大、回應速度要求一般。採用 Rational Rose 2000,依需求設計 Use Case View,於 Logic View 產生實體與 E-R 圖,再生成 Data Modeler,最後透過 Schema Generation 在目標 Schema 下建表。

物理設計

  1. 職工檔案含照片,拆分為基本資料表與照片表,並採用分區技術,不同分區置於不同表空間。
  2. 檔案表頻繁與編碼表聯查,故分置不同表空間避免 I/O 爭用。
  3. 建立兩個 rollback 表空間、十個 rollback segment 分區存放,並建立一大型 rollback segment 應對批量異動。
  4. redo log 置於低負載磁碟,建立三組雙成員配置,採 ARCHIVELOG 模式。
  5. 依表特性設定儲存參數:職工檔案頻繁異動,設 PCTFREE 10、PCTUSED 80,估算區塊數規劃表空間大小。
  6. 建立資料庫安全體系,彙整權限等級建立角色供開發使用。

參數設定

採用 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、設計師、開發人員共同完成,分工各有側重。若開發與生產環境不同,需雙軌設計並確保相容性與可移植性。希望這些實務經驗能提供參考借鑑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved