通用数据采集

2024-10-22

通用数据采集(精选10篇)

通用数据采集 篇1

摘要:用Cygnal公司的C8051f020作为微控制器,National Semiconductor公司的USBN9604作为USB控制芯片,设计出一个数据采集系统。

关键词:单片机,USB,A/D,数据采集

0 引言

数据采集技术是信息技术的重要组成部分之一。信息技术的三大支柱技术是信息获取技术、通信技术和计算机技术,常被称为3 C技术。其中,信息获取技术是信息技术的基础和前提,而数据采集技术是信息获取的主要手段和方法,它是以传感器技术、测试技术、电子技术和计算机技术等为基础的一门综合应用技术。

数据采集在工程领域中的地位和作用不言而喻,单片机通用数据采集系统是在单片机应用领域中使用最多的一类系统。它主要是实时采集外界连续变化的模拟量,通过模/数转换器把这些模拟信号转换成数字信号送入单片机,也可以直接采集代表某些状态特性的开关量,单片机系统对这些信号进行数据处理,并根据用户的要求,将处理后的数据送显示、打印,也可以通过串行口送给其它的计算机。如果需要,还可以通过数/模转换器变换成模拟信号控制外部设备,输出的开关量信号也可以直接用于控制目的。

目前通用的通过数据采集板卡采集的方法存在着以下缺点:安装麻烦,易受机箱内环境的干扰而导致采集数据的失真,易受计算机插槽数量和地址、中断资源的限制,可扩展性差。而通用串行总线U S B的出现,很好地解决了上述问题,很容易实现便捷、低成本、易扩展、高可靠性的数据采集,代表了现代数据采集系统的发展趋势。

1 数据采集系统概述

1.1 数据采集

数据采集就是将要获取的信息通过传感器转换为信号,并经过信号调理、采样、量化、编码和传输等步骤,最后送到计算机系统中进行处理、分析、存储和显示。

数据采集系统追求的主要目标有精度和速度:对任何量值的测试都要有一定的精确度要求,否则将失去采集的意义;提高数据采集的速度不仅仅可以提高工作效率,更主要的是可以扩大数据采集系统的适用范围,以便实现动态测试。

1.2 数据采集系统的基本组成

计算机数据采集系统一般由传感器、前置放大器、滤波器、多路模拟开关、采样/保持(S/H)器、A/D转换器和计算机系统组成。

1.3 USB

U S B的拓扑结构如图1所示。

一个USB系统中含有3部分:USB Host、USB Device、USB Hub。

每个USB系统有且只有一个Host,它负责管理整个USB系统,包括USB Device的连接和删除、Host和USBDevice的通信和总路线的控制等。

为了满足不同外设和用户的要求,U S B提供了4种传输方式:控制传输、同步传输、中断传输和块数据传输。它们在数据格式、传输方向、数据包容量限制和总线访问限制等方面有着各自不同的特征。

2 系统硬件设计

2.1 硬件组成

基于U S B总线的实时数据采集系统硬件组成包括模拟开关、A/D转换器、单片机、U S B接口芯片,为了扩展用途,还可以加上多路模拟开关和数字I/O端口。其硬件总体结构如图2所示。多路模拟信号经过模拟开关传到A/D转换器转换为数字信号,单片机控制采集,U S B接口芯片存储采集到的数据并将其上传至P C,同时也接收P C机U S B控制器的控制信息。

基于U S B总线的实时数据采集系统严格遵循USBl.1协议,有以下特点:

(1)易于扩展。最长传输距离5m,采用USBHub可达30m;最多可同时接127个设备。

(2)电磁干扰影响极小。本系统放置在计算机外部,不受板卡间的电磁干扰影响;若在电磁干扰极强的环境下工作,需专门为其设计电磁屏蔽方案。

(3)安装方便,支持即插即用。克服了以往数据采集板卡需要打开机箱的麻烦。

(4)性价比高,远优于传统的实时数据采集系统。

(5)实时采集,实时显示。

2.2 芯片选择方案

在微控制器和U S B接口的选择上有2种方式。一种是采用普通单片机加上专用的U S B通信芯片,现在的专用芯片中较流行的有National Semiconductor公司的USBN9602、Scan Logic公司的SL11等。

另一种方案是采用具备U S B通信功能的单片机。随着USB应用的日益广泛,Intel、SGS-Tomson、Cypress、Philips等芯片厂商都推出了具备USB通信接口的单片机。这些单片机处理能力强,有的本身就具备多路A/D,构成系统的电路简单,调试方便,电磁兼容性好,因此采用具备U S B接口的单片机是构成U S B数据采集系统较好的方案。不过,由于具备了U S B接口,这些芯片与过去的开发系统通常是不兼容的,需要购买新的开发系统,投资较高。

本方案的芯片选择:单片机选择C y g n a l公司的C8051F020芯片,USB通信控制选择National Semiconductor公司的USBN9604芯片。

2.3 系统硬件框图

C8051F020单片机和USBN9604的接口电路如图3所示,该电路由C8051F020单片机、USBN9604、时钟振荡电路以及相应的外围电路组成。其中USBN9604通过外部中断INT0与C8051F020单片机进行通信。

C8051F2020单片机与USBN9604的并行连接有非复用和复用2种方式。它们可通过设置引脚MODE0、MODEl来选择。在非复用方式时,可用控制引脚CS、RD、WR、地址引脚A0和双向数据线D[7:0]实现相应的地址读写。而在复用方式时,则使用控制引脚C S、R D、W R、地址锁存信号ALE和双向数据线D[7:0]实现其地址读写。

多路模拟输入信号经多路模拟开关控制将其中的一路接入串行A/D转换器,A/D转换器经光电隔离后串行输出到移位寄存器,移位寄存器将此结果转为8位并行数据,C8051系统通过8位的并行接口传送A/D转换器采集的数据,存储在FIFO存储器中;一旦FIFO存满,SIE立刻对数据进行处理,然后C8051F020系统将数据从FIFO存储器中读出,由收发器通过数据线(D+、D-)送至主机。图3中USBN9604的CLKOUT与C8051F020的XTAL1相连,即USBN9604的时钟输出为C8051F020提供时钟输入。USBN9604的复位端接RC电路以保证复位电路可靠地工作。由于晶振频率较高,结合USBN9604内部网络,在XOUT端串接100m F电容及470m H电感,起稳定内部振荡频率的作用。

设计的主要功能:模拟数据被C8051F020的ADC采集并进行处理,C8051F020通过USB控制器把它发送到Host(PC或者是工作台),相反,Host可以把这数据发送给U S B控制器。信号处理框图如图4所示。

3 系统软件设计

一个U S B设备的软件一般包括主机的驱动程序、应用程序和固件程序。

固件实际上是单片机的程序文件,存放在单片机中,包括U S B设备的连接、U S B协议、中断处理等。

U S B固件程序的结构一般是基于中断处理的。主程序做完必要的初始化工作后,就等待U S B中断的产生,中断产生后,根据中断状态对相应的端点读取数据,或是向相应的端点发送数据。U S B单片机控制程序通常由3部分组成:初始化部分,初始化单片机和所有的外围电路(包括USBN9604);主循环部分,其任务是可以中断的;中断服务程序,其任务是对时间敏感的,必须马上执行。

初始化USB须使用USB读/写函数对USB控制器内部的控制寄存器进行设置。

中断服务程序处理U S B控制器产生的中断,将数据从USB内部FIFO读出,并建立正确的事件标志,以通知主循环程序处理。

初始化单片机主要就是对A D C进行初始化。

4 结论

U S B为计算机外设输入输出提供了新的接口标准。它使设备具有热插拔、即插即用、自动配置的能力,并标准化设备连接。U S B的级联星型拓扑结构大大扩充了外设数量,使用外设更加便捷,快速。而新提出的USB2.0标准更是将数据传输速率提高到了一个新的高度,可以说,U S B接口具有很好的应用前景。

参考文献

[1]杨金岩,郑应强,张振仁.8051单片机数据传输接口扩展与应用实例[M].北京:人民邮电出版社

[2]林嵘,孙金生,秦华旺,等.数据转换与接口技术[M].南京:东南大学出版社,2004

[3]张弘.USB接口设计[M].西安:西安电子科技大学出版社,2002

[4]邵贝贝,刘慧银.微控制器原理与开发技术[M].北京:清华大学出版社,1997

[5]张迎新,雷文,姚静波.C8051F020系列SOC单片机原理及应用[M].北京:国防工业出版社,2005

通用数据采集 篇2

基本信息   个人相片
姓 名: xuexila.com 性 别: 照片
民 族: 土家族 出生年月: 1988.9.27
证件号码: 1****** 婚姻状况: 未婚
身 高: 162cm 体 重: 54kg
户 籍: 湖南张家界 现所在地: 湖南株洲
毕业学校: 湖南工业大学 学 历: 本科
专业名称: 广告学 毕业年份:
工作年限: 一年以内 职 称:  
求职意向  
职位性质: 全 职
职位类别: 广告

市场/营销

文字媒体/写作 

职位名称: 广告策划 ; 文秘 ; 市场营销
工作地区: 湖南 ; 重庆 ; 江苏
待遇要求: 元/月 可面议 ; 需要提供住房
到职时间: 可随时到岗
技能专长  
语言能力: 英语 一般 ; 普通话 标准
综合技能: 1、能够熟练的使用office办公软件、photoshop软件、flash软件、3ds max软件、dreamweaver软件、Premiere软件、AE软件等;

2、在校专修广告策划、拍摄电视广告、设计平面广告、设计网页等;

通用数据采集 篇3

关键词:DB2;数据库;应用

中图分类号:TP311

在计算机应用系统中,有一种专门对数据资源进行管理的系统,即所谓的数据库。对于数据而言,其具有很多形式,例如图形、文字、符号、声音、图像、数码等等,这些数据均成为所有计算机系统的主要处理对象。也就是说,数据库中对庞大的数据文件进行了集中性的存放,而DB2通用数据库作为一种高端数据库管理系统,其不仅具有强大的稳定性及可靠性,还具有十分卓越的性能,因而已经在多个领域中得到了十分广泛的应用。因此,本文重点就其几种典型的应用进行了研究,希望能为相关领域的研究提供借鉴。

