左文濤 方斌 吳新玲
【摘 要】隨著大數據云計算技術逐步成為數字經濟的基礎設施,規模化、業務化、智能化的海量數據在數據庫中存儲計算,數據庫的地位顯得越來越重要。在計算機軟件開發中,必須設計好數據庫的開發規范,且遵循一定的設計原則才能適應業務發展和變化的客觀規律,滿足現代企業對數據一致性、實時性、可用性和擴展性的不同需求。
【關鍵詞】數據庫開發;開發規范;設計原則
數據庫系統是軟件開發過程中非常重要的組成部分,軟件一般是由處理業務的邏輯和數據結構組成的一套運行在計算機上的程序代碼。數據庫是存儲和提供統一查詢數據的系統軟件,它可以長期的將業務的數據保存在計算機的外部存儲器之中,并高效地管理業務數據,為軟件提供統一的數據查詢功能。數據庫的結構設計和開發貫穿于整個軟件開發的生命周期之中,與軟件的生命周期類似,數據庫開發也有著其自身的生命周期。需求分析、概念結構設計、邏輯結構設計、物理結構設計、數據庫具體實施和數據庫的運行維護,每個階段都遵循著一些設計原則,好的設計原則能夠在不同的數據要求中靈活迭代。
企業組織業務過程中的數據是其重要的資產,它們被用作保存操作型業務的記錄和分析決策。軟件在業務迭代升級的過程中,對應的數據庫的結構的開發也顯得尤為必要。操作型業務的記錄存儲在數據庫中需要確保企業業務的正常運行,其記錄了每一個業務中的重要的交易信息如:訂單、客戶、銷售、客戶反饋等,其只需要保證數據的準確一致和必要的容錯性,反映業務過程中最新的狀態和處理結果即可,通常不需要考慮歷史的數據的分析。分析決策類型的數據則著眼于歷史的企業組織的業務數據。對批量的業務記錄,通常是兩年以上的數據,經過統一處理用于評估組織在這期間的生產經營活動是否正常以及決策優化生產經營過程。
(一)數據庫開發需求分析
計算機軟件開發過程中,最重要的是需求分析,它在數據庫的開發過程中詳細地描述了系統的數據庫要儲存哪一些業務的數據,完成哪些具體的功能。常見的需求分析方法是dfd(Data Flow Diagram)數據流圖,它描述了軟件系統數據從哪些組件流向哪些組件,以及中間存儲在了哪里,做了哪些處理。線性和事務型兩種類型的dfd共同的描述數據庫開發過程中涉及的系統的數據的流向,可以更清晰更直觀地描述具體的需求,為后續的結構設計打好基礎。
(二)概念結構設計
概念結構設計不關注具體使用的是哪些數據庫,關注數據庫概念的闡述和數據對象之間行為的描述。數據字典對需求分析中的數據流圖的每個要素做出詳細的說明,數據項目的名字、說明、別名、類型、長度、取值范圍等一一描述,數據項目之間的組合關系,數據的傳輸路徑,數據停留和保存的方式、存取的方式和處理過程中的邏輯等都必須詳盡地表述出來。概念結構的設計一般是自底向上的過程,通過對需求歸納分析和抽象,形成E-R關系模型。E指的是Entity實體,R指的是Relationship關系,使用E-R模型可以描述現實世界的數據對象的屬性和實體之間的父子聯系。好的概念抽象可以使數據庫的設計更加的通用,更符合現實世界的業務的邏輯。
(三)邏輯結構設計
邏輯結構設計將概念結構設計的E-R圖[1]轉換為關系數據的模式,優化這些關系模式之間的依賴關系,常見的是使用關系模式的三大范式來規范概念結構設計的實體和實體之間的聯系,確定具體的數據依賴以及這些關系模式的碼和屬性。三大范式要求每個關系模式的屬性都是不可再分的原子數據,且主鍵確定了這個關系模式,非主鍵的屬性之間不會相互依賴。規范化的程度越高,數據的冗余就越小,但后期的查詢時間涉及的關系模式會越多,但是選擇合適的規范化的程度可以避免數據操作耗時,這也是另一個層面上的以空間換時間的優化方式。
(四)物理結構設計
以數據為中心的應用,數據庫物理結構設計的好壞直接影響到程序的性能,因此數據庫物理結構設計至關重要。索引是提高數據庫性能的常用方法,令數據庫服務器的檢索速度快很多倍,物理結構設計階段主要是將邏輯上的關系模式轉化為最適合應用程序運行的物理結果,包括數據庫的索引、輸入的參數、輸出的結果、對象之間的關系、日志、備份機制等都需要設計確定最終的選型。
聯機事務處理記錄某類業務事件的發生,即對數據的增刪改的操作,而聯機分析處理則是對數據的查詢分析。在企業組織的業務中它們代表著兩類業務,因此其對應數據庫開發設計的原則也大相徑庭。聯機事務處理為了維護ACID的強一致性通常使用三大范式的開發模式設計各類結構,聯機分析處理則是采用雪花模型或者星型模型來組織數據,數據對象存在一定的冗余,在查詢過程中,可以避免很多連接操作提升分析的效率。
(一)聯機事務開發設計原則
聯機事務[2]的數據所涉及的數據庫的對象如表、視圖、過程、函數、觸發器等在計算機軟件開發中十分的繁雜因此設計的時候必須遵循事務優先的開發規范。命名的規范是不使用保留字或者關鍵字,做到見名知意,數據庫對象的名稱格式按〈類型〉_〈模塊名稱〉_〈對象名稱〉_〈序號〉的固定格式如有其他格式需要單獨注明。建表的規范是不允許在默認的系統表空間中建表,不同對象如表和索引必須建在不同的表空間,對聯機事務的數據建表時不允許使用parallel的參數;主外鍵優先考慮數據庫自身提供的約束完整性的機制,在數據庫本身不滿足的情況下才考慮編程定義自定義完整性的約束,表的外鍵必須建立索引,主鍵通常不使用有實際業務意義的屬性作為主鍵,由Sequence生成的id,不能用作組合主鍵;索引列為null必須定義默認值,字段的命名長度不應該超過30個字節,超大的單表在建立時需要考慮按列的特征分區。臨時表在聯機事務的數據庫開發時經常和存儲過程、函數和包一起使用,為上層的計算機軟件提供了更多數據操作的便捷的接口,其對應的設計原則和規范是不允許頻繁地使用ddl的語句,臨時表必須放在獨立的磁盤上,外部查詢的多行數據返回使用游標進行處理,必須有對應的異常處理機制的設計。
(二)聯機分析開發設計原則
聯機事務的數據通常是非集成的,而聯機分析[3]的數據通常是集成的。在開發設計分析型的系統時應當遵循查詢優先的原則。當一列的值是連續的業務意義且可以使用范圍分組的情況下,如日期,身高,體重等,使用范圍分區劃分數據的數據塊;當一列的值是離散的業務意義且可以使用列表分組的情況下,如省份,地理位置,產品名稱等,使用列表分區劃分數據的數據塊;當一列的值既不具備明顯的連續的業務意義也不具備離散的業務意義時,如身份證編號等,數據量千萬級別,則可以使用哈希分區。分區的目的和索引一致,均是在聯機事務的數據需要查詢連接的時候提供更好的性能。索引的規范是數據量小于1000條記錄不需要建立索引,創建或重建索引時指定使用Nologging關鍵字,單個表上索引的個數不超過4個,頻繁的索引必須放入緩存,避免重復的創建。多表連接時,必須使用表的別名來關聯列,多個大單表進行連接時一條查詢語句中關聯的查詢的大表盡量不要超過3個,盡量使用共享的查詢語句,因為會緩存一部分會話查詢過的結果。
隨著大數據云計算技術逐步成為數字經濟的基礎設施,數據庫系統開發在軟件開發過程中的地位愈顯重要,數據庫開發以及其中各個階段的設計有其必要性。除此之外,在企業組織中聯機事務和聯機分析的業務也必須遵循各自的開發設計原則,才能適應業務發展和變化的客觀規律,滿足現代企業對數據一致性、實時性、可用性和擴展性的不同需求。
參考文獻:
[1]朱珍.基于E-R模型數據庫設計的關鍵技術研究[J].電腦編程技巧與維護,2019(05):77-79.
[2]李依霖.聯機事務處理系統應用于計算機專業學習的方法研究[J].網絡安全技術與應用,2020(10):122-124.
[3] Nosov A P,Akhrem A A, Rakhmankulov V Z,et al.Computational Complexity Analysis of Decomposition Methods of OLAP Hyper-cubes of Multidimensional Data[J].Mathematics and Mathematical Modeling,2020(4):52-64.