劉雪香
(廈門東海職業技術學院,福建 廈門 361112)
大型ERP實施中數據庫的設計優化研究
劉雪香
(廈門東海職業技術學院,福建 廈門 361112)
ERP是企業信息化建設中的重中之重,而數據庫選型及設計優化又是影響其實施成敗的關鍵因素。本文根據某集團公司實施易拓ERP系統中所遇到的問題及如何決策進行了總結概括,包括但不限于數據庫邏輯結構設計、物理結構設計、應用程序設計等問題。
信息化;ERP實施;數據庫設計;優化
隨著信息化技術的發展,企業的信息化[1]正朝著不斷加深廣度、深度的趨勢前行,尤其是當前國家提出“互聯網+”及“兩化融合”的國家重大方針政策,是從全局的高度為企業發展指明了方向。工業化、信息化是每個企業必然經歷的階段,其中最重要的環節就是企業資源計劃(ERP)系統實施運行,基于各行業典型企業最佳化管理實踐經驗,ERP的實施并不是千篇一律,而是有著深層次的實施方法論,是一個系統性工程項目。再者,ERP的實施周期長、涉及所有部門及流程、而且耗費大量人力財力,所以保證ERP實施[2]成功率是一個重大課題,而其中數據庫設計又是重中之重。
數據庫一般分為大型、中型、和小型數據庫,不同規模及業務復雜度的企業應根據實際情況,選擇合適的數據庫類型,然后再去選型。大型數據庫的效率,穩定性,安全性,恢復性等非常好,適用于各種規模的應用,但是使用起來非常繁瑣, 首先安裝的時候要求很多, 一般都是安裝在小型機上, 新建一個庫需要設置很多東西, 備份和恢復也非常繁瑣。中性數據庫價格相對大型數據庫便宜很多甚至免費,而且性能在一般企業應用上幾乎沒有差別,且對硬件要求不高,完全可以運行在PC上,操作簡單,建庫,備份,還原都很容易,無需專業認證的人員,適合中小企業使用。
參與項目簡介,廈門某汽車經銷商集團,項目選型鼎捷易拓TOPGP版,系統架構為Linux+oracle,業務財務全模塊實施,同時包括工作流、BI、Portal等,多系統之間無縫集成,整合度高。作者主要擔任甲方公司IT團隊的技術顧問,為數據庫版本選型,框架設計,賬套設置原則,數據表設計規范等事項提供咨詢建議[3]。
1.1 命名規范性
不同的數據庫產品對對象的命名有不同的要求,其涉及對象包括表、字段、索引、鍵值、視圖、觸發器、存儲過程、函數、序列、表空間、數據文件、包等。在項目啟動初期,必須針對數據庫設計之命名規范制度化,其要求包括但不限于以下幾點:
禁止使用數據庫關鍵詞;
區分大小寫;
對共性的字段,比如所有者、所屬部門等,編碼采用英文單詞形式,便于閱讀使用;
一個大型多組織多賬套ERP系統,其對應的數據庫表往往以千計。如何能夠快遞查詢到所需表對象,或見到某一具體表對象名就能知道其用途,會大大提高管理效率。所以,在創建數據庫之前,最好制定一個數據庫對象的前綴、后綴命名規范。其次,表、視圖、函數等最好也有統一的前綴。如視圖可以用V為前綴,而函數則可以利用F為前綴。如此數據庫管理員無論是在日常管理還是對象引用的時候,都能夠在最短的時間內找到自己所需要的對象。結合作者實施的項目,建議如下:
不同類的數據庫對象,使用不同類的_后綴,比如表后綴oea_file;
客制表或字段,使用特定前綴_,比如表前綴tc_oea_file;
同一數據庫對象,同一業務類型使用同一前綴加流水號尾碼,比如字段oea001;
表中應該避免可為空的列。數據庫在處理空列的時候,需要進行特殊的處理。如此的話,就會增加數據庫處理記錄的復雜性。當表中有比較多的空字段時,在同等條件下,數據庫處理的性能會降低許多。
表中記錄應該有一個唯一的標識符。數據庫表設計,建議用一個ID號來唯一的標識行記錄,而不要通過編號、名字等字段來對紀錄進行區分。每個表都應該有一個ID列,任何兩個記錄都不可以共享同一個ID值。另外,這個ID值最好有數據庫來進行自動管理,而不要把這個任務給前臺應用程序。否則的話,很容易產生ID值不統一的情況[4]。
1.2 規范化和反規范化
數據庫設計中的范式,根據約束條件的不同,一般有1NF、2NF、3NF三種范式。數據庫中數據規范化的優點是減少了數據冗余,節約了存儲空間,相應邏輯和物理的I/O次數減少,同時加快了增、刪、改的速度。但是一個完全規范化的設計并不總能生成最優的性能,因為對數據庫查詢通常需要更多的連接操作,從而影響到查詢的速度。故有時為了提高某些查詢或應用的性能而有意破壞規范規則,即反規范化。
高規范化的數據庫設計,目前占據著主導地位,這種方式能達到數據存儲空間的最佳利用和存儲數據較少響應時間的較好平衡;而非規范化的設計,近年來,隨著企業數據庫中數據量由GB到TB的急劇膨脹,數據響應速度變得越來越慢,一個完全規范化的設計有時會影響數據庫的運行效率,反而合理的使用反規范化設計,可較好地優化數據庫性能[5]。
隨著硬件存儲的極大發展,犧牲空間換效率,不失為一個明智的選擇。
1.3 索引的使用原則
索引可以大大加快數據庫的查詢速度,索引把表中的邏輯值映射到安全的RowID,因此索引能進行快速定位數據的物理地址。但是有些DBA發現,對一個大型表建立的索引,并不能改善數據查詢速度,反而會影響整個數據庫的性能。這主要是和SGA的數據管理方式有關。ORACLE在進行數據塊高速緩存管理時,索引數據比普通數據具有更高的駐留權限,在進行空間競爭時,ORACLE會先移出普通數據。對一個建有索引的大型表的查詢時,索引數據可能會用完所有的數據塊緩存空間,ORACLE不得不頻繁地進行磁盤讀寫來獲取數據,因此在對一個大型表進行分區之后,可以根據相應的分區建立分區索引。如果對這樣大型表的數據查詢比較頻繁,或者干脆不建索引。另外,DBA創建索引時,應盡量保證該索引最可能地被用于where子句中,如果對查詢只簡單地制定一個索引,并不一定會加快速度,因為索引必須指定一個適合所需的訪問路徑。
ORACLE要使用一個索引,有一些最基本的條件:where子名中的這個字段,必須是復合索引的第一個字段;where子名中的這個字段,不應該參與任何形式的計算[6]。
1.4 臨時表或視圖
視圖是從一個或幾個基本表(或視圖)導出的表。它與基本表不同,是一個虛表。數據庫只存放視圖的定義,而不存放視圖對應的數據,這些數據仍存放在原來的基本表中。所以基本表中的數據發生變化,從視圖中查詢出的數據也就隨之改變了。從這個意義上講,視圖就像一個窗口,透過它可以看到數據庫中自己感興趣的數據及其變化。
創建臨時表或視圖,就是根據需要在數據庫基礎上創建新表或視圖,對于多表關聯后再查詢信息的可建新表,對于單表查詢的可創建視圖,這樣可充分利用數據庫的容量大、可擴充性強等特點,所有條件的判斷、數值計算統計均可在數據庫服務器后臺統一處理后追加到臨時表中,形成數據結果的過程可用數據庫的過程或函數來實現[7]。
由于物化視圖會不停的刷新各DB數據,建議對于時間敏感性不強的表,減小刷新頻率,以2小時為例:
declare
job_xxx number;
begin
dbms_job.submit(job_xxx,
'dbms_mview.refresh(''xxx_file'', ''c'');', sysdate,
'TRUNC(sysdate,''hh'') + 1 / 12');
end
commit;
1.5 數據的一致性和完整性
事務是在一次性完成的一系列操作,用于保證數據的一致性,它由一組相關的dml語句組成,該組的dml(數據操作語言,增刪改,沒有查詢)語句要么全部成功,要么全部不做。正是大型數據庫的這一特性,使得數據的完整性得到了極大的保證。
當用戶執行一條修改數據庫的DML語句時,DBMS自動在日志文件中寫一條記錄,顯示被這條語句影響的每一條記錄的兩個副本。一個副本顯示變化前的記錄,另一個副本顯示變化后的記錄。當日志寫完之后,DBMS才實際對磁盤中的記錄進行修改。
如果用戶隨后執行COMMIT語句,事務結束也被記錄在事務日志中。如果用戶執行ROLLBACK語句,DBMS檢查日志,找出自事務開始以來被修改的記錄“以前”的樣子,然后使用這些信息恢復它們以前的狀態,有效地撤銷事務期間對數據庫所做的修改[8-9]。
1.6 擴展性
擴展性要求軟件能夠有效地利用硬件的能力,軟件的設計應該支持并行計算。對于數據庫引擎,這意味著服務器組件必須支持多線程計算,允許操作系統在所有處理器核心上執行并行任務調度。不僅如此,數據庫引擎必須提供有效的方法,以在多核上分解工作負荷。舉個例子,如果數據庫只使用四個線程,那么它在四核處理器和八核處理器上允許,并不能體現出性能差異。
軟件設計中通常用耦合度和內聚度作為衡量模塊獨立程度的標準。劃分摸塊的一個準則就是高內聚低耦合。同樣借鑒該概念,如果數據表設計中,耦合很強,互相牽扯調用很多,那么會牽一發而動全身,不利于維護和擴展。另外就是可擴展字段預留,針對不同用途的表,對后期可能有擴展需求的數據類型字段進行預留,建議預留比率為20%左右[10-11]。
數據庫是ERP系統的關鍵,數據庫設計是否合理直接影響著ERP軟件在企業中的應用,數據庫設計合理性關乎ERP系統功能實現度、穩定性、擴展性。有了健壯的數據庫,系統上線后,還要做好數據備份,建立完整的備份恢復計劃[12],在日常的維護中,必須保證數據的安全、可靠和完整。除此之外,還要做好數據庫系統參數的配置與優化為了保持數據庫有更良好、更高效的狀態,需要經常按照實際情況來不斷調整優化數據庫的參數配置,以合理分配系統資源,達到整個系統性能的最優化。
[1] 沈沁. 企業信息化建設中ERP系統的實施[J]. 財會月刊, 2016(16): 92-93.
[2] 王蘭富. 企業ERP實施反思[J]. 企業管理, 2015(8): 102-106.
[3] 姜曉潔. 探討軟件開發中文件或數據庫系統的選擇策略[J].軟件, 2014, 35(3): 192-193.
[4] 劉芬. 關于SQL數據庫的性能優化問題的研究[J]. 軟件, 2012, 33(6): 139-141.
[5] 鄧小善, 羅大庸. 數據庫反規范化設計的探討與實現[J].計算機系統應用, 2007, 16(4): 50-53.
[6] 王倫文, 鐘子發, 張旻. ORACLE數據庫設計優化與實踐[J]. 電訊技術, 2001, 41(1): 68-71.
[7] 李凡. 在Oracle數據庫中實現物化視圖[J]. 卷宗, 2016(11).
[8] 王麗娟, 米西峰. 數據庫設計規范及設計技巧研究[J]. 電腦知識與技術, 2015, 11(10): 12-13.
[9] 姚樹春. Oracle數據庫應用中安全問題研究[J]. 軟件, 2014, 35(1): 94-95.
[10] 徐卓. 關于Oracle數據庫設計、開發、應用的探討[J]. 鐵路計算機應用, 2014, 23(9): 59-62.
[11] 皮金鵬. MySQL 數據庫的安全防御體系研究[J]. 軟件, 2012, 33(11): 263-264.
[12] 劉超, 張明安. 基于Oracle數據庫系統的備份與恢復技術研究[J]. 軟件, 2014, 35(3): 125-128.
Research on Design Optimization of Database in Multi -Organization ERP Implementation
LIU Xue-xiang
(Xiamen Donghai Institute, Xiamen Fujian Province, 361112)
ERP is the most important factor in enterprise information construction, and database selection and design optimization is the key factor affecting the success or failure of its implementation. This paper summarizes and summarizes the problems encountered in the implementation of the ERP system in a group company, including but not limited to database logical structure design, physical structure design, application design and so on.
Informatization; ERP implementation; Database design; Optimization
TP311
A
10.3969/j.issn.1003-6970.2017.05.029
劉雪香(1984-),女,山東省安丘市,碩士學位,專任教師,講師,計算機網絡技術及圖像處理。
劉雪香(1984-),女,工程師,碩士。
本文著錄格式:劉雪香. 大型ERP實施中數據庫的設計優化研究[J]. 軟件,2017,38(5):137-139