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