刘雪香
(厦门东海职业技术学院,福建 厦门 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