海量数据存储方式论文
陈建华计算机科学与技术
管理信息系统(MIS)/企业资源计划(ERP)最大的特点和优点是数据积累。数据的积累不仅是对业务活动过程的记录,及时反映业务经营状况,还能从中归纳出有规律的信息,对以后的业务活动起到很好的指导作用,并且能够规范经营管理活动,提升管理水平。然而,随着数据的积累,数据表(Table)和数据库(DataBase)变得日渐庞大。数据访问时,随着检索范围加大,查询效率会显著降低,因此系统处理和响应的速度越来越慢。当系统响应慢到一定程度时,数据处理的时效性就不能满足要求,甚至导致数据丢失。同时,用户也将失去等待的耐心而逐步放弃使用系统,使系统失去存在的意义。因此,对信息管理系统来说,随着使用时间的增长,如何保证系统响应速度保持在用户可以接受的范围内,是MIS系统设计开发中普遍面临的技术难题。
当前,很多管理信息系统开发者为了回避这个技术难题,普遍要求使用单位配置硬件层面上数据存取能力极强的小型机。这样一来,使用单位将要增加几十万乃至几百万元的初始硬件投资,而且配套的软件平台投资和后继的培训、使用、维护成本也将大大增加。本文根据作者多年管理信息系统开发的研究和实践经验,提出一种应用PC服务器实现海量数据存取的方法,通过改进和优化数据的存取解决海量数据存取的技术难题,为信息系统使用单位节约投资和维护成本。
1、数据处理环境
数据处理环境为某大型商厦的企业资源计划管理系统,该系统有近300个使用站点,每年的业务数据量约2G。该企业资源计划管理系统采用HPLH6000 PC服务器(双PIIl550 Intel至强CPU、1G内存、Raid5磁盘阵列),,数据库管理软件采用Microsoft SQL Server2000。
2、PC服务器实现海量数据存取的方法
PC服务器实现海量数据存取的方法主要包括数据分类、数据分割、数据处理算法和数据访问4个部分。
为了减少数据的冗余,防止存储异常。提高处理速度,在开发过程中,针对各类管理对象都进行编号处理,并保存在不同的“对象定义表”中。同类对象放在同一个定义表中,编号不重复,并用不同的字段定义管理对象的属性。记录和加工业务数据时,只处理对象编号和业务数据,把结果放在不同的“业务数据表”中。在进行数据检索和存取时,通过数据视图(VIEW)或直接进行“对象定义表”和“业务数据表”的联接。根据业务数据被加工汇总的程度,又进一步把“业务数据表”划分为不同的“原始业务数据表”、“按日汇总业务数据表”、“按月汇总业务数据表”。经过记录和加工的业务数据,有部分是用来指导和规范业务活动的,把这部分数据分别存放在不同的
“业务管理表”中。数据分类结构如图1所示。
在使用系统过程中,用户最关心的数据是当月的业务数据,其次是当年的业务数据,再次是往年的业务数据。查询业务数据的频率从高到低排列,依次为当月、当年、往年,而且查询的时间段极少跨年度。根据这个规律,在数据库设计中,把“业务数据表”按年度分割存放,每年的“业务数据表”放在一个数据库(“年度数据库”)中,同时对当月的“业务数据表”另外放在一个数据库(“当前数据库”)中,这就保证了每个数据库和每个表的内容不会无限增长。
“对象定义表”中的各个字段值具有相对稳定的特点,因此也把它们按年度来保存。每个“年度数据库”中保存一份对应的“对象定义表”,当年的“对象定义表”保存在“当前数据库”中。
“业务管理表”存放的是一些规则和规律,数据量不大,但是要求被查询时能迅速返回结果,而且这些规则和规律只对正在发生和将来发生的业务起作用,因此把它们放在“当前数据库”中。数据分割存放结构如图2所示。
在实际的数据访问中,作业层工作人员最关注原始数据和流水清单数据,而管理层和决策层人员最关注按日或按月汇总的业务数据报表。大部分用于管理和指导的数据也是要求按日或按月汇总。因此,很多数据不是需要使用时才从原始数据来直接汇总加工,而是可以采用“以空间换时间”的原则,在适当的时间,事先进行数据的按日或按月汇总,生成对应的汇总数据表。利用这种规律,在受理作业层工作人员对原始数据和流水清单的要求时,可以直接从“原始业务数据表”中访问检索;同时,在受理管理层和决策层人员的业务数据报表要求时,避免了对大量原始数据的直接访问检索和加工汇总,可以针对性地从“按日汇总业务数据表”或“按月汇总业务数据表”中的少量数据中检索汇总,这样大大地提高了系统响应的速度和效率。
具体的数据处理算法如下:
每天新增的管理对象和对管理对象的修改直接保存在“当前数据库”的各个“对象定义表”中。
在每日规定的结算时间或业务活动结束后,进行
海量数据存储方式(论文) 来自淘豆网m.daumloan.com转载请标明出处.