1 DB2通用数据库相关内容分析

对于DB2通用数据库而言,其为IBM公司所生产的产品,可以对PC到UNIX,中、小型机到大型机,IBM到非IBM等多种操作平台进行支持。DB2不仅可以以主、从方式在主机上独立进行运行,还可运行于客户及服务器等多种环境中,而服务平台可为诸如OS/2、OS/400、SUN-Solaris、AIX、HP-UNIX等的操作系统。此外,DB2UDBExpress是一种面向中型市场的新型数据库,其不仅具有较为全面的功能,且能够实现自动化安装,无需人为进行干预,还可以进行65种自动工具的提供。此外,DB2UDBExpress可在Windows及Linux等平台进行运行,且存在多种主要语言的版本,可为商业伙伴较为关键的一些垂直市场,例如零售、银行及制造等市场提供有效的解决方案,并可以客户的具体应用情况为依据预先进行配置。

DB2通用数据库的核心通常被称为DB2公共服务器,其主要采用了多进程及多线程的体系结构,能够在多种操作系统上进行运行,并可以相应平台的具体环境为依据分别进行调整及优化,以便获得良好的性能。对于DB2通用数据库而言,其主要具有如下方面的特点:(1)可对面向对象的编程进行支持,DB2数据库支持较为复杂的数据结构,例如无结构的文本对象等,可对其进行任意匹配、布尔匹配以及最接近匹配等的搜索,并对用户数据的类型及其自定义函数进行构建;(2)其可对DB2多媒体应用程度及大二分对象BLOG进行支持,并可在数据库中对二进制及文本大对象进行存取;(3)具有恢复及备份等多种功能;(4)能够支持触发器与存贮过程,用户可在建表时对复杂的完整性规则进行显示和定义;(5)可对SQL查询进行支持。

2 DB2通用数据库的几种典型应用

以下就DB2通用数据库的几种典型应用出发,分别从数据库设计方面、SQL语句优化方面、查询优化方面的应用进行了分析。

2.1 数据库设计方面的应用

数据库设计主要指的是对某给定应用环境进行最优化数据库模式的构建,并进行数据库及应用系统的建立,以确保数据得到有效的存储,并满足用户各方面的应用需求。对于数据库设计而言,其主要包括了邏辑设计及物理设计两大方面。而逻辑设计过程可将所有冗余数据去除,并提高数据的吞吐率,为数据的完整性提供保障;而物理设计主要以业务规则为依据对关联表数据量的大小以及数据项的访问频度进行确定,以便对数据冗余设计进行进一步的提高。

在数据库设计过程中必须遵循如下方面的设计准则:(1)对大小及页宽进行记录,对于固定长度而言,其记录应优于可变长度的记录,由于DB2代码可以专门优化固定长度的记录,若记录为固定长度,则无需将其从初始页面进行转移。但是,若记录为可变长度的,则其长度可能同初始页变得不相适应了,因此,必须将其转移到其他页中。此外,还应对页中所能存放的记录数目进行考虑,DB2为页宽进行了多种选项的提供,例如4、8、16及32KB等。开始时可默认选择选项4KB,若行长度相对较小,或基本随机进行数据的访问时,应尽量选择此项。但在某些情况下,需对更大的页宽进行考虑,若某表中各行长度超过了4KB,则需采用更大的页宽,这是由于DB2并不支持跨页的记录。(2)对合适的数据类型进行选择,应以不违背表相关要求的条件下对合适的数据类型进行选择,以便实现系统性能的大幅提高。

2.2 SQL语句优化方面的设计

作为一种高级语言,SQL具有十分强大的灵活性,可采用各种形式的SELECT语句从数据库中将相同数据提取出来,但是,应用程序的有关性能可能因不同的SELECT语句形式而大相径庭,这主要是由于形式不同的SELECT语句其处理成本也不一样。通常而言,可采用如下方法就SQL对数据操作的有关表现进行优化:(1)对所提供的统计适当与否进行核实;(2)通过谓词来对返回行数进行限制;(3)由于通配符匹配查询十分耗时,因此,应尽可能避免通过LIKE通配符进行匹配查询。LIKE操作符可用于配符的查询,其所具有的通配符组合几乎可任意查询,但是,若用得不好可能会导致性能方面出现问题。执行时其可将所有“*”转换为所有列名,而此工作主要是借助于数据字典实现的,这表明需要消耗更长的时间;(4)对动态SQL的使用进行限制。

2.3 查询优化方面的设计

对于DB2通用数据库而言,其为一种性能极高的数据库管理系统,执行的应用程序最终归结为SQL语句的执行,由于各种数据库中,查询操作所占比例较大,因而数据库的优劣性在很大程度上取决于查询的优劣性。而对于查询优化而言,其主要方式如下:(1)索引是除了表以外的另一种用户定义的在物理介质上进行存储的重要数据结构,当以索引码值为依据对数据进行搜索时,索引对数据提供了快速访问。虽然,数据库没有索引也可以以SELECT语句为依据对结果进行成功检索,但是,随着表的逐步增大,索引效果会变得越来越明显。因此,使用索引根本目的即为提高查询的效率,以便直接、有序、快速地对数据进行存取;(2)数据条带化,若某表的记录条数超出要求,则其查询操作将会受到严重的影响,因此,需将表按照日期进行水平或者垂直划分,以加快表的扫描,并提高其效率;(3)以特定顺序为依据对数据查询进行提取,若希望对结果集进行排序,可在被排序列组上应用索引,此情况多用于无条件语句的查询。若存在条件语句,DB2会优先将满足条件的记录选择出来,而后再对中间结果集进行排序。

3 结语

总而言之,随着DB2通用数据库技术的不断发展和完善,以及大型软件及用户需求等方面的不断改变,在计算机系统及各个领域的研究工作中,DB2数据库系统都将占据着十分重要的位置。对于数据库的管理及其开发过程而言,为了实现数据库性能的进一步提高,必须对DB2数据库进行进一步的优化和设计,以便促使其得到更为广泛的应用。

参考文献:

[1]庄济诚.DB2数据库管理与应用教程[M].北京:清华大学出版社,2004.

[2]韩承双,程再玲.DB2/400数据库数据独立性研究与实现[J].安徽建筑工业学院学报(自然科学版),2011(1):81-84.

[3]陈景彦.DB2嵌入式静态SQL应用与实践[J].电脑知识与技术,2012,08(12):2667-2670.

通用数据采集 篇4

在日常工作中,管理部门需要采集某些数据时,往往设计各类表单,经过层层下发、填报、汇总,并对汇总数据的有效性和完整性进行审核,如此繁琐的过程费时、费力,比如高校统计教材征订信息等等。为简化工作流程和提高工作效率,可以开发一个通用Web表单数据采集系统,该系统能根据采集数据的需求来简单、灵活的设计相应表单,用户通过Web填报数据即可。目前,关于Web表单的自动生成方法有些少量的研究,主要是基于模板和规则的,具体利用XML或数据库技术,相关技术在办公自动化系统或企业管理信息系统中有些应用,但其实现过程较为复杂或专业人员才能胜任[1,2,3,4]。另外,专门的通用表单数据采集系统很少。因此,设计并实现一个通用Web表单数据采集系统是非常有意义的,这能给日常的数据采集工作带来很大的便捷性。

该通用表单数据采集系统的用户包括系统管理员、普通管理员和一般用户,主要功能包括用户管理、表单任务设计、表单收藏、表单查看、数据填报、数据审核与导出。系统管理员能够管理用户基本信息。普通管理员根据采集数据的需要,可视化的进行表单任务设计,这包括表单任务名称、备注说明、有效填报时间、表单字段名称、样式及字段约束等;而且能对常用表单进行收藏,避免以后再次使用时重复设计;此外,能够对用户提交的数据进行审核、统计与导出。一般用户可以通过Web查看所需完成的表单任务列表,选择具体表单任务进行数据的填报、修改和提交工作。所有数据存储在数据库中,查看历史的采集数据很方便。从系统整体架构角度讲,系统基于B/S模式,用户通过浏览器进行操作,主要特点是操作非常简单、功能通用性强,数据规范性好。

2系统总体设计(Overall design of the system)

2.1处理流程设计

该系统的主要功能是表单数据的采集,涉及的主要工作流程:首先由管理员定义表单任务并发布;其次一般用户可以在系统中查看已发布的表单任务,填写表单内容,并提交表单;最后由管理员审核与导出用户提交的表单数据。

(1)管理员定义表单

当需要采集某些数据时,管理员需要根据采集数据的需求来定义表单任务,具体定义流程如图1所示。管理员首先创建表单任务,接着设置基本信息,包括表单任务名称、备注信息和有效填报时间;其次配置表单字段,包括字段名称、输入形式、字段约束,其中设置字段约束时可以选择已定义的常用约束或定义一个新的约束并应用;最后,发布表单任务。

(2)用户填写表单数据

一般用户登录后可以看到所需填写的表单任务列表,具体填写流程如图2所示。首先选择具体的表单任务,则进入相应表单页面;其次填写表单内容对应的相关信息;最后提交表单数据,此时如果用户填写的内容与字段约束不匹配,系统会提示不匹配信息,需要用户进行数据修改,如果用户提交的表单数据符合对应的字段约束,才显示提交成功。

(3)管理员审核表单

用户提交表单数据后,普通管理员可以对用户提交的数据进一步审核,确保数据准确,此次审核主要是对数据实际意义审核。管理员可以查看用户提交的表单数据,并对表单进行审核处理,对合格的表单数据可以审核通过,对不符合要求的表单数据审核不通过。一般用户可以查看数据审核状态,若没有审核或审核不通过则可以修改表单数据再提交,若审核通过则不能再修改。

