CIOAge.com IT推动创新
大型ERP数据库系统常见的几种设计(2)
出处:支点网 文: 支点网 评论 ( 0 ) 条 ( 0 ) 砖 ( 0 ) 好 论坛 博客
阅读提示:采用自增长 primary key主要是性能。早期的数据库系统,经常采用某种编号,比如身份证号码,公司编号等等作为数据库表的 primary key。然而,很快,大家就发现其中的不利之处。 ...
4.3 软件开发的需要。

使用固定的数据库库表从开发、二次开发来说,更加容易。对于用户使用过程中生成的表,每次查找数据时都要先查表名,再找数据,比较麻烦。

举例来说,早期的用友财务软件用 Access 作数据库,每年建立一个新的数据库。很快,用户和用友公司都发现,跨年度数据分析很难做。因此这是一个不好的设计。在 ERP 中,很少有不同的年度数据单独分开。一般来说,所有年份的数据都在同一个表中。对于跨国公司甚至整个集团公司都用同一个 ERP 系统的时候,所有公司的数据都在一起。这样的好处是数据分析比较容易做。

现在大多数数据库系统都能做到在常数时间内返回一定量的数据。比如,Oracle 数据库中,根据 primary key 在 100万条数据中取 10 条数据,与在1 亿条数据中取 10 条数据,时间相差并不多。

5. 避免一次取数据库大量数据,取大量数据一定要用分页。

这基本上是现在很多数据库系统设计的基本守则。ERP 系统中超过 100万条数据的表很多,对于很多表中的任何一个,一次取所有的会导致数据库服务器长时间处于停滞状态,并且影响其它在线用户的系统响应速度。

一般来说,日常操作,在分页显示的情况下面,每次取得数据在 1-100 之间,系统响应速度足够快,客户端基本没有特别长的停顿。这是比较理想的设计。这也是大型数据库系统往往用 ODBC, ADO 等等通用的数据库联接组件而不用特定的速度较快的专用数据库联接组件的原因。因为系统瓶颈在于数据库( Database) 方面(数据量大),而不在于客户端(客户端每次只取少量数据)。

在 B/S 数据库系统中,分页非常普遍。早期的数据库系统经常有客户端程序中一次性取大量数据做缓冲。现在已经不是特别需要了,主要原因有:

5.1 数据库本身的缓冲技术大大提高。

大部分数据库都会自动将常用的数据自动放在内存中缓冲,以提高性能。

5.2 数据库联接组件的缓冲技术也在提高。

包括 ADO 在内的一些数据库联接组件都会自动对数据结果集(result set)进行缓冲,并且效果不错。比较新颖的数据库联接组件,比如 Hibernate 也加入了一些数据结果集缓冲功能。

当然,也有一些数据库联接组件没有对数据结果集进行缓冲,比如 JDBC Driver,不过几年之内情况应该有所改观。也有些不太成功的数据缓冲,比如 EJB 中的实体Bean,性能就不尽如人意,实体Bean数据也是放在内存中,可能是因为占用内存过多的缘故。

相对来说,今天的程序员写客户端数据缓冲,能够超过以上两个缓冲效果的,已经比较难了。


共2页: 上一页 [1] 2
【内容导航】
 第 1 页:避免用复合主键  第 2 页:软件开发的需要
已有0人发表看法
我来说两句
验证码: (如果看不清请点击图片进行更换.)   匿名
最新评论更多..
服 务 CIO 推 进 信 息 化
主编推荐
最近更新
热门文章
中国CIO周刊
浪潮通软助力建峰化工信息化展现CIMS之舞 浪潮通软助力建峰化工信息化展现CIMS之舞
建峰化工CIMS工程的立项,获得了重庆市经委和科委的支持,两个机构分别向该工程拨款10万元和6万元人民币。虽然这部分资金与建峰化工CIMS工..
做好教育信息化需先行 浙大网络的S+S体验 做好教育信息化需先行 浙大网络的S+S体验
浙江大学网络信息系统有限公司是国内最大的教育软件专业开发商、教育电子商务提供商之一,占据国内校校通、城域网软件平台50%以上市场份额..
洞察
揭秘:中小化工企业拒绝ERP的四个理由 揭秘:中小化工企业拒绝ERP的四个理由
拥有43个行业、3000多家大企业、2~3万家中小企业的化工行业,其信息化水平究竟如何呢?前不久记者采访了中国化工信息中心副主任李中。李..
SaaS概念要落地 软件提供商不能任意定价 SaaS概念要落地 软件提供商不能任意定价
软件领域任何字母都可能组合成新的名词,进而上升到概念的高度,SaaS也不例外。2003年SaaS提出,顷刻间概念飞遍了各个角落,然而,概念不..