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

大型數據庫的設計原則與開發技巧

2013-11-13 12:44:27  來源: SQL語言 

  隨著計算機技術越來越廣泛地應用於國民經濟的各個領域在計算機硬件不斷微型化的同時應用系統向著復雜化大型化的方向發展數據庫是整個系統的核心它的設計直接關系系統執行的效率和系統的穩定性因此在軟件系統開發中數據庫設計應遵循必要的數據庫范式理論以減少冗余保證數據的完整性與正確性只有在合適的數據庫產品上設計出合理的數據庫模型才能降低整個系統的編程和維護難度提高系統的實際運行效率雖然對於小項目或中等規模的項目開發人員可以很容易地利用范式理論設計出一套符合要求的數據庫但對於一個包含大型數據庫的軟件項目就必須有一套完整的設計原則與技巧

  成立數據小組

  大型數據庫數據元素多在設計上有必要成立專門的數據小組由於數據庫設計者不一定是使用者對系統設計中的數據元素不可能考慮周全數據庫設計出來後往往難以找到所需的庫表因此數據小組最好由熟悉業務的項目骨干組成

  數據小組的職能並非是設計數據庫而是通過需求分析在參考其他相似系統的基礎上提取系統的基本數據元素擔負對數據庫的審核審核內容包括審核新的數據庫元素是否完全能否實現全部業務需求對舊數據庫(如果存在舊系統)的分析及數據轉換數據庫設計的審核控制及必要調整

  設計原則

  規范命名所有的庫名表名域名必須遵循統一的命名規則並進行必要說明以方便設計維護查詢

  控制字段的引用在設計時可以選擇適當的數據庫設計管理工具以方便開發人員的分布式設計和數據小組的集中審核管理采用統一的命名規則如果設計的字段已經存在可直接引用否則應重新設計

  庫表重復控制在設計過程中如果發現大部分字段都已存在開發人員應懷疑所設計的庫表是否已存在通過對字段所在庫表及相應設計人員的查詢可以確認庫表是否確實重復

  並發控制設計中應進行並發控制即對於同一個庫表在同一時間只有一個人有控制權其他人只能進行查詢

  必要的討論數據庫設計完成後數據小組應與相關人員進行討論通過討論來熟悉數據庫從而對設計中存在的問題進行控制或從中獲取數據庫設計的必要信息

  數據小組的審核庫表的定版修改最終都要通過數據小組的審核以保證符合必要的要求

  頭文件處理每次數據修改後數據小組要對相應的頭文件進行修改(可由管理軟件自動完成)並通知相關的開發人員以便進行相應的程序修改

  三設計技巧

  分類拆分數據量大的表對於經常使用的表(如某些參數表或代碼對照表)由於其使用頻率很高要盡量減少表中的記錄數量例如銀行的戶主賬表原來設計成一張表雖然可以方便程序的設計與維護但經過分析發現由於數據量太大會影響數據的迅速定位如果將戶主賬表分別設計為活期戶主賬定期戶主賬及對公戶主賬等則可以大大提高查詢效率

  索引設計對於大的數據庫表合理的索引能夠提高整個數據庫的操作效率在索引設計中索引字段應挑選重復值較少的字段在對建有復合索引的字段進行檢索時應注意按照復合索引字段建立的順序進行例如如果對一個萬多條記錄的流水表以日期和流水號為序建立復合索引由於在該表中日期的重復值接近整個表的記錄數用流水號進行查詢所用的時間接近而如果以流水號為索引字段建立索引進行相同的查詢所用時間不到因此在大型數據庫設計中只有進行合理的索引字段選擇才能有效提高整個數據庫的操作效率

  數據操作的優化在大型數據庫中如何提高數據操作效率值得關注例如每在數據庫流水表中增加一筆業務就必須從流水控制表中取出流水號並將其流水號的數值加一正常情況下單筆操作的反應速度尚屬正常但當用它進行批量業務處理時速度會明顯減慢經過分析發現每次對流水控制表中的流水號數值加一時都要鎖定該表而該表卻是整個系統操作的核心有可能在操作時被其他進程鎖定因而使整個事務操作速度變慢對這一問題的解決的辦法是根據批量業務的總筆數批量申請流水號並對流水控制表進行一次更新即可提高批量業務處理的速度另一個例子是對插表的優化對於大批量的業務處理如果在插入數據庫表時用普通的Insert語句速度會很慢其原因在於每次插表都要進行一次I/O操作花費較長的時間改進後可以用Put語句等緩沖區形式等滿頁後再進行I/O操作從而提高效率對大的數據庫表進行刪除時一般會直接用Delete語句這個語句雖然可以進行小表操作但對大表卻會因帶來大事務而導致刪除速度很慢甚至失敗解決的方法是去掉事務但更有效的辦法是先進行Drop操作再進行重建

  數據庫參數的調整數據庫參數的調整是一個經驗不斷積累的過程應由有經驗的系統管理員完成以Informix數據庫為例記錄鎖的數目太少會造成鎖表的失敗邏輯日志的文件數目太少會造成插入大表失敗等這些問題都應根據實際情況進行必要的調整

  必要的工具在整個數據庫的開發與設計過程中可以先開發一些小的應用工具如自動生成庫表的頭文件插入數據的初始化數據插入的函數封裝錯誤跟蹤或自動顯示等以此提高數據庫的設計與開發效率

  避免長事務對單個大表的刪除或插入操作會帶來大事務解決的辦法是對參數進行調整也可以在插入時對文件進行分割對於一個由一系列小事務順序操作共同構成的長事務(如銀行交易系統的日終交易)可以由一系列操作完成整個事務但其缺點是有可能因整個事務太大而使不能完成或者由於偶然的意外而使事務重做所需的時間太長較好的解決方法是把整個事務分解成幾個較小的事務再由應用程序控制整個系統的流程這樣如果其中某個事務不成功則只需重做該事務因而既可節約時間又可避免長事務

  適當超前計算機技術發展日新月異數據庫的設計必須具有一定前瞻性不但要滿足當前的應用要求還要考慮未來的業務發展同時必須有利於擴展或增加應用系統的處理功能

  相對於中小型數據庫大型數據庫的設計與開發要復雜得多因此在設計開發過程中除了要遵循數據庫范式理論增加系統的一致性和完整性外還要在總體上根據具體情況進行分布式設計緊緊把握集中控制統一審核的基本原則保證數據庫設計結構緊湊分布平衡定位迅速在數據庫操作上要采用一定的技巧提高整個應用系統的執行效率並注意適當超前以適應不斷變化的應用及系統發展的要求


From:http://tw.wingwit.com/Article/program/SQL/201311/16498.html
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.