海量数据处理的几个技术问题及其解决方案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

保险职业学院学报2005年第5期 (总第102期)海量数据处理的几个技术问题

及其解决方案

李向阳 李朝庆

[摘 要]本文讨论了海量数据处理的几个技术问题,并从应用实践上提出了一些解决方案。这些措施在应用软件的开发实践中,被证明是有效的。

[关键词]数据处理;I/O界面;开发平台;数据安全性和一致性

[中图分类号]TP39 [文献标识码]A [文章编号]1673—1360(2005)05—0051—02

一、引言

众所周知,大数据量的数据处理(简称海量数据处理)是当今计算机应用的主要领域之一。这类问题的显著特点是输入/输出量很大,而计算(处理)并不复杂。但要恰当解决这类问题,面临一些严峻的技术问题;因为当数据量到达一定规模时,看似很简单的问题,实际操作起来却十分费力。笔者根据多年从事数据处理的实践,提出以下几个问题,同大家共同探讨。

二、关于初始数据的录入

很多数据处理问题都面临大量原始数据的录入。如人口普查、人事档案、人才招聘与考核、保费管理、账务管理、销售管理等,每天发生的数据量是很大的,如何确保这些数据快速、正确进入电脑呢?人们赏试了众多的录入方案,例如汉字信息和数字信息分别采用不同的录入手段。目前通行的做法是:将汉字信息用区位码填制信息卡,然后用OCR(光电阅读器)录入;而数字信息则用键盘录入。我们在开发高考招生系统时就是这样做的。因为每个考生的基本信息(如姓名、性别、类别、科目、地址等)约占200字节,而每年报考的考生人数多达30万左右,信息总量高达60G B。对这些汉字信息的录入,采用分散填制信息卡,用OCR集中录入,然后打印出来分散核对。而数字信息(如试卷分数、经济数据等)则不宜采用信息卡,因为数字信息比汉字信息要求有更高的准确率,而用键盘录入又比较快捷。但如何保证人工录入的正确性呢?我们采用的做法是,由三名训练有素的录入人员分别对同一科目的考分并行录入,然后经程序检验:对同一名考生该科目的成绩,三名录入人员录入的数据是否一致,如果一致,则写入文件记录,否则剔出来,下次重新录入。这种作法的理论依据是:按概率统计规律,如果一名录入人员录入的出错率是1/100,则三名录入员在同一数据上同时出错的概率是三个独立事件概率的乘积,即出错率为百万分之一。据此可以看出出错的几率已大大降低了,实际上可以容许。另外,要尽量减少输入量。凡是能自动生成的数据,如考生号码、职工编码、商品代码等,尽量不用手工录入,而由程序自动生成。在建立表结构时,对某些字段可定义默认值,从而减少录入量(如性别、职务等),提高准确率。人工干预越少,数据出错率越低。

三、关于开发平台的选择

显然,数据库技术是解决数据处理问题的首选平台,目前已有众多的关系数据库管理系统可供选择,如:visual F oxpro、delphi、S Q L server、sybase、oracle、等。在选择平台时,要考虑应用程序的开发和运行环境,目前大部分业务需要在客户机/服务器模式下工作。这时,中小公司可以选用visual F oxpro,因为它的稳定性高,易于操作,面向对象编程,功能也足够强大。大型公司大都涉及到广域网和互连网,选用S Q L server或Oracle为宜。值得注意的是,这些多用户网络数据库系统查询功能很强,其安全性和运行效率都很高,但用户界面不够友好。

为了提高应用系统的图形化界面水平,可以在数据库系统的基础上,引入、java,利用后者的图形界面功能,使开发出来的应用系统更方便用户使用。还要提及一点的是,当系统测试通过以后,应将所有源程序联合编译,生成可执行文件,以便直接在windows操作系统下运行,提供给用户的是一个经压缩打包的系统,这不仅是软件保护的需要,而且可以防止用户有意、无意的错误

15

修改。

四、关于确保数据的安全性、完整性和数据库的并发控制