2.2程序架构设计

系统基于MVC经典模式,使用Struts2、Hibernate和Bootstrap框架作为基本开发架构。程序构架模块如图3所示,MVC模式(Model-View-Controller)把系统分为三个基本部分:模型(Model)、视图(View)、控制器(Controller)。三个模块相对独立,降低了系统模块的耦合性,提高了程序的可维护性[5,6]。

Model层实现系统中的业务逻辑,主要为功能逻辑的具体编码。在系统中,Model层采用数据库持久化框架Hibernate,通过这一轻量级的O/R Mapping框架,完成用户对象、表单对象、字段对象、字段内容对象等到关系数据库的映射,完成对表单数据的提取与转换,提高了系统开发效率。

View层主要用于显示数据和提交数据,提供用户交互界面。比如,对于表单显示查询请求的结果,系统以Web方式展示给用户,并且使用Bootstrap框架中的分页组件美化了表单列表分页显示,通过j Query操作页面元素以及结合AJAX达到异步刷新页面的效果。Bootstrap是目前很受欢迎的前端框架,它在j Query的基础上进行了更为个性化和人性化的完善,形成一套自己独有的网站风格[7]。

Controller层用于控制业务逻辑和页面的跳转,接受用户的输入并调用模型和视图去完成用户的需求。在Struts2框架下,根据需求编写Action类用于处理逻辑,编写JSP页面用于展示用户界面以及在struts.xml中配置映射关系。

例如,在struts.xml中关于表单显示请求的配置代码如下:

其中,action标签用于定义处理请求URL为task_list.action的Action,result标签用于定义处理结果字符串和资源之间的映射关系,param用于对返回的结果进行配置,其文本内容json表示返回的是json对象,属性值root表示返回对象的层级为根部。

3关键技术的实现(Implementation of key technology)

3.1动态表单结构生成

由于每次所采集的数据很有可能是各式各样的,因此不能事先设计固定的Web表单,必须要根据具体情况设计动态表单结构。自定义一个表单主要涉及到表单基本信息、表单字段、字段约束等信息的配置。在Bootstrap、j Query、HTML、CSS等前端技术的支持下,为用户提供了向导式的人机交互界面,使之适应于各类人群的使用,比如在需要填写截止日期时,系统会自动调用Bootstrap的日历插件。就系统实现而言,系统采用My SQL数据库,并进行数据表和相关字段的设置。在数据库的设计中,对于表单的生成主要涉及表单任务、表单字段、字段约束这三个实体。关系模型如下:

表单任务(表单ID,表单名称,备注说明,有效起始时间,有效截止时间,是否被收藏)

表单字段(表单字段ID,字段名称,所属表单ID,字段约束ID)

字段约束(字段约束ID,规则名称,规则的正则表达式,规则说明)

动态表单结构相关实体间的关系如图4所示。一个表单任务包含多个表单字段,一个表单字段只属于一个表单任务;一个字段约束可用于限定多个表单字段,一个表单字段只能指定一个字段约束。

例如,在学校教学管理工作中,每学期开学前学校需要向各科教师采集教材订阅信息。这时需创建一个表单用于采集教材订阅信息,表单任务表中就需存储表单名称,数据填写的备注说明以及有效填报时间等信息。对于表单字段的设置可存储在表单字段表中,在该表单中有书籍ISBN、书籍名称、价格、出版社名称、使用班级、订购数量等字段。为了实现系统自动审核表单内容,在表单字段约束的设计中,主要利用正则表达式来规范对应内容的格式。正则表达式是对字符串进行规范格式的一种逻辑表达式,用事先定义好的一些特定字符及这些特定字符的组合,组成一个“匹配字符串”,这个“匹配字符串”用来表达对字符串的一种过滤逻辑。比如,每本书会有个ISBN字段,根据ISBN组成格式,含有13位数字,可以设计一个正则表达式:[0-9]{13},来进行合法性验证。字段约束表中存储有系统默认定义的一些常见的字段约束规则,用户也可以新增。

3.2数据存储与解析

对于数据的存储,系统使用了另外两个数据表,其中一个为表单概要表,存储某个用户提交某个表单任务的概要信息,另一个为表单详情表,表单字段对应的详细信息保存在该表中。比如,学校通过教材订阅信息表单采集教材需求信息时,用户ID、表单ID、附件信息等存储在表单概要表中,而表单中书籍ISBN、书籍名称、价格、出版社名称、使用班级、订购数量等信息存储在表单详情表中。关系模型如下:

表单概要(概要信息ID,用户ID,表单ID,附件,是否审核通过)

表单详情(详细信息ID,概要信息ID,字段ID,字段值)

由于表单结构多样,这使得数据的存储与解析流程的较为复杂,系统设计了通用的处理程序来存储与解析表单数据。

3.3 Web数据交互实现

当表单创建完成,用户(包括普通管理员或一般用户)再次请求表单任务列表时,则从数据库中读取表单相关设置数据并传递到前端页面,表单显示页面对表单结构数据进行解析、显示,并且运用j Query的分页插件实现表单列表分页显示。另外,用户在请求某个具体的表单任务时,采用Ajax+JSON技术与服务器交换数据。比如,在教材订阅信息表单实例中,当学校管理员或教师请求教材订阅信息表时,通过用户界面发起AJAX异步刷新请求,后台与服务器进行少量数据交换,AJAX可以使网页数据实现异步更新。这意味着不必采用会中断交互的完整页面刷新,就可以动态的更新Web页面。

AJAX的工作原理相当于在用户和服务器之间加了一个中间层,使用户操作与服务器工作异步化[5,6,7,8]。AJAX的Web模型如图5所示。作为AJAX异步请求的传输对象,后台通过Hibernate从数据库读取数据,请求的返回结果是JSON对象。系统中大多通过AJAX技术与服务器交换数据实现网页部分刷新,将对象转换为JSON的封装类使用了较为流行的JSON解析库Jackson,类中通过单例模式来获取Object Mapper对象,从而序列化和反序列化JSON数据。用户界面获取到JSON数据后进行解析,通过j Query的eval方法将JSON数据转换成JSON对象,然后像调用数组元素一样调用JSON对象的数据,以显示在页面列表中。

3.4常用Web表单管理

根据用户的实际使用情况来说,有的表单模板可能会被多次重复使用。比如,在学校采集教材订阅信息的例子中,该表单在每个学期开学前都会用到,为提供更好的用户体验,系统设计了常用表单收藏的功能。此外,当系统中收藏的表单逐渐增多时,也可以通过关键词模糊搜索或分类标签类进行查找。

4系统运行效果(Operation effect of the system)

服务器端系统的主要功能包括任务管理、知识库管理、用户管理三大模块。在任务管理模块,管理员可以新增表单,查看、搜索、修改及删除已定义的表单,以及配置表单字段,如图6所示。该界面上方和左方是功能模块栏目,右边是信息展示窗口,所显示的表单列表是按截止时间的先后、是否有提交数据以及是否审核通过排序,页面过渡、翻页、搜索等前端效果都是通过Bootstrap框架实现的。当新建表单任务完成后,可以配置相应的表单字段,字段配置界面如图7所示。该界面右边显示的是关于教材订阅信息表单的相关字段配置,有书籍ISBN、书籍名称、价格、出版社名称等,可以任意增加、删除、修改表单字段,根据要求添加相应的字段约束。

5结论(Conclusion)

根据日常工作中的表单数据采集需求,实现了系统的基本功能,包括用户管理、表单任务设计、表单收藏、表单查看、数据填报、数据审核与导出等,系统的实现主要采用如今流行的Struts2+Hibernate+Bootstrap框架技术,扩展性较好。系统功能性较为实用、灵活性较好。而且,系统的用户可以是很大众化的,不要求具备程序设计方面的知识。但系统也还可以进一步改进。比如,提高个性化设置和通用性扩展,对于不同工作需求的用户,能自定义配置程序和系统参数。功能细节也可更加完善,使表单输入框具有足够的弹性,以接受多种有效数据形式。

参考文献

[1]Strme ki D,Rado evi D,Magdaleni I.Web Form Generators Design Model[C].Ceciis,2015.

[2]Magdaleni I,Rado evi D,Orehova ki T.Autogenerator:Generation and Execution of Programming Code on Demand[J].Expert Systems with Applications,2013,40(8):2845-2857.

[3]Negametzyanov A,Lau S L,Ng C F.Web-based Interactive Form Generator for Public Kiosks[C].IEEE Conference on Open Systems,2015.

[4]吴贺,及俊川,李新.基于XML的动态表单快速生成技术[J].计算机系统应用,2010,19(9):60-63.

[5]夏仙.基于SSI框架的通用表单开发工具的设计与实现[D].北京:北京邮电大学,2013.

[6]胡丽媛,黎杰.MVC模式及Struts框架的研究与应用[J].计算机与信息技术,2011(10):9-12.

[7]吴海.Bootstrap模板在后台管理系统应用中的经验探讨[J].信息通信,2015(2):101-103.

通用数据采集 篇5

SQL Server是Windows Server System的组成部分。Windows Server System是一种有助于简化灵活商务解决方案开发、部署与运转工作的综合型、集成化服务器基础架构。

作为Windows Server System 家族的一个关键组成部分, SQL Server 2005 包含一个标准功能集,如通用补丁管理、Watson 支持、微软基线安全分析工具等,为Windows Server System客户提供了一个一致的、可预见的体验。

Windows Server System 通用引擎路线图的目标是创建一个可被用于所有Windows Server System服务器产品的通用服务集,这个通用服务集移除了服务器基础架构之间的栅栏,有助于确保整个Windows Server System 产品的引擎更安全、可靠、易管理和灵活。Windows Server System 通用引擎路线图确保客户能够满足今天乃至明天的商业挑战。

为了陈述灵活IT技术的观点,微软当前把目光关注在以下三个关键点上:

.NET, 微软的Web services 战略,它把信息、人、系统和设备联系在一起,

采用面向服务的架构遍布于微软的平台上,它提供了快速建立、部署、管理和使用连接的、安全增强的基于Web services 的系统。这些系统支持更快,更敏捷的商业智能,并且允诺可在任何时候、任何地点、任何设备获得信息。

动态系统计划(DSI) 致力于发布一个能够智能操作、内置对操作的监视、根据业务的改变能动态调整的系统。该计划联合了硬件、软件和服务供应商,围绕一个基本模型,使用户能够享用工业标准硬件的威力和IT操作的简单、自动和灵活。该计划的目标在于降低管理和使用成本,提高系统可靠性,并且提高在整个IT 生命周期中的响应能力。

可信度计算是一个长期的、全公司范围内的协同工作的努力,是为了创建和发布更安全、私有和可靠的计算体验。同时减少用户和IT管理员的工作。可信度计算的目标在于发布一个计算工业界人们期望的安全、私有、可靠和业务集成的系统。

在2005通用引擎标准中,定义了16个不同的规范,它们都被用在Windows Server System中。自2005版本起,所有Windows Server System产品都将满足这个标准,除了某些特别的原因需要在将来版本实现的。

微软将定期地增加规范来反映客户的要求和发布到Windows Server System 中。这些规范和他们的实施细节包括任何例外信息,将会在Windows Server System Web site, www.microsoft.com/windowsserversystem上定期发布。

通用数据采集 篇6

软件开发中,数据库往往是信息系统的基石,即便是最简单的信息系统中都会涉及到数据的持久性和数据的访问。而JAVA作为一种可以撰写跨平台应用软件的面向对象的程序设计语言,被广泛的应用与当前的各种信息系统开发。但对于用Delphi及.Net开发过应用系统的开发人员大多都使用过数据集组件来连接数据库并操作数据库表数据的功能。这些功能使用很方便,同时有强大的数据操纵能力,可以对各种数据库进行统一操纵,数据组件会根据不同数据库的语法要求自动生成新增(insert)、修改(update)及删除(delete)等DML语句对数据库记录进行操纵。在JAVA环境中没有与之对应的数据集组件,JAVA主要依靠JDBC接口[1]来操作数据库数据,但JDBC属于一个较低层次的接口,虽然功能强大但需要较多的编程量,所以使用并不方便。有些JAVA持久层框架[2(]如Hibernate)基于JDBC做了一些包装并提出了OR映射的概念,通过操作对象的方式间接操作关系数据库中的记录,由OR映射框架自动将对象的新增、修改、删除等操作自动转换成特定关系数据库的DML语句。这种方式在JAVA世界中应用很多。但OR映射需要许多手工配置,且在涉及大数据量且表间关系复杂的情况时容易出现性能问题。并且对习惯SQL及数据集操作的程序员来说,对于对象的操作不如对记录行的操作直接和灵活。针对这些框架的问题,IBM和BEA设计了SDO(Service Da-ta Object)[3],方便了数据访问和操作。该文借鉴了SDO的方法及Delphi、.Net数据集的设计理念[4-7],应用软件设计模式方法[8-9],结合实际的开发经验,设计一种基于JDBC的JAVA通用数据集数据访问框架。

2 总体设计

整个框架设计的目标包括:

1)通用性,实现一种通用的关系数据库访问机制,能够独立于数据库,采用一致的数据集的方式访问及操作各种关系数据库。

2) 方便性,充分利用数据库的元数据功能,无需配置就能根据数据集的状态,自动生成某种数据库的DML语句,尽量减少编程量。

3) 扩展性,能支持现存或未来出现的各种关系数据库系统。

设计思路:

为达到以上设计目标,考虑将通用数据集框架主要分为2个大的部分来实现:

第一部分是独立于数据库的,这一部分里,所有操作的实现对数据库来说是完全中立的,无需考虑数据库的差异性;

第二部分是数据库相关的,这一部分里,所有操作的实现都要考虑特定数据库的差异,并通过接口及抽象类使这种差异对第一部分屏蔽。

3 独立于数据库的部分设计

独立于数据库的部分主要是数据表(Data Table)对象,其中包括数据列管理器(Data Columns)、数据列(Data Column)、数据行管理器(Data Rows)、数据行(Data Row)、数据字段(Data Field)等对象。对于开发应用开发者来说,主要是对这些部分的对象进行操作。以下对这些对象的功能进行介绍。

3.1 数据表对象(Data Table)

Data Table数据表,实现IData Table接口,负责在内存中保持及操作数据集,并自动记录数据集及记录行的状态等信息。

IData Table接口定义如下:

数据表(Data Table)对象主要依靠所包含的数据列管理器(Data Columns)、数据列(Data Column)、数据行管理器(Data Rows)、数据行(Data Row)、数据字段(Data Field)等对象来实现数据集的操纵功能。

3.2 数据列管理器对象(Data Columns)

数据列管理器对象(Data Columns)实现接口IData Columns接口,是管理数据列对象(Data Column)的容器。

IData Columns接口定义如下:

3.3 数据列对象(Data Column)

数据列对象(Data Column)实现接口IData Column接口,主要记录表字段的属性信息。

IData Column接口定义如下:

3.4 数据行管理器对象(Data Rows)

数据行管理器对象(Data Rows)实现接口IData Rows接口,是管理数据行对象(Data Row)的容器。

IData Rows接口定义如下:

3.5 数据行对象(Data Row)

数据行对象(Data Row)实现接口IData Row接口,主要用于管理记录行。

IData Row接口定义如下:

3.6 数据字段对象(Data Field)

数据字段对象(Data Field)实现接口IData Filed接口,主要用于管理数据字段。

IData Filed接口定义如下:

public interface IData Field {public IData Table get Table();public IData Row get Row();public IData Column get Column();public Object get Value() throws Exception;public void set Value(Object value) throws Exception;public boolean is Null() throws Exception;public boolean is Empty() throws Exception;public boolean is Change() throws Exception;}

4 数据库相关的部分设计

数据库相关的部分主要包括数据源(Data Source)、元数据(Meta Data)、数据适配器(Data Adapter)及命令生成器(Data Command)三个对象。以下对这些对象的功能进行简要介绍。

4.1 数据源对象(Data Source)

数据源对象需实现接口IData Source,主要封装了JDBC中的数据库连接对象(Connection)。负责连接到数据库,提供数据库级别的事务控制,并根据数据库的类型创建元数据(Meta Data)对象、数据适配器(Data Adapter)对象及命令生成器(Data Command)对象。

接口IData Source定义如下:

IData Source接口最主要的目的就是管理数据库连接及本地事务控制。各类数据库都应实现该接口,在现实中一般会提供一个实现IData Source接口的抽象类Data Source,该类将实现一些数据源对象的公共操作,然后特定数据库的数据源类则继承Data-Source抽象类,并实现其特定的功能。如:Oracle的数据源类Oracle Data Source,Sql Server的数据源类Sql Server Data Source等。

4.2 元数据对象(Meta Dat)

段、视图、存储过程、触发器等)。元数据对象,实现IMeta Data接口,负责提供统一格式的数据库元数据。可由此对象获取当前数据库中的所有对象(如:表、字

IMeta Data接口定义如下:

接口最主要的目的就是获取表及其字段的信息,表各类数据库都需实现这个接口。在现实中一般会提供一个实现IMeta Data接口的抽象类Meta Data,该类将实现一些元数据的公共操作,然后特定数据库的元数据类则继承Meta Data抽象类,并实现其特定的功能。如:Oracle的元数据类Oracle Meta Data,Sql Server的元数据类Sql Server Meta Data等。

4.3 数据适配器对象(Data Adapter)

数据适配器对象,实现IData Adapter接口。特定于某种数据库,负责实现对数据库的读写操作,能够从数据库加载数据到数据表,以及执行DML语句,将数据的变化写入数据库。

IData Adapter接口定义如下:public interface IData Adapter {

IData Adapter接口最主要的目的就是实现对数据库的读写操做,表各类数据库都需实现这个接口。在现实中一般会提供一个实现IData Adapter接口的抽象类Data Adapter,该类将实现一些数据适配器对象的公共操作,然后特定数据库的数据适配器类则继承Data Adapter抽象类,并实现其特定的功能。如:Oracle的数据适配器类Oracle Data Adapter,Sql Server的数据适配器类Sql Server-Data Adapter等。

程序员一般不需直接使用数据适配器对象,在Data Table对象需要加载数据(如调用open Sql方法)或写入数据(如调用execute方法)时,Data Table内部会使用Data Adapter对象来读写数据,并将数据填充到Data Table对象中,同时更新数据的状态。

4.4 命令生成器对象(Data Command)

命令生成器对象,实现IData Command接口。特定于某种数据库,根据数据表的变化状态生成DML语句。

IData Command接口定义如下:

IData Command接口最主要的目的就是生成更新数据所需的SQL语句,主要是Insert、update、delete语句。各类数据库都需实现这个接口。在现实中一般会提供一个实现IData Command接口的抽象类Data Command,该类将实现一些命令生成器对象的公共操作,然后特定数据库的命令生成器类则继承Data Command抽象类,并实现其特定的功能。如:Oracle的命令生成器类Oracle Data-Command,Sql Server的命令生成器类Sql Server Data Command等。

程序员一般不会直接使用命令生成器对象,在Data Table对象中的数据新增、修改、删除后,在调用Data Table对象的执行方法时,Data Table内部会使用Data Command对象来自动生成SQL语句。

5 使用样例

在java环境下,使用本框架来访问关系数据库,本身无需任何配置。只需在J2EE应用服务器上配置好JDBC数据源,使用标准的SQL语言即可访问任何数据,更新数据时无需拼凑SQL语句。如下所示,程序员只需在服务器上配好JDBC数据源,使用该配置的jndi Name即可操纵数据。

IData Source ds = Oracle Data Source“(jndi Name”);//创建一个Oracle数据源

ds.open(false);//打开数据源,并设置为不自动提交事务

try {

摘要:考虑使用数据集组件来连接数据库并操作数据库表中数据在软件开发中的方便性,其具有强大的数据操作能力,在很多开发环境中都提供了相应的数据集组件,但在JAVA语言的开发环境中没有与之对应的数据集组件,一般采用JDBC接口或者OR映射的方式完成数据的操作,其中JDBC接口因其属于较低层次接口需要大量的编程,而OR映射在涉及复杂数据关系及大量数据访问是容易出现性能问题,在借鉴其他环境中数据集的设计理念的基础上,以实际开发要求为目标,设计一种基于JDBC封装的JAVA通用数据集数据访问框架。

通用数据采集 篇7

在工业控制领域,为提高生产效率,监控生产流程和控制产品质量, 数据采集与监控软件发挥着极其重要的作用, 其中上下位机的通信控制着数据的交互,是整个系统的核心部分。 在通信过程中,存在着多种网络协议可供选择应用, 传统的开发模式一般以单一的交互模式进行通讯, 存在着极大的局限性,主要表现在两方面:一是软件的可扩展性不强,若在开发过程中下层通信方式发生改变, 上层模块难以快速响应变化,增加了开发的复杂性。二是软件的可重用性不高,开发类似系统时,仍需重复先前的解析编码过程,将存在极大的重复劳动。

为了满足不断变化的用户需求和持续提高生产效率,软件的重构势在必行,其重构成本直接影响到企业的效益, 本文提出的数据引擎就是为了解决上述系统柔性不高导致重构难度大的问题, 缩小开发成本和开发周期。

1数据引擎

1.1数据引擎模型

本文提出的数据引擎[1,2]在系统中扮演着初始数据采集者和最终数据提供者的角色, 它按照一种规范的数据格式解释和重构数据关系。 数据引擎模型如图1 所示。

( 1) 数据源:经过多种通信协议( OPC、UDP、Mo-udleB等) 传输的数据或简易文本格式数据( XML、TXT等) 。

( 2) 元数据集[3]:通过数据采集接口,解析成的具有统一数据格式的数据集合。

( 3) 逻辑处理器:处理元数据间的逻辑运算模块。

数据引擎封装了具体的数据访问、 传输和整合过程。通过数据采集接口,将数据源解析为统一格式的数据集; 数据提供接口则调用逻辑处理器对元数据进行相应重构,并为上层返回运算数据。数据引擎良好的封装性,使用户只需关注所需的数据而无需了解数据的处理过程,极大降低了系统开发的复杂性。

1.2数据引擎实现

1.2.1数据采集接口

通过大量工业监控、 过程控制及实时仿真系统软件研究发现,上下位机间使用的数据总线、通信协议等是多种多样的, 数据采集接口的本质即创建一套标准化的协议来涵盖现有的硬件模块,目前而言,系统需与各类通信协议、数据库、文本等数据源进行交互,因此,将系统与数据源的交互模式抽象化,使异种数据源采集的数据解析成统一的数据结构,是建立数据采集接口的主要目的。

数据采集接口采用抽象工厂模式,创建多个抽象接口,如Connect、Analysis等,本文中的数据采集接口对常用通信协议和文本格式如OPC、TCP/UDP[4]、ModuleBus、TXT/XML等,进行了解析。 若需扩展其他协议, 用户只需继承抽象接口并给出具体实现即可,通过数据采集接口,数据源将被解析成统一的元数据名-值对结构。 下面以OPC[5]为例,解析过程如图2 所示。

( 1) OPC对象的建立与连接( Connect) :OPC有3 种常用对象:OPC服务器、OPC组、OPC项。 在获取OPC项数据时,需要先根据服务器名和IP创建OPC服务器, 并以此作为OPC组对象的容器,OPC组则定义了该组OPC项的信息获取机制,如是否为订阅模式, 数据刷新周期等,OPC项是读写数据的最小逻辑单元,OPC项不能独立于组存在。 系统采用OPCServer.Connect ( OPCServerName,OPCServerIP) 函数与底层硬件建立连接。

( 2) 订阅模式:将OPC的数据读写方式设定为订阅模式,此时OPC数据更新将主动上报而非采用传统的应-答, 即当服务器端数据发生变化时,OPC服务器将主动向客户端发送变化数据并触发Dat-aChange事件, 而无需客户端不断向服务器端发送应答请求,增强了数据采集的实时性。

( 3) 数据解析( Analysis) :为了将读取到的OPC项数据解析成统一的格式并进行存储,需要为Dat-aChage事件注册相应委托,注册完成后,当DataCh-age事件执行时将调用委托对应的DataAnalysis方法解析数据。

1.2.2逻辑处理器

为了适应数据规则频繁变化的需求, 需要提供一种可灵活配置的插件式[6]完成基于数据规则的转换。 该逻辑处理器的主要功能是根据数据源的配置信息动态调用预先定义好的转换规则, 对元数据进行运算并返回最终结果。

本引擎以外围配置文件ItemOperateMap存储参数名与数据逻辑表达式的匹配表。 图3 以接口传递参数值DataItem为例,在ItemOperateMap匹配表中查找到该项的函数关系为F( Item,Ratio),通过逻辑处理器将运算表达式解析为对应Item的运算,并返回计算结果。当某项操纵逻辑发生更改时,用户可自行更改匹配表信息, 而无需开发人员更改底层代码,能快速适应频繁变化的逻辑处理规则。

1.2.3数据提供接口

数据提供接口的主要作用是传递逻辑处理器所需的参数,并将最终结果返回给调用者。

考虑到大多数据采集与监控软件中可视化控件( 状态灯、标签、数码管、仪表盘、图表等) 的表现形式和数据获取模式的相对稳定性, 本文引入引擎容器的概念, 引擎容器即为以数据引擎为基础的自定义控件,它将数据引擎相对稳定的属性抽象出来,作为引擎容器的自定义属性, 它的主要作用是智能化地管理数据提供接口的调用, 并为多种可视化控件提供容器。

引擎容器的主要属性如下:

( 1) DataItem,数据容器的参数名, 逻辑层以此参数名( 唯一)匹配元数据运算表达式。

( 2) DataSourceType,通信类型有OPC、UDP、XML等多种形式,数据层以指定的类型解析上传数据,将接收到的数据存储为统一的名-值对数据结构形式。

( 3) DataReadMode/DataWriteMode, 常用的实时数据采集与写入模式有轮询模式( Timer) 和事件触发模式( Trigger),本引擎中轮询模式以Timer触发,可以设定时钟的Interval参数,来控制采集数据的频率,事件触发模式以Button的Click事件触发,可为每个数据容器设定相应的触发按钮单独执行操作。

引擎容器与可视化控件交互的实现通过This.Control获取包含在控件内的控件集合,并使用通用接口中两个基本函数GetString和SetString读取和设定控件展现数据,数据容器的DataItem作为函数参数传递,最终将获取的数据显示在可视化控件上,该数据容器支持多种可视化控件, 当然也可通过编码单独调用数据提供接口。

2通用数据采集与监控软件架构

通用数据采集与监控软件[7,8],主要作用是数据的实时采集、显示与存储。 基于数据引擎的思想,数据输入可以为多种异形数据源, 该数据引擎屏蔽了数据源间的差异。 据此本文提出一种通用数据采集与监控软件架构, 该架构以数据引擎为数据交互基础,驱动整个系统的运转。 系统架构如图4 所示。

( 1) 动态脚本:为系统提供灵活的可配置性,开发人员可以使用动态脚本来更改设置, 而不必重新编译应用程序。

( 2) 服务管理器:管理系统服务模块,如dll的调用等。

(3)执行逻辑控制器:控制整个系统的执行逻辑。

(4)布局管理器:管理系统UI布局模块。

3应用实例

本文提出的通用软件架构已成功运用于某压力机上位机监控系统, 该系统的主要功能是实时监控压力机的运动曲线和关键变量( 如压力、位移、微调等),检测系统状态( 如故障、掉电、操作模式等),管理历史数据等, 为产品质量回溯和工作人员进行生产决策提供依据。系统界面如图5 所示,其中工作模式标签、状态监测( 回零、电源、急停)状态灯和压力机实时变量( 位移、压力、微调)数字管、速度仪表盘等都是置于引擎容器之内的, 引擎通过统一数据交换接口获得数据,呈现出多样的表现形式。

该系统最初采用传统开发方式实现, 在后期的使用过程中主要发现存在以下问题: ①协议需要更换:系统数据采集初始采用OPC通信方式,但是由于系统OPC环境配置繁琐,同时采集到数据的实时性难以满足要求,需要将协议转换为UDP通信。 ②数值计算规则不确定: 如压力值的计算由转矩经过线性变换( 转矩×系数)而来,实验证明,影响该系数的因素很多( 如压力机润滑情况、现场生产环境等),为使监控数据精准程度更高,需要灵活更改系数。然而原开发模式下协议的解析过程和数据的映射关系都是特定的,当通信方式和映射关系发生变化时,编码需随之变化,维护时间、人力成本无疑是巨大的。采用通用数据引擎后, 上述需求的更改是轻而易举的, 开发人员只需更改某个属性或修改匹配表的对应项参数即可,数据引擎的引入增强了系统的软性,减短了新需求的开发周期和系统逻辑复杂度。

4结束语

通用数据采集 篇8

水利数据中心已经建设水文、水质、水资源、水利工程、水能资源调查、农村水电等专题数据库,分别由Oracle、SQL Server、Sybase等数据库管理系统承载管理,需要开发数据库维护系统支持水利数据中心本地或异地水利专题数据库的维护与管理。在数据库维护系统的开发过程中,如何避免根据具体数据库表定制专用的维护程序,如何保持数据库维护系统与水利专题数据库模式一致性是需要迫切解决的问题。针对这些问题,本文总结了采用对象/关系映射技术的通用机制,以元数据库为中介实现水利数据中心的数据库维护系统的通用性。系统支持Oracle、SQL Server、Sybase等异型数据库的注册、数据查找定位、数据查询展示等数据获取功能,以及数据编辑控制、数据质量校验、数据导入导出等数据维护个性化服务功能。通用的数据库维护系统能自适应数据库结构的变化[1],使元数据库与水利专题数据库的数据模式保持同步更新;结合J2EE多层软件架构技术可提高系统组件的可复用性。该系统已在水利部数据中心投入使用,其通用性同样适用于流域、省或市级水利数据中心数据库维护与管理。

1 系统方案

数据库维护系统的软件结构由客户层、Web层、业务逻辑层、数据持久层和数据层组成。客户层提供数据维护浏览界面。Web层主要处理系统通用服务以及数据维护等相关业务逻辑,并通过数据访问中间件获取数据库连接操作。业务逻辑层使用EJB容器封装数据库访问接口和数据维护组件。数据持久层采用对象/关系映射技术将实现程序的对象映射到关系数据库表,使通用服务的实现独立于关系数据库。数据层包括元数据库以及水利数据中心专题数据库。采用J2EE多层软件架构技术[2]实现数据库维护系统,其总体框架如图1所示。

维护系统以元数据库为中介,通过提供对象/关系映射和通用服务机制,实现水利数据中心水文、水质、水资源等专题数据库的任何数据库表的数据获取功能和数据维护功能。

1.1 系统组成

数据库维护系统的工作方式是在获取维护数据集的前提下,支持用户个性化需求的维护功能。为避免针对每一个数据库表定制专用的维护服务,系统采用基于元数据的通用机制,分别实现数据获取和数据维护功能。系统将水利数据中心各专题数据库注册到数据库维护系统中,通过模式抽取功能动态获取元数据,支持维护系统的库定位、表定位、数据集展示等数据获取功能。获取维护数据集后,系统支持数据编辑控制、数据质量校验、数据导入导出等数据维护功能。

数据获取功能包括:

(1) 数据库注册:

将水文、水质等专题数据库注册到数据库维护系统中,注册内容包括数据库标识、数据库名称、服务器IP地址、数据库连接参数等数据项,注册数据存储在元数据库的库描述表。

(2) 数据导航定位:

为各异构数据库的数据表提供统一的分类导航,以便快速地定位维护数据集。从元数据库中获取库标识和表标识,动态生成树形结构目录。树中不同层次节点分别代表数据库结构中相应层次的信息,选择不同节点自动创建相应的查询操作。

(3) 数据查询展示:

通过导航目录定位到目标表,根据元数据库存储的表结构信息,动态生成数据表结构的显示格式,访问数据库将获取的维护数据集分页加载到屏幕展示表。

数据维护功能包括:

(1) 数据编辑控制:

依据元数据库定义的数据类型、数据长度、是否主键等数据模式的元数据,对所获取的维护数据集提供添加、删除、修改等编辑控制功能。

(2) 数据质量校验:

依据元数据库已定义的校验方法或规则对获取的维护数据集执行数据校验;对于具有时间序列特征的数据集,依据变化曲线的连续性或峰值突变情况,标示出异常数据。

(3) 数据导入导出:

根据需求将获取的维护数据集导出为TXT、Excel、DBF或XML格式的数据文件。支持维护数据集导入到相应的专题数据库,需严格按照元数据库定义的数据类型、数据长度等数据模式的元数据,把外部数据导入到专题数据库。

数据库维护系统还为水利数据中心各专题数据库提供数据统计分析、数据库备份恢复、数据库安全控制、数据库系统性能监测等个性维护功能,充分满足水利数据中心数据维护需求。

1.2 元数据库

由于水利数据中心各专题数据库的DBMS存在分布异构性,通用的数据库维护系统首先需要以统一的方式对要维护的数据库表对象进行集中描述,在此基础上才能实现数据维护程序的通用化[3]。元数据库是数据库维护系统设计的基础和核心。系统进行数据维护的前提是在界面上展示出维护数据集。为获取维护数据集,系统需遍历维护数据集所属专题库、对应的数据库表以及包含的属性列,因此系统的元数据库存储了数据库描述、数据表描述、数据列描述等元数据。元数据库模式分别为:

库描述类(*专题库标识,专题库名称,主机IP地址,主机操作系统,…)

表描述类(*表标识,*所属库标识,表名称,…)

列描述类(*列标识,*所属表,列名称,列序号,类型长度,…)

系统将水文、水质、水资源等异型数据库注册到数据库维护系统,通过数据模式抽取服务动态获取元数据。此过程是将各专题数据库的库、表、列等相关结构参数自动抽取并更新到元数据库中,保证元数据库与各专题数据库的数据模式一致性。元数据服务支持数据库注册、数据模式抽取、元数据编辑等服务,屏蔽了各异构数据库的差异性,使系统能够自适应数据库模式和环境的变化[4]。

1.3 通用机制

数据库维护系统所有功能的实现依赖于元数据库。在元数据库的基础上,本文提出一种通用机制,使系统对水利数据中心的任何数据表都能进行自适应地维护。维护系统的通用机制是指以元数据为核心,在各专题数据库和数据获取、维护功能实现之间所提供的通用服务,它通过数据库注册获取数据源,以导航目录的方式实现数据库、表的定位,最终查询展示维护数据集。通用机制支持元数据服务、数据访问服务、数据定位服务和查询预览服务。

通用机制的实现采用面向对象技术,在访问关系数据库的数据表时,通常需要在对象和数据库表之间做转换。通过对象/关系映射技术,在数据对象和数据库表之间建立映射关系,将对数据的处理转化为对对象的处理,以统一的面向对象的方法进行对象数据存取,而不必关心底层关系数据库的具体实现。在对象/关系映射的基础上,通用机制大大提高了系统的可扩展性和移植性。

2 通用机制模型

数据库维护系统基于元数据库实现数据获取和数据维护功能。元数据库首先需要提供数据库注册和数据模式抽取功能动态获取元数据。在此基础上,对数据库表进行维护的前提是获取维护数据。为了实现以通用的方式获取维护数据集,维护系统在各专题数据库和数据获取、维护功能实现之间提供基于元数据的通用机制,通过数据库、表的定位和数据查询展示功能实现数据获取通用功能。

通用服务直接对对象操作,在进行数据处理时,采用了对象/关系映射技术,实现实体类映射、属性映射和关系映射[5]。在维护系统的元数据库中,实体类映射将库、表、列类对象分别映射到库描述表、表描述表和列描述表,对象标识符(ID)与数据库表的主键对应。属性映射将类属性映射成数据表的列。对于关系映射,库描述表、表描述表之间以及表描述表、列描述表之间只是通过外键关联,无法直接表达一对多的关联关系,而对象可直接表示。维护系统使用XML文件存储对象和元数据库表之间的映射。元数据的对象—关系数据模型如图2所示。

在对象/关系映射的基础上,系统的通用机制独立于水利中心数据库。它提供的通用服务包括元数据服务、数据访问服务、数据定位服务和查询预览服务。实现了通用机制即可在维护界面上显示所需维护的数据集。结合面向对象思想,将通用机制抽象成一个元模型[3],其类图如图3所示。其中,TDATABASE类对应库对象组件,TTABLE类对应表对象组件,TCOLUMN类对应列对象组件,DataAccess类表示数据存取控制组件,DBManager类描述数据库访问组件。每个组件对象都封装了它的属性和方法。

一个库由若干个表组成,一个表包含若干个字段;对每个数据表的操作都需要从DataAccess类中获取相关信息后,由DBManager类执行数据库访问操作获取所需查询的任何表和任何列。

2.1 元数据服务

水利数据中心水文、水质、水资源等异型数据库注册到数据库维护系统,系统执行数据模式抽取将各专题数据库的结构参数动态更新到元数据库,屏蔽了Oracle、SQL Server、Sybase等数据库的异构性。元数据库对应的库、表、列类对象,即通用机制模型中的TDATABASE类、TTABLE类和TCOLUMN类封装了GetSelectSql、GetInsertSql、GetDelectSql和GetUpdateSql方法,支持自动生成元数据库中库、表和列的SQL查询操作以及插入、删除和修改数据的SQL更新操作。元数据服务支持数据库注册、数据模式抽取和元数据编辑等服务功能。

(1) 数据库注册:

将某个专题数据库注册到数据库维护系统中,需注册该库的数据库标识、数据库名称等数据内容,执行TDATABASE类中的GetInsertSql方法构造的SQL插入语句将新的专题数据库添加到元数据库中,该库同时加载所有相关的表信息和列信息。

(2) 数据模式抽取:

驱动模式抽取控件,TTABLE类中的extraTable方法和TCOLUMN类中的GetColumn方法分别实现表信息和列信息的抽取,将专题数据库结构参数,如库中所有的表名,所有的列名,包括列的数据类型、数据精度、是否主键、是否外键、外键引用表、外键引用列等变化信息自动抽取并更新到元数据库,保证元数据库与各专题数据库的数据模式一致性。

(3) 元数据编辑:

利用元数据类中的GetSelectSql、GetInsertSql、GetDelectSql和GetUpdateSql方法自动生成的SQL语句可对元数据进行查询编辑。但元数据库是整个维护系统的运行基础,元数据库表之间存在外键关联,其维护、编辑具有一定的特殊性,一般只提供对手工录入的库、表和列的中文名称及备注等中文信息的编辑功能。

2.2 数据访问服务

水利数据中心各专题数据库的异构性使得数据库维护系统无法直接对其进行统一的数据访问。数据库维护系统采用数据访问中间件屏蔽底层数据库的差异,通过统一的访问接口透明访问分布异构数据库。由于EJB3.0提供了客户端获取中间件远程服务的方法、数据库访问接口以及事务完整性控制等服务,数据访问中间件采用EJB3.0技术实现。EJB规范定义了三类基本的Bean:Session Bean、Entity Bean和MessageDriven Bean[6]。数据库维护系统的中间件基于有状态的Session Bean,可以保存数据库访问的相关信息,如当前访问的数据源名称、数据源类型、事务控制、操作状态等。

对水利数据中心数据进行查询更新维护时,需数据访问中间件向维护系统提供数据查询接口和更新接口,并将其注册到EJB的命名服务目录(JNDI)中。为保证数据库的完整性,对于更新请求,需EJB提供事务控制机制。

数据库维护系统中间件的组件对象被抽象为图3的DBManager类,封装数据库访问操作,实现查询接口dbAccessService和更新接口dbUpdateService。在中间件的开发过程中,水利数据中心各异构DBMS的数据库驱动程序和连接数据库信息用XML文件描述并保存在元数据库中。对维护数据集进行查询操作时,维护系统从目录服务中查找dbAccessService接口,分别调用DBManager类的initialDataSet、getConnection、getDataSet方法来根据数据库标识等参数初始化中间件,读取元数据库的XML文件获取数据库连接,以及返回查询的维护数据集。对于更新请求,系统查找dbUpdateService接口,使用TransactionAttribute作为注释来为DBManager类中的doUpdate方法提供事务支持,对更新操作的成功与否进行提交或回滚事务,从而保证数据库的完整性。在EJB平台上,数据访问中间件实现了对水利数据中心本地或异地数据库的透明访问。

2.3 数据定位服务

数据库维护系统需要定位到维护对象才能对其进行维护。数据定位服务为各异构数据库提供分类导航定位功能,以便快速定位维护对象。元数据库中存储了库、表的相关结构参数,以及库、表之间的树状继承关系。数据导航定位功能分别依据TDATABASE类中GetDBName方法和TTABLE类中的GetTableName方法从元数据库中获取库标识和表标识的中文名称,按照层次关系动态生成树形结构目录,每个树节点加载相关的数据。驱动导航树上的任意节点,TDATABASE类、TTABLE类或TCOLUMN类中的GetSelectSql方法会自动生成库、表或列对应的SQL查询语句保存到元数据库中以被复用。

2.4 查询预览服务

对数据进行维护的前提是获取数据并将其展示在维护界面上。为获取维护数据集,查询预览服务首先需要定位维护数据集所属的专题库标识,在其子标识中定位目标表标识。而后依据元数据库描述的元数据,利用TCOLUMN类中的GetColumn方法从元数据库中获取该表的列描述信息,动态生成表结构的显示格式;DataAccess类的GetTableMess方法根据所存储的表结构信息向数据访问中间件发送查询请求;由 DBManager类执行SQL查询语句,访问专题数据库;利用DataAccess类中的GetPageMess分页显示方法将目标数据集分页加载到屏幕表格中。

3 系统实现

系统采用Myeclipse开发工具依据J2EE规范进行开发,元数据库采用Oracle存储与管理。系统以元数据库为中介,在数据导航定位和数据查询预览通用服务实现的基础上,实现了数据编辑控制、数据质量校验、数据导入导出等个性维护功能。系统实现的数据维护界面如图4所示。

用户通过导航目录树选择需要维护的数据表,进入该表的数据维护界面,此时可对相应的维护数据集进行各项个性维护操作。数据浏览是数据维护的基础,因此系统的每一个数据维护界面都与通用机制对应的TDATABASE类、TTABLE类和TCOLUMN类、DataAccess类和DBManager类关联。系统数据维护界面的具体实现如下:

(1) 数据库注册:

系统根据数据库标识、数据库名称、服务器IP地址、数据库连接参数等数据项,执行TDATABASE类的GetInsertSql方法,将各专题数据库注册到维护系统,并通过测试连接检查数据库连接成功与否。

(2)数据模式抽取:

在界面上选择已注册的数据库,驱动数据模式抽取功能,系统自动连接目标数据库,执行TTABLE类中的extraTable方法从目标数据库的元数据库中抽取表描述信息更新到表描述表;执行TCOLUMN类中的GetColumn方法抽取列描述信息更新到列描述表。

(3) 数据导航定位:

TDATABASE类和TTABLE类读取元数据库中库标识和表标识的中文名称,在数据维护界面上显示动态生成的树形结构目录,库标识是一级节点,表标识位于叶子节点。

(4) 数据查询展示:

当用户要求对导航树中某一个叶子节点进行数据维护时,系统将TTABLE类的GetSelectSql方法生成的SQL查询语句送往数据访问中间件执行,分页返回相应表结构的维护数据集。这样,维护界面上以表结构的形式分页滚动浏览各专题数据库的任何数据表和数据列。

实现系统的通用机制即可构建出图4所示的数据维护界面,此时,可对维护数据集进行各项个性维护操作。利用TDATABASE类、TTABLE类和TCOLUMN类中的GetInsertSql、GetDelectSql或GetUpdateSql方法自动生成的SQL操纵语句,对维护数据集进行一行或多行记录的插入、删除或修改的数据编辑维护;根据用户需求将维护数据集导出为TXT、Excel、DBF或XML格式的数据文件,或者选择导入功能把具有相同数据结构的数据导入到该数据表中;驱动数据校验功能根据曲线图实时地对维护数据集进行校验工作,方便用户找出异常数据。

通用机制的应用表明数据库维护系统具有通用性,不依赖于DBMS和数据库,能自适应数据库模式可能的变化。在基于元数据的通用机制的基础上,系统以统一的方式对水利数据中心各专题数据库进行数据获取和数据维护操作,实现多源异构数据库的通用性维护。

4 结 语

本文采用基于元数据的通用机制实现了水利数据中心的数据库维护系统。系统以元数据库为中介,在基于对象/关系映射技术的通用机制的基础上,支持数据库注册、数据导航定位、数据查询展示等数据获取功能,实现数据编辑控制、数据质量校验、数据导入导出等数据维护功能,为水利数据中心数据库联邦提供了统一的数据维护平台。通用机制的应用使系统自动适应数据库模式可能的变化,避免了为数据库表定制专用的维护程序;系统的元数据库与水利专题数据库的数据模式保持同步更新。同时采用J2EE多层软件架构开发数据库维护系统显著提高了系统组件的可复用性。该系统已正式投入使用,并且建立起了省、市权限分级的协同维护[7],进一步保障了水利数据中心数据库数据的合法性、有效性和正确性。

参考文献

[1]李竞,李旸,高正光.一种基于元数据的Web通用查询系统(GQS)[J].微计算机应用,2006,27(3):372-375.

[2]杨南海.基于Web Service的异构分布式数据库维护系统研究[D].大连:大连理工大学,2004-06.

[3]李晓航,胡晓鹏.基于元数据的通用数据维护框架设计[J].计算机工程,2010,36(20):80-82.

[4]赵鹏.数据库通用维护系统研究与实现[D].大连:大连理工大学,2009-09.

[5]史周军,叶晓俊.基于元数据的对象关系映射研究[J].计算机科学,2005,32(5):95-97.

[6]金琦,姚宇明,李善平,等.基于EJB的Web信息系统设计和实现[J].计算机工程,2001,27(11):156-158.

油田站库通用数据模型设计 篇9

一是数据采集方式多样, 由于近年来信息化建设不断推进, 站库信息化设备水平不断提高, 如物联网, 站库自控系统等在各联合站中得到应用, 但由于各站建设时期不同, 信息化设备参差不齐, 各站的数据采集方式不同, 老站基本完全为手工录入, 而新站有上自控系统;有上手持终端, 情况不同, 没有统一规划。

二是报表复杂多样, 由于各站大小不同, 岗位不同, 设备不同, 还存在人为习惯问题, 导致各站报表复杂多样, 难于统一设计。

三是数据项后续需求不断增多, 随着地面工艺水平不断提高, 站库中的设备在不断改进, 随着油田采油技术的不断发展, 也将导致站库设备的更新数据项的增加 (如三采注聚合物、三元等) 。由于数据库设计无法预估未来的发展需要, 无法一次建全所有数据项, 未来还存在数据扩充的需求。

四是数据产生频率不同, 站库各岗位要求两小时巡检一次记录数据, 每天数据产生频率为12次, 记录各仪器的温度、压力、流量等监测数据;有些数据如外输流量计数据为每四小时采集一次数据, 每天数据产生频率为8次;输油泵、污水泵等班运数据为8小时录入一次, 每天数据产生频率为3次;外输油量、污水处理量、自耗气等数据每天录入一次数据, 每天数据产生频率为1次。

由于油田站库存在以上特点, 以报表式的建库方法很难满足所有站库的应用需求。目前应用的数据库如地面工程动态系统数据库无法满足站库后续的需求。面向对象的数据库设计方法也同样不能满足需求, 各站的设备不同, 各设备的属性不同, 无法一次健全所有设备对象数据库。

二、数据库模型设计思路

数据库模型设计思路是能够灵活通用的存储站库所有数据。

针对站库数据采集方式多样、数据项后续需求不断增多、报表复杂多样、数据频率不同等特点, 面向对象的数据库设计思想进行设计数据库, 将设备、站库等作为对象进行设计数据库, 由于设备差异性比较大, 设备比较复杂, 设备分类较多, 需建立很多设备数据库, 而且对于后续建立的站库, 存在不同的设备还需要进行站库设备数据库进行扩充, 无法一次性建全设备数据库。如地面泵存在油泵、污水泵、收油泵等, 加热炉有的站还存在两用炉的情况。因此采用面向对象的数据库设计方法无法满足应用。

那么如何设计站库数据库, 完整统一存储站库数据, 满足各站不同应用需求呢?采用元数据的思想能够将站库复杂多样的数据进行描述清楚, 描述各数据的关系, 形成完整的数据根与树干, 能够形成树叶的各系统应用。树根与树干建立好了之后, 即使树叶掉落了也可以重新生成。

源数据 (树根) 可以接收手工、工控、手持等不同采集方式的数据, 而树干代表各源数据关系, 通过设备、站库、岗位、组织关系将各数据源连接起来, 将杂乱无章的数据组织形成为站库整体数据。各数据源通过数据连接关系能够派生形成统计分析的各项数据, 自动计算汇总日报、月报等各类报表, 形成树叶的各项应用。

关系数据库以元数据思想进行设计, 数据表包括数据之间的上下级关系、实体类型、计量单位等信息描述此节点的信息;而源数据数据库为存储叶子节点的数据, 数据以键值对的形式存储, 以item_id、时间作为主键与数据值。

数据库设计存在三大范式:第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时, 称R是满足第一范式的, 简记为1NF;第二范式:如果关系模式R满足第一范式, 并且R得所有非主属性都完全依赖于R的每一个候选关键属性, 称R满足第二范式, 简记为2NF;第三范式:设R是一个满足第一范式条件的关系模式, X是R的任意属性集, 如果X非传递依赖于R的任意一个候选关键字, 称R满足第三范式, 简记为3NF。本数据库设计符合数据库设计三大范式, 冗余较小。能够将站库所有数据关系进行定义, 能够存储不同频率的数据, 不需更改数据库结构满足后续数据扩充需求, 能够统一存储站库所有数据。

三、结论和建议

采用元数据数据库设计方法设计的通用站库数据模型, 解决手持终端、自控系统和计算机录入数据统一存储;解决各站数据报表复杂多样, 站库设备多样等问题。该模型能够保存全面的站库数据, 支持多套系统应用, 有效避免信息重复建设, 信息孤岛的产生, 为物联网建设等油田信息化建设奠定基础。

参考文献

[1]王珊.数据仓库与数据挖掘技术[M], 1998.

网络数据分类的通用化设计 篇10

目前,高速以太网等计算机网络技术得到了广泛应用。通过以太网,各种设备之间的互联和数据交换变得简单、快捷、可靠,非常适合于解决设备间的兼容和互操作问题。[1]以太网一个主要的特点是简单,在实践中,简单性带来了可靠、廉价、易于维护等特性,因此,以太网具有强大的生命力。

以太网可以在同一总线上运行不同的传输协议,从而能够建立公共网络平台或基础架构。TCP/IP协议是最常见的网络互连协议,通常被定义为七层网络模型,用户可以根据实际需要,在应用层自定义数据帧格式。[2]通过自定义数据帧,用户可以方便地扩展数据通信功能,或者加强数据通信控制,满足不同的业务需求。这为网络应用带来了极大的灵活性,但同时也带来了一些不便。由于网络上传输的数据多种多样,因此用户需要将接收到的网络数据进行分类,不同的业务应用使用不同的数据信息,这样才不会产生混淆,避免后续的数据处理出现错误。通常,网络数据分类由网络应用软件完成,由软件开发人员根据规定的数据帧格式编制相应的数据分类模块,实现网络数据的分类。随着自定义数据帧格式的增多,需要编制的数据分类模块也不断增加,大大降低了软件开发的效率。

网络数据分类是网络应用的一个基础功能,通用化的网络数据分类方法可以提高网络应用开发的效率,具有较高的实用价值。本文分析了现有网络数据分类方法的共同点,设计了一个具有较强通用性的分类方法,可以在尽可能小的改动下,实现各种网络数据的分类。

2. 接收网络数据的场景类型

在实际应用中,网络设备从网络上接收数据帧,然后进行处理。虽然网络数据的格式多种多样,但网络设备接收网络数据帧总可以归纳为以下三个场景。

2.1 网络上所有设备都只发送一种格式的数据帧。

这种情况下,数据源与数据帧的类型是一一对应的,知道了该数据帧是某个设备发送来的,即明确数据帧的来源,就可以知道该数据帧的类型。这个场景下的网络数据分类就是区分是“XX设备发送来的数据”。

2.2 网络上所有设备发送多种格式的数据帧且帧类型码不重复。

通常,在帧格式中会定义一个帧类型码,对所有类型的数据帧进行编码,这样,通过帧类型码就可以区分各个类型的数据帧。如果帧类型码是统一编码,就可以保证所有数据帧在帧类型码上不会重复。这种情况下,通过数据源不足以区分开各种类型的数据帧,但可以通过帧类型码区分各种数据帧。这个场景下的网络数据分类就是区分是“YY类型的数据”。

2.3 网络上所有设备发送多种格式的数据帧且帧类型码有重复。

在某些应用中,帧类型码的编码与设备是相互独立的,不同的设备可以发送同一帧类型码的数据帧。在这种情况下,单独考虑数据源或帧类型码都不能准确区分数据帧的类型,需要综合考虑数据源及帧类型码,才能正确区分数据帧。这个场景下的网络数据分类就是区分是“XX设备发送的YY类型的数据”。

3. 网络数据分类的方法及要素

3.1 网络数据分类的方法

对应于上述三个接收网络数据帧的场景,可以采用如下方法进行网络数据分类。

3.1.1 源IP分类:

用于第一个场景下的数据分类,区分是“XX设备发送来的数据”。在网络上,网络设备通常用设备的IP地址标识,源IP即表示了网络数据帧的来源。明确了数据源IP,就可以明确接收的数据帧是从哪个设备发送来的。

3.1.2 帧ID分类:

用于第二个场景下的数据分类,区分是“YY类型的数据”。帧类型码通常简称为帧ID,如果所有的帧ID是统一编码的,编码值没有重复,则帧ID与数据帧类型一一对应,采用帧ID即可区分所有数据类型。帧ID是数据帧中的一项,获取帧ID需要对网络数据帧进行“解帧”,也就是在数据帧中找到帧ID所在位置,并获取其值。

3.1.3 混合分类:

用于第三个场景下的数据分类,综合使用源IP和帧ID,区分是“XX设备发送的YY类型数据”。

3.2 网络数据分类的要素

网络数据帧格式是网络数据分类的基础和依据。图1给出一个自定义网络数据帧的格式,下文将以此为例进行描述。该帧格式基于TCP/IP协议进行定义,关于TCP/IP协议的论著很多,本文不再赘述。

在上图中,用户关心的是应用层数据,可以根据需要自行定义应用层数据的格式。图中给出了格式定义的一个实例,数据帧由多个数据子帧组成,每个子帧都遵循相同的格式定义,其各个组成项目的作用如表1所示。

上述三种网络数据分类方法的目的,都是从数据帧中获取源地址、帧ID等信息,从而确定数据帧的类型。不难发现,这三种方法中都有几个不可或缺的要素。

3.2.1 源IP:即数据帧的源IP地址,表示该数据帧是哪个设备发送的。源IP主要用在第一和第三个场景中,明确是“XX设备”。

3.2.2 帧ID:即数据帧的帧类型码,主要用在第二和第三个场景中,明确数据帧的类型,即明确是“YY类型的数据”。

3.2.3 应用层数据的帧结构信息:表示应用层数据格式的定义,说明“总帧长”、“帧ID”、“帧长度”、“有效数据”等项目的位置、数据类型、字节数等信息。在解帧过程中,可以根据该帧结构信息,定位到数据帧的各个项目,并获取项目的值。

4. 网络数据解帧的通用方法

在网络数据接收的第二和第三个场景中,都需要获取帧ID才能完成数据的分类。获取帧ID通过对网络数据帧进行“解帧”操作完成。解帧就是按照数据帧格式定义,在数据帧中的相应位置找到各个项目,获取项目的值,或解析项目内容。

网络数据帧格式多种多样,解帧的关键在于正确解析数据帧头。数据帧头指有效数据之外的数据信息,通常包含了各种辅助信息,用于帮助控制通信过程和解析数据内容。图1中,“帧类型码”、“日期”、“时间”、“帧长度”、“保留”这几个项目组成了数据帧头。帧头中包含了多个信息,解帧时必须考虑三个因素:第一是帧类型码,这是判别帧类型的重要标识,知道了帧类型码,就可以判断该数据帧是否需要;第二是帧长度(包括总帧长和各个子帧长),这是控制解帧操作结束的标准,知道了帧长度,就可以在解帧到帧尾时停止解帧操作,防止误操作缓冲区;第三是有效数据的位置,以便对有效的数据进行处理。

无论网络数据帧格式如何变化,只要知道了上述信息,就可以正确解帧,获取帧ID及有效数据。基于这种思路的解帧方法与帧格式定义没有关系,可以作为一种通用的解帧算法。图2给出了网络数据解帧通用方法的处理流程。

5. 网络数据分类的通用方法

当网络设备接收网络数据帧时,可以同时获取该数据帧的源IP,从而知道发送该数据帧的源设备。每个源设备发送的数据帧格式是预先约定的,按照其帧结构信息,采用上文所述的通用化解帧方法,可以获取帧ID,从而确定数据帧的类型。也就是说,网络数据分类的要素都可以获取。在此基础上,再对照接收网络数据的场景,采用相应的数据分类方法,即可完成网络数据的分类。

图3描述了网络数据分类的通用化处理流程。该处理流程只需要知道数据帧的源IP,以及帧ID、帧长度、有效数据的格式信息,可以适应多种数据帧格式定义,完成数据帧的分类操作,具有较强的通用性。

6. 结语

本文概括了网络设备接收网络数据的三个典型场景,分析了在三个场景中进行数据分类不可缺少的共同要素。在此基础上,设计了三种网络数据分类的方法,分别用于相应的场景。对于数据分类过程中涉及的解帧操作,设计了通用化的网络数据解帧方法,其关键在于正确的解析网络数据帧头。

最后,本文综合运用三种网络数据分类方法,设计了通用化的数据分类算法。该算法可以在统一的处理流程中,适应大部分数据帧格式定义,完成各种网络数据的分类,具有较强的通用性。这种网络数据分类算法应用在我开发的多个软件中,不需修改软件代码,即可对不同格式的网络数据帧进行准确分类,提高了软件开发的效率,取得了较好的实用效果。

由于时间关系,本文只是对网络数据分类的方法作了初步探讨,很多详细的技术问题还需要在以后深入研究和验证,文中错误之处,敬请批评指正。

参考文献

[1]刘晓辉等.以太网组网技术大全.清华大学出版社, 2001.

上一篇:感知概念下一篇:乡村文化建设论文