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