1、数据的安全性:

数据库管理系统要确保数据的安全,防止非法用户窃取和破坏数据,通常系统采用身份验证、口令、密码、控制用户权限等方法保证数据安全。如军事部门的保密问题、银行账目不得非法改动等均属数据安全性范畴。

海量数据处理系统一般在网络(LAN或W AN)环境下运行。系统的安全性十分重要。选用的平台必须有完整的安全机制。可喜的是,目前微软公司开发的S Q L server2000的功能已趋于成熟,安全机制也比较完备,它设有登录安全性、DB安全性、DB对象安全性等机制。在建表时,可设置各种约束,在数据库中可创建规则、默认值、存储过程、触发器等DB对象,来保证字段和记录的有效性。稍嫌不足的是它目前还未涉及字段级安全性,但不失为首选的平台。

2、数据的完整性:

数据库中的数据表一般具有某种相关性,必须设法保持它们之间的数据一致性。在这方面, foxpro和S Q L server通过创建触发器来确保两个数据表之间的数据的参照完整性。在开发应用系统时千万别轻视这些设置,否则,一个完全开放式应用系统用不了多久,数据库里保存的可能全是一些垃圾。

3、数据库的并发控制:

在网络环境下多个用户可能同时对同一数据库中的数据进行存取操作,这称为并发操作。如在火车、航班定票系统中,必须利用数据库的并发控制来避免不同售票点发售同一编号的全程票。在人事信息系统、商品销售系统、招聘招生系统中也有类似情况。

4、提供良好的用户界面和I/O格式

一个应用系统开发出来以后,能否受用户欢迎,方便用户使用,在一定意义下决定了该系统的生命。Windows系列广受用户欢迎便是最明显的例证。所以,软件开发人员一定要树立面向终端用户,一切从用户出发,将用户界面设计得简洁、醒目,易于操作。如果把数据处理过程视为黑盒子,对用户是透明的,那么呈现在用户面前的便是用户界面。现在可视化编程工具非常强调这点,改进后的Visual foxpro、Vb、Java都在这方面下了很大工夫,提供了众多的控件,利用他们可以轻而易举地设计出生动活泼的用户界面。软件开发者不能嫌麻烦,应该精益求精,使用户界面易于被用户接受。当然,用户界面以方便实用为原则,不必做得花哨、烦琐。如输入界面用醒目的表格方式,既方便操作,符合人们工作习惯,又不易出错。输出格式也要简明实用,可考虑先粗后细,分级输出各种统计报表。在这方面,目前国内的财务软件做得比较好,因而也是推广得最好的应用系统。

5、关于代码体制

这里的所谓代码体制是指各种编码方案。任何数据处理问题,都多多少少包含字段的编码,如职工编号、部门编号、商品编号、科目编号等。要把编码与字段名称对应起来,建立完整的编码体系,在计算机内部一律按编码处理,对应的字段名称只出现在I/O界面。这样,既加快了处理速度(计算机处理编码远比处理汉字快),又便于维护管理。目前,我国已发布了很多编码标准,如省市代码、邮政编码、通信编码、学校、专业代码、主要商品代码、账务科目代码等等,我们在开发应用系统时,要尽可能使用这些通用代码。尚未标准化的代码,开发者要建立完善的编码机制。

6、结语

上面只涉及到开发工作中一些宏观的外在技术问题。除此之外,还有一些技术细节问题,如文件名、字段名的命名规则、数据字典的编排规则、系统的维护措施、测试手段、异常处理等,都需要在开发时精心设计和规划。总之,按面向对象和可视化编程的思路,尽量把一些问题考虑得周全一些,一定要避免匆忙编程,过后再返工或推倒重来。所以说,要提高软件开发效率,除了开发实践之外,注意从宏观上把握大局,按软件项目开发流程,一步步进行,上一步未完成,不急于进入下一步,是十分重要的。

(作者单位:李向阳 中国平安保险公司

李朝庆 保险职业学院)

(责任编辑:王碧华)

25

相关文档
最新文档