熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

淺談Oracle數據庫的建模與設計

2013-11-13 15:44:06  來源: Oracle 

  要開發一個基於數據庫的應用系統其中最關鍵的一步就是整個系統所依據的數據庫的建模設計從邏輯的到物理的一個環節疏於設計整個的應用系統便似建立在危房之上隨著開發過程的不斷深入它要隨時面臨著各種難
  
  以預料的風險開發者要為修改或重新設計沒有設計好的數據庫系統而付出難以預料的代價所以一個良好的數據庫設計是高效率的系統所必須的
  
  邏輯建模
  
  數據庫設計的方法因具體數據庫而異但是建模階段的相同的所以可以用一些通用的工具來進行如Rational rosePowerDesigner等這一階段主要是依據系統的需求獲取與分析要實現的應用系統信息進行數據內部以及外在關系的分析從而有效地建立整個系統的數據結構(在關系數據庫中通常稱為表結構)在此基礎上對數據庫的數據量數據流量及響應速度的估算分析這樣數據模型就產生了具體的操作准則是數據庫的幾個范式用戶的具體需求和分析者的經驗從數據庫的性能安全方便管理易於開發等方面出發具體方法因分析員的喜好和習慣而異可以不用工具最好使用工具能讓分析過程簡便最主要是能生成一些圖如ER圖讓分析過程一目了然
  
  物理設計
  
  此步設計和系統將具體使用的數據庫有關也和數據庫所運行的硬軟件平台有關目的是盡量合理地給數據庫分配物理空間這一步在數據庫設計中很重要關系到數據庫數據的安全和數據庫的性能具體的來說這一步包括相應表空間的數據文件在磁盤上的分配還要根據數據量的大小確定redolog文件rollback段的大小然後進行分配這些文件的分配要遵循一些原則本著利於備份利於性能優化的原則原則如下(以ORACLE數據庫為例)
  
  為表和索引建立不同的表空間禁止在系統表空間中放入非核心oracle系統成分的對象確保數據表空間和索引表空間位於不同的磁盤磁盤驅動器上
  
  了解終端用戶怎樣訪問數據如果可能將經常同時查詢和頻繁查詢的對象放在不同的物理磁盤上
  
  當數據庫包含允許用戶並行訪問不同數據元素的大對象時將對象分割存放在多個磁盤上是有好處的可以采用分區在某個操作系統平台上定義擁有數百萬行的表時則更需小心因為數據庫文件的大小受到限止這種限制是由操作系統而不是由oracle引起的
  
  在獨立的各盤上至少創建兩個用戶定義的rollback表空間以存放用戶自己的rollback段在初始化文件中安排rollback段的次序使它們在多個磁盤之間進行切換
  
  將redo log文件放在一個讀寫較少的盤上對於每個oracle 實例要建立兩個以上的redo log 組同組的兩個成員放在不同的設備上
  
  確立表和索引的大小這決定了保存它們所需的表空間的尺寸也決定了哪些表空間物理地裝在哪些盤上和哪些表空間可以結合在一起具體的估算方法可以按照oracle 一些公式這裡還要按照各個表的具體特性用途定義它的存貯參數如(pctfreepctused)
  
  關於數據庫參數的設計
  
  每個數據庫在建立時都有缺省的參數設置但是對於具體的應用要求參數設置可能不同缺省的參數設置往往需要根據應用系統的特點而需要改動如每個數據庫的操作系統平台instance 數目各種內存大小的設置采取的線程方式備份方式等不同具體的參數就一定要進行最為恰當的修改這個步驟對數據庫性能很重要也是保證應用系統所要求的數據庫功能得以實現重要一步
  
  與開發軟件的接口問題
  
  數據庫設計最後要考慮的是與要選擇的開發軟件之間的接口問題要准備好接口程序有些是第三方軟件已經備好的有些是數據庫本身要具備的如jdbcbdeado等與數據庫的接口主要是考慮接口的可用性效率問題這一步主要從經驗出發因為這種產品不斷出台而且都是經過各商家的吹捧要在實踐中決定哪個是最適合
  
  以上是數據庫建模設計的幾個重要步驟的大致分析整個設計過程是不斷地改進的是數據庫管理員設計人員開發人員共同完成的只是各有側重點不同數據庫管理員側重於是步的設計設計人員側重於步的設計而開發人員側重於步的設計由於有些應用系統的編程環境和實際應用環境不同所以要做兩套設計並注意兩套設計的兼容性可移植性
  
  下面結合一個實際開發的勞資管理系統中的數據庫設計對以上幾個步驟做進一步解釋
  
  該系統應用於大型企業集團包括幾十個分廠基本數據均來源於各分廠各分廠有一套access數據庫存貯著自己的人才檔案信息由各廠自己維護定期傳到總的數據庫裡供勞資處各室查詢統計用這是一個分部式的數據庫
  
  邏輯建模
  
  首先是對數據庫的數據量數據流量及響應速度的估算分析這一步對物理設計也是必須的勞資系統的主要數據是人員檔案大概有兆左右還有人員配備等信息加上工種序列工資等級廠礦車間等各種編碼總的數據量大約在某些方面兆左右數據的輸入維護大部分在各廠礦進行然後到處裡集中所以數據流量很大對響應速度要求一般
  
  在邏輯建模上的工具上采用Rantional rose 根據用戶的需求設計各種use case view 在 logic view中生成數據庫的實體及實體之間的ER圖然後生成Data modeler確定以後用Schema generation在建好的數據庫中的對應的用戶下生成表
  
  詳細的圖很繁瑣在這裡就不展示了
  
  物理設計
  
  因為職工檔案信息庫很大還有照片所以把它分成兩個表把照片單獨地放在一個表中並且采用分區技術在檔案表照片表上建立分區不同的分區分別放在不同的表空間
  
  因為職工檔案信息庫裡有許多編碼查詢的時候要和編碼庫一起進行read操作所以不把職工檔案信息表和編碼庫放在一個表空間
  
  建立二個rollback 表空間十個rollback段分區放在二個表空間裡建立一個比較大的rollback段因為職工檔案信息表經常會有批量的修改與添加
  
  將redo log文件放在一個讀寫較少的盤上建立三個redo log 組同組的兩個成員放在兩個盤上因為選用的是ARCHIVELOG的備份方式
  
  根據每個表的性質確定其存貯的參數如職工檔案信息表的修改刪除插入都比較多所以把它的Pctfree Pctused 定大小估算出它大致需要的block數算出存放這些表的表空間的數據文件的大小
  
  根據用戶的需求建立一套數據庫的安全體系也就是總結出幾種權限級別的用戶建立這些用戶並給這些用戶賦上相應的僅限供開發人員編程時使用
  
  參數的設置
  
  缺省的初始化參數文件中選擇large因為用戶數很多個左右
  
  SHARED_POOL_SIZE 與數據庫大小有關也與應用軟件有關這裡設成缺省值的
  
  DB_BLOCK_BUFFERS 根據所用服務器的內存與交易數的大小設為
  
  SORT_AREA_SIZE 根據所用服務器的內存設為
  
  LOG_BUFFER 用缺省值的
  
  DBWR_IO_SLAVES 設為
  
  ROLLBACK_SEGMENTS 根據交易量的大小定為分別放在兩個磁盤上
  
  PROCESS
  
  MTS_SERVERS
  
  MTS_DISPATCHERS tcp
  
  ARCHIVE_LOG_START TRUE 采用ARCHIVE方式備份
  
  這些參數的確定是暫時的沒有一個系統可以運行之前把參數確定得正好需要在應用程序運行之後進行調整
  
  與開發軟件的接口問題
  
  因為我們這個系統的開發軟件用的是Borland c++builder 所以采用的是比較成熟的BDE的接口它是Borland公司提供的性能比較好
From:http://tw.wingwit.com/Article/program/Oracle/201311/17218.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.