通用数据结构

2024-05-21

通用数据结构(精选11篇)

通用数据结构 篇1

1 引言

伴随着整个IT互联网的飞速发展,各行各业对应用程序的要求也是越来越多,他们对应用程序的要求不仅是实现复杂的需求,同时要求UI(User Interface)美观、操作简便,系统响应迅速,系统健壮等[1]。为了能够达到这些要求,一些高级程序应运而生,例如Java、.Net等。这些高级程序和早期面向过程的语言有着显著区别:它们都是OO(Object-Oriented)面向对象的。面向对象的含义是,一切事物经过抽象都可以使用特定的对象来描述。如果业务需求非常零碎,每一个需求都定义为对象,将会导致系统对象“爆炸”,应用架构会变得臃肿。在此背景下如何构建通用的数据结构,为程序“消肿”就显得十分有必要。

2 方案设计

2.1 设计背景

在银行和外汇交易增值服务业务中,成员机构需要从增值服务系统下行大量的业务数据,增值服务也需要成员机构上行各种业务数据。如果每一种业务数据都定义成不同的数据结构,显然不太合适[2]。自定义通用数据结构(Common Msg)便成了一种解决方案。

2.2 总体架构

自定义通用数据结构主要依托于两个构件,一是Java的集合类,二是XML(Extensive Makeup Language)可扩展标示语言。本方案采用Java作为开发语言,因为Java面世至今,在跨平台、多线程和联网等方面体现了强大的能力[3]。选择XML的原因是它具有非常灵活、便于扩展以及Java对其有较好的解析方式等诸多优点[4]。

图1是方案的总体设计类结构图。从中可以4种数据结构,依次是Field、Field Map、Field Map Set以及Field Map唯一子类Field Map Node。

2.3 方案详细介绍

针对不用的业务场景来选择不同的数据结构,下文将详细介绍每一个数据结构。

(1)Field

Field(也称为“域”)是方案中粒度最小的数据结构,它也是不可再细分。Field包含name和value两个成员变量(参见图1),name存储数据名称,value存储数据值。典型的Field对应的XML结构如下所示:

(2)Field Map

Field Map用于组装、归类不同的Field,从而来表现一个特定的业务。它主要包含name、field Map等成员变量,name存储当前Field Map名称,为非必填项。field Map的类型是Map,所以Field Map可以组装不同的Field。典型的Field Map对应的XML结构如下所示:

Field Map Set为Field Map的集合,用于组装更复杂的业务数据,但是他也可以直接包含Field,为了区别于Field Map中的域,将它称为Field Map Set的Attribute属性。典型的Field Map Set对应的XML结构如下所示:

Field Map Node采用递归方式加载所有节点,实现节点嵌套节点。实际使用时和直接使用DOM解析没有太大的区别。

(5)Common Msg

依赖于Field、Field Map、Field Map Set以及Field Map Node的Common Msg,它是应用对外展现的统一“接口”。可以通过如下方式构造一个Common Msg。

Common Msg实例化时是不会尝试解析XML,此时它还不明确XML的结构。直到明确消息格式的使用者主动去调用get Field Map()、get Field Map Set()、get Field Map Node()的时候,Common Msg才会知道怎样进行数据结构的转换。Common Msg的设计初衷就在于将转换控制权全部交给XML协议制定者,基于协议规范,应用就可以很方便解析数据,而方案不需要也不可以做任何的改动。

3 方案应用

3.1 基于MINA的实例性应用

MINA(Multipurpose Infrastructure for Network Applications)是Apache组织的一个项目,它为开发高性能和高可用性的网络应用程序提供了便利的框架。当前MINA版本支持基于Java NIO技术的TCP/UDP应用程序开发、串口通信程序等。本质上MINA也是建立在Internet网络编程API之上[5]。为了说明本方案的使用方法,我编写了一个基于MINA的验证性实例应用。

通过MINA建立的Socket会话是长连接,所以当用户登录并通过身份验证时,服务器会保存用户会话,直到客户端登出才予以删除。服务器会模拟报价和交易的数据源,通过定时任务,每相隔10秒向所有在线客户端主动推送报价和交易消息。具体的行为如图2所示。

(1)消息格式

交易消息格式:

报价消息格式:

(2)消息解析

客户端使用监听回调的方式,在回调函数中接收、解析服务器推送来的消息。

消息处理函数:

(3)通用数据结构的应用详解

在实例中定义了2种消息类型,分别为交易消息和报价消息,消息的树形层次都为3层,所以在实例化数据结构时,选用Field Map Set。通过获取Field Map Set中的Fid属性,判定消息的类型,然后在根据消息格式中具体标签(消息格式实际上就是业务数据协议),依次获取每一个Field值。例如,解析获取交易和报价时间分别传递的是“Deal Date”和“QuoteDate”。

3.2 方案的优点

通用数据结构为避免应用的数据结构“爆炸”提供了解决方案,当需要获取业务数据时,只需要根据约定的协议,便可以方便解析数据。具体的优点包括:

(1)应用不再需要定义大量的数据结构,避免数据结构的“爆炸”,增加了代码复用性。参考消息协议就可以方便地进行消息解析处理,如果消息格式有变动,只需要依照消息协议,改变解析函数即可,降低了系统维护成本。

(2)应用可以实现组件的数据源绑定。例如直接使用Field Map、Field Map Set或Field Map Node填充表单等,减少代码开发量和程序开发难度。

(3)请求发送和请求回调的参数得到了统一,简化了应用架构。

3.3 方案的缺点及改进

通用数据结构缺点也是比较突出的,具体如下:

(1)丧失了编译器类型检测功能。因为应用不再需要定义强类型,所以在更改数据协议的时候,需要更加小心,确保每一处的变动都有更改。

(2)基于三层结构的设计,虽然可以涵盖很大部分需求,但是处理超过3层的树形结构时,还是需要直接使用DOM。虽然Field Map Node可以处理多层,但是使用起来不是很方便。

针对方案的缺点,可进行相应的改进:

(1)类型编译检查属于编译器功能,代码级无能为力,所以目前没有好的改进方式。

(2)增加Field Map Node功能,使其对多层的树形结构提供更良好的支持。

4 结语

零碎的业务需求迫使应用程序定义大量复用性差的数据结构,导致应用结构臃肿,增加系统维护成本,通用数据结构为此提供一种解决方案。通用数据结构目前还不支持.Net,但是和Java一样,.Net也包含所有的高级语言特性,同时.Net Framework基于事件的异步模型为高性能的通信服务提供了有力的支持[6],异步回调模式为应用消息处理提供了另外一种方式,在将来的Common Msg中,也会开发出基于.Net的版本。

参考文献

[1]周坤,傅德胜.基于Windows Socket的网络数据传输及其安全.计算机工程与设计[J].2007.11.

[2]姜才康,孙小林.当前中国银行间市场数据标准化探索与实践[J].chinamoney,2011,05.

[3]童铭,李志蜀.基于Socket的多用户通信框架及实现[J].四川大学学报(自然科学版),43(3):2006.

[4]赵保翠,张勇.基于XML的Socket方式实时数据交换[J].计算机工程,32(11):2006.

[5]蒋敏,单家芳,孔军.基于Socket的多平台通讯研究[J].计算机工程与应用,2005.

[6]劳伟.基于事件的异步Socket通信模型分析.中国金融电脑[J],2011.

通用数据结构 篇2

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

市场/营销

文字媒体/写作 

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

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

通用数据结构 篇3

【关键词】JSP;JavaBean;数据库

0.引言

JSP技术是由Sun公司于1999年6月推出的网页开发技术,它是基于Servlet以及整个Java体系的Web开发技术,利用这一技术,可以建立先进、安全和跨平台的动态网站。JSP技术作为是Java在Web上的重要应用技术,得到了广泛的支持和承认,它可以和各种Java技术完好地结合在一起,从而实现非常复杂的应用。在利用JSP开发Web应用时,对数据库的访问时必不可少的,如何对数据库实现增加、删除、修改、查询等操作,是每个Web应用必须要解决的问题。如果在每个JSP页面文件中直接嵌入大量java数据库的代码及SQL语句,实现了数据库的连接,但这样使得程序员难以维护、扩展、调试程序。将JSP和JavaBean技术结合在一起,把数据库连接操作封装在JavaBean组件中,当JSP页面需要连接数据库时,只要调用JavaBean组件即可。下面将介绍如何实现一个通用的数据库操作框架。

1.相关技术简介

1.1 JSP技术

JSP(Java Senrer Pages)是由sun公司倡导,许多公司参与一起建立的一种动态网页技术标准,并纳入作为J2EE的其中一个标准。就其形式而言,JSP页面是在传统HTML文件中加入Java程序片段和JSP标签,因此JSP也继承了Java语言的各种优点,该技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。在JSP的众多优点之中,其中之一是它能将HTML编码从Web页面的业务逻辑中有效地分离出来,这种分离使得网页设计者和JSP程序开发者之间的人物十分清晰,即使很复杂的JSP代码也可以很容易的被升级和重用,而可重用的组件就包括如Servlet、JavaBean等。

1.2 JavaBean

JavaBean就是Java的可重用组件技术,类似与Microsoft的COM组件。它可以用来完成执行复杂的计算任务,或负责与数据库的交互以及数据提取等。JavaBean组件就是Java类,这些类遵循一个接口格式,以便于使方法命名、低层行为以及继承或实现的行为能够把类看做标准的Jav?aBean组件进行构造。JavaBean的组成主要包括属性、方法和事件处理器。标准的JavaBean要求有一个默认的不带参数的构造方法;使用setXXX()方法来设置JavaBean的属性;同时使用getXXX()方法来获取JavaBean的属性。在JSP页面里创建一个JavaBean实例可以通过使用标签,并可以在标签里指定JavaBean的名称和作用范围。我们可以通过标签设置JavaBean的属性,通过读取JavaBean的属性。按照JavaBean的功能分类,可分为可视和非可视的JavaBean。可视的JavaBean用于AWT环境下。自从JSP诞生后,JavaBean更多的用在了非可视化领域,在服务器应用方面表现出越来越强的生命力。在JSP里嵌入JavaBean可以完成数据库的访问。我们可以把操作数据库的代码封装到一個JavaBean中。当需要改变要访问的数据库时,只修改JavaBean文件即可。

1.3 JDBC技术

JDBC(Java Database Connectivity,Java数据库连接)是应用程序编程接口(API),描述了一套访问数据库的标准Java类库。我们可以在程序中使用这些API,连接到数据库,执行SQL语句,进行与数据库相连,查询、修改、删除数据库的操作。利用JDBC访问数据库有四种方式。一是通过JDBC-ODBC桥。由于绝大多数的数据库都可以通过ODBC来访问,我们使用JDBC-API通过ODBC去访问数据库。二是使用本地API用Java编写的驱动程序。该驱动程序把客户机API上的JDBC转换为对特定的DBMS客户机API的调用。三是JDBC网络纯Java驱动程序。该驱动把调用发给应用服务器,应用服务器使用本地驱动程序访问数据库来完成调用。四是使用本地协议的纯Java驱动程序。该驱动通过与数据库建立直接的套接字连接,采用具体于厂商的网络协议把JDBCAPI调用转换为直接的网络调用。

2.设计思路

在Web开发中,使用J2EE开发的网络应用和网站是目前主流,而其开源架构Struts+Spring+Hibernate也是目前最为流行的技术,但是作为一些中型站点的开发,我们并不需要使用这么庞大的架构,而可以选取其中的一些技术来实现其小量的业务逻辑,作为这种站点,使用JSP+JavaBean技术就能够满足其要求。

我们使用JavaBean封装数据库的连接,使数据库的地址,用户名,密码都处于不可见状态,只能通过JavaBean对数据库进行访问,可以提高数据库的安全性,同时,在页面上只需调用JavaBean中相应的方法就可以对数据库进行操作,可以大大简化页面中脚本的编写,使程序员能更加轻松。

在处理传递过来的数据时,考虑到代码的通用性,前面两种操作要求传递新的数据,而后面两种操作则涉及到条件的传递,所以设计了一个接口,用于规范参数的传递,而用户需要设计的JavaBean都须遵循这个接口规则,并通过接口中的方法把相应参数传递给数据库操作类。

因为对数据库的操作主要是新增、修改、删除和查询工作,所以在设计数据库连接时使用insert、update、delete和select4个方法对应4种操作,在这4个方法中,都使用SQLBean这个接口规范的方法获取相关信息,并根据这一系列的信息生成SQL代码,从而实现对数据库的操作,而后续开发人员只需要编写一个基于SQLBean这个接口的子类就可以了。

3.结束语

利用JavaBean将数据库连接进行封装,并使用对应的接口规范传递到数据库操作的参数,在数据库操作类中实现SQL语句的设计,可以保证数据库的安全,同时大大的简化了开发人员对数据库操作程序的设计,提高开发效率。

【参考文献】

[1]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2001:209-237.

[2]王强等编译.JSP开发技术.高等教育出版社,2005.

通用数据安全访问模型 篇4

本文提出了一种通用数据安全访问的模型CDSA, 它实现数据的抽象访问与同步, 帮助工程师们管理好系统软件的数据, 保持数据的一致性和完整性。基于此模型可以实现远程过程调用 (RPC) , 其机制、原理和标准的RPC调用以及分布式计算原理完全相同, 不同之处在于这种调用方式可用于跨进程、跨系统、跨计算机边界、跨平台等复杂的环境中。

1 通用数据安全访问模型

首先, CDSA模型把各种系统软件对公用数据的访问划分为高级访问 (调用者需要理解数据以及各参数和返回的含义) 和原始访问 (调用者无需理解数据以及各参数和返回的含义) 。高级访问针对数据应用, 原始访问针对数据传递过程。

(1) 原始接口:输入和输出为数据流, 不理解协议本身以及任何应用数据结构, 供通讯使用。

(2) 高级接口:输入和输出为实际应用数据, 理解协议本身以及应用数据结构, 供业务使用。

其次, 考虑到一般的系统软件中数据的传递过程分为进程组内部数据传送 (交换) 和远程数据交换, CDSA模型规定进程组内的数据传送通过消息队列进行通讯, 在进程组外的数据传送, 主要通过SOCKET进行通讯。CDSA模型还约定这两种数据传输均通过原始模式进行, 不需要理解数据的含义以及输入和返回。

(1) 对于本地应用进程 (服务器进程) , 通过消息队列和主进程进行通讯, 达到数据读写的目的。为什么这样处理呢?主要是因为CDSA模型支持保存复杂的数据结构, 而共享内存只能适用于简单的数据结构, 如果采用复杂数据结构, 必须实现空间管理, 这非常复杂且可移植性不强。

(2) 对于其他进程, CDSA选用SOCKET作为通讯的手段, 通过抽象和复用代码等方法完成完整的数据通讯和交换过程。既达到RPC的效果, 又降低系统复杂程度, 同时满足了高效数据通讯的需求。

(3) CDSA模型规定, 服务器启动后, 主进程负责将全部的数据加载到内存, 主进程有义务通过消息队列或SOCKET等方式为其他服务进程 (包括远程管理进程、客户端进程) 提供数据共享, 并惟一直接操作数据库, 以维持数据的统一性。

(4) 如果系统软件有独立的远程管理进程, 由于多次远程读取数据需要耗费大量的带宽和时间, 所以CDSA模型规定管理端进程与服务端连接后, 首先下载并且维护一份和远程服务端一致的数据, 如此一方面保证本地数据和服务器数据的一致性, 一方面降低数据读取的消耗。

(5) CDSA为了保证数据的一致性, 采用了读取共享、写入独占的方式。具体来说, 本地应用进程在系统启动后自动获取数据库的修改权限, 第一个连接进入的管理进程可以抢占该写入权限, 直到该进程退出后, 如果系统中已经存在有一个管理连接, 后连接进入的进程将只能获取读取的权限, 并不能剥夺第一个管理进程的写入权限。

最后, CDSA模型定义数据访问的触发 (回调) 机制, 用于在设置变更或读取的状态下做出某种响应 (如配置系统、数据同步传递、数据重读、数据更新等) 。

2 CDSA模型的实现

CDSA模型存取的数据可以是数据库, 可以是配置文件、系统环境等。对数据库的操作没有定义专门类, 需要各系统软件自行考虑。对配置文件、系统环境等的存取, CDSA模型定义了实现IBoot DBIPlugin接口的Csvr Cfgtor类。通过这个专门类去处理实际的数据存取, 该专门类还支持调用IAdvBootDBI接口, 以便远程重新获取数据、远程修正数据。

CDSA模型还定义了两个实现IRaw Boot DBI或者IAdv BootDBI接口的类, 用于完成对数据的存储和数据格式的转换。

(1) 数据直接访问类

完成数据的直接访问, 对数据库进行直接操作, 通过IBoot DBIPlugin接口调用Csvr Cfgtor类来完成数据的存储以及存储的事件通知。

该类实现了IRawBootDBI、IAdvBootDBI这两个接口。其他进程可以通过这两个接口调用来存取数据。

(2) 数据中继访问类

完成数据的转换, 可以将复杂的数据结构转换为标准的数据流, 或者将数据流还原成复杂的数据结构。这些数据流包括两个部分:输入流和输出流, 通过这两个部分完成参数的传递和返回值的获取。

该类实现了IAdvBootDBI这个接口, 支持调用其他类的IRawBootDBI接口去传递、存取数据。其他进程可以通过这两个接口调用来存取数据。

(3) 客户端SOCKET类 (数据通讯模块)

数据通讯模块本身即为一个基于IRawBootDBI的对象, 他们完成的工作即将输入流送入其他服务进程或者服务器端, 然后等待其他服务进程或者服务器端返回一个输出流。一个CBootDBRelay的对象可以成功地将高级的数据转换为 (序列化) 流格式, 然后调用通讯模块的接口IRawBootDBI, 等待通讯模块完成数据请求后, 将返回流还原成 (反序列化) 高级格式, 返回给调用者。

数据通讯模块对数据的序列化与反序列化是成对出现的, 如果有多对序列化的格式, 就要分配协议号以示区别, 协议号本身被序列化成流格式的第一个字节, 反序列化时先读取第一个字节, 了解序列化的格式, 再对后续的流格式进行反序列化。

3 CDSA模型中数据访问的流程

模型中涉及配置数据的各进程对数据访问的逻辑示意如图1。

(1) 数据服务进程的直接数据访问

数据服务进程负责数据库的管理, 是数据的直接处理进程, 该进程通过消息队列实现数据的对外共享。

如图1所示, 在请求到达后, 该进程通过CBootDBDirect访问数据, 并同时完成系统配置:[消息队列服务器端]->IRawBootDBI (CBootDBDirect) ->DB (->IBootDBIPlugin (CSvr Cfgtor) ->系统配置) 。

(2) 本地进程间的数据访问

本地应用进程是本地的数据消费者之一, 该进程不能直接访问数据库的数据, 但可以通过高级访问接口存取数据:[本地应用进程]→IAdvBootDBI (CBootDBRelay) ->IRawBootDBI (消息队列客户端) 。其过程如图2所示。

(3) 远程进程间的数据访问—服务端

远程管理进程的服务端是数据的转发层, 对外衔接网络, 对内衔接数据服务进程。

[远程管理进程的服务器端]->IRawBootDBI (消息队列客户端) 其过程如图3所示。

(4) 远程进程间的数据访问-客户端

如图4所示, 远程管理客户端进程为数据的消费进程, 存在两种访问数据库的方式:

本地缓存数据:[管理]->IAdvBootDBI (CBootDBDirect) ->CacheDB

远程数据:[管理]->IAdvBootDBI (CBootDBDirect) ->IBoot DBIPlugin (Csvr Cfgtor) ->IAdvBootDBI

(CBootDBRelay) ->IRawBootDBI (SOCKET客户端)

4 CDSA模型的应用

图5说明了一个无盘站引导服务系统使用CDSA模型进行数据访问的实际情况。

说明:

(1) 图中数据守护进程不但是主无盘站引导服务软件的主进程, 还是数据服务进程, 它直接进行数据访问, 通过消息队列实现数据的对外共享。

由于系统软件本身功能不同, 操作的数据类型肯定也不同, 这就要根据实际需要去定义具体的实现类。图5中定义了无盘配置数据, 系统数据, 系统配置数据, 缓存数据等类。

(2) 图中DHCPBINL服务进程和TFTP守护进程对应了本地应用进程。

D H C P B I N L和T F T P守护进程是本地的数据消费者, FTFP还会fork出新的进程进行数据消费, 这些进程通过高级访问接口存取数据。

(3) 图中的管理服务器进程对应远程进程的服务端

管理服务器进程是数据的转发层, 对外为管理工具提供数据, 对内向数据服务进程取得数据。

(4) 图中的管理工具进程对应远程进程间的客户端

管理工具进程是数据消费进程, 刚建立连接时, 把数据从服务端请求到本地缓存, 以后的操作在缓存内进行。操作完成后, 如果缓存数据被修改过, 就调用CsvrCfgtor类的IBoot DBIPlugin接口回写数据。也可以通过IBoot DBIPlugin接口从远程取得最新的数据。

摘要:本文提出了一个称为CDSA的数据安全访问模型, 该模型可以被用在各应用软件中保证服务端与客户端数据的一致性, 也可以用在本地进程间通信、远程进程间通信等领域, 保证共享数据的一致性。

关键词:数据存取,数据一致性,回调

参考文献

演讲稿的通用结构有哪些 篇5

一、开头:快速吸引听众,引人入胜

演讲稿的开头,也叫开场白。它在演讲稿的结构中处于显要的地位,具有重要的作用。好的演讲稿,一开头就应该用最简洁的语言、最快速的时间,把听众的注意力和兴奋点吸引过来,这样,才能达到出奇制胜的效果。

二、主体:环环相扣,层层深入

主体是演讲稿的主要部分。在行文的过程中,要处理好层次、节奏和衔接等几个问题。

(1)层次

层次是演讲稿思想内容的表现次序,是根据演讲的时空特点对演讲材料加以选取和组合而形成的。最简单的方式是用数字序号来表达内容的层次,如提出3个问题,第1、第2、第3,或有3种方法等等。

此外,演讲稿中也可以使用过渡句,或者用“首先”、“其次”、“然后”等关联词来区别层次,这也是使演讲思路更加清晰的有效方法。

(2)节奏

节奏是指演讲内容在结构安排上表现出的张弛起伏,主要通过演讲内容的变换来实现。节奏变化会使听众不至于疲劳,如在演讲稿中,适当地插入幽默、引经据典一些诗文、穿插一些奇闻异事等,使演讲内容不单一,以便听众的注意力能够长时间地保持高度集中。

相反,如果节奏变换过于频繁,也会造成听众注意力涣散。

(3)衔接

衔接是指把演讲中的各个内容层次联结起来。演讲稿结构衔接的方法主要是运用两段内容、两个层次有联系的过渡段或过渡句,从而使各个内容层次的变换更为巧妙和自然,使演讲稿富有整体感,有助于演讲主题的深入人心。

三、结尾:简洁有力,回味无穷

结尾是演讲内容的自然结束。言简意赅、回味无穷的结尾能够震撼听众,促使听众不断地思考和回味。演讲稿结尾没有固定的.格式,可以是对演讲全文要点进行简明扼要的小结,也可以是号召性、激励性的口号,甚至可以是名人名言以及幽默的话。结尾的重要原则是:一定要给听众留下深刻的印象。

以上就是一般演讲稿通用的结构,大家以后演讲稿按照这个结构去写,再加入一点肢体语言,相信你未来的演讲会更加圆满。

通用数据结构 篇6

关键词 3G/WiFi;无线通信;音视频传输;移动终端;电路设计

中图分类号 TP 文献标识码 A 文章编号 1673-9671-(2010)121-0028-03

随着现代技术的飞速发展和人们对现代技术产品依赖欲望的日益增加,目前广泛使用的有线通信技术和手段已难以满足具有丰富想象力的现代人的需求。移动通信在人们生活中的快速普及的同时,也推动着新技术的研发和推出,特别是无线WiFi技术的广泛应用和3G时代的到来,为移动音视频数据传输提供了新的、有效的途径。为满足日益增长的社会需求,充分利用现有无线信道的传输带宽,高清晰图像数据的无线传输技术更是目前研究重点。本文是根据作者在构建电力系统无线音视频应急指挥系统过程自主研发的“基于3G/WiFi模式下通用音视频数据传输模块子系统”整理正文的。

1 系统的开发平台及系统组成

1)系统开发平台。整个模块(系统)是基于SOC硬件平台进行开发,采用基于实时嵌入式LINUX,利用并优化H.264图像压缩算法,将音视频模拟电子信号通过ADC芯片转成数字信号,送入SOC,由SOC进行采集、压缩之后,再通过网络将压缩过的码流传到PC端。PC端软件主要是基于Microsoft操作系统,主程序采用C++语言编写,通过网络接收到音视频码流后,将其解压缩还原显示,从而达到网络实时监看目的。其硬件架构如图1所示。

2)系统组成。本系统的核心芯片Cypher7108是美国Micronas公司于2005年推出的一款高度集成了音/视频流媒体编码的SOC芯片,可实现实时MPEG-4,MPEG-2,H.264视频编码。Cypher 7108提供了丰富的主机接口,包括HPI,USB 2.0和PCI接121,最高可支持30帧/秒,分辨率达full.Dl(720x480)的全运动图像。

硬件由音视频SOC编码器、网络接口、音视频模拟输入接口、视频数字输入接口、USB接口、SD卡接口等构成。

2 功能模块设计

1)音视频数据采集。前端的图像采集模块由光学镜头和CCD构成(如图2),在一般情况下,选用焦距为16mm镜头即可,参数为480TVL,感光度为0.1Lux,其输入模拟视频信号送至SAA7115,进行模数转换,得到数字信号送往7108A内的专用压缩编码模块中进行压缩编码,最终经3G/Ethernet网络接口输出。音频信号的处理方法亦是如此。为了保证音视频信号的同步传输,需由MIPS控制模块分别在音视频信号中加入时间戳,在客户端的电脑缓冲区内,利用时间戳对两种数据进行重组,然后再由播放器解码播放。整个数据处理过程均由7108内含的MIPS32模块控制。

图2 语音图像采集

Cypher7108提供的一款高度集成了音/视频流媒体编码的SOC芯片,可实现实时MPEG-4,MPEG-2,MPEG-1,H.264视频编码,此外,它还具有一个可编程的音频编码组件,可提供杜比数字(AC.3)和MPEG-1/2第一层和第二层格式的音频编码。

2)3G/WiFi双模设计。对于运营商来说,在3G时代他们希望可以从根本上改变传统的电信业务以语音为主的特征,代之以融合语音、数据、图像等多种内容的传输业务。事实上,从目前已经开展3G业务的国家看,3G数据业务发展并未取得人们预想的结果,WLAN(无线局域网)和3G的相互整合也被提上议事日程,人们希望通过两者的共存互补来弥补3G在数据业务上的某些缺陷。

相比3G,WiFi能提供高带宽,但却是在有限的覆盖区域内(建筑物内以及户外的短距离),很难做到广域的覆盖。与此相比,3G网络支持跨广域网络的移动性,但是数据吞吐速率明显低于WiFi。3G和WiFi在终端中的互补关系,已经有厂商将它们在3G终端中做了双模设计。从硬件架构上区分,3G和WiFi双模终端的实现,可以有多种模式,如图3所示。用户可根据需要选择3G网络还是WiFi网络进行音视频传输。

图3 3G和WiFi双模终端实现方案

3)USB接口设计。USB 2.0标准定义了两种连接器,如表1所示。Series-A为上位机端的,Series-B为下位机端的。由于Series-B的连接器对于像手机一样的便携式设备来说太大,USB 2.0增加了一个可选接口连接器叫做Mini-B,习惯性称之为Mini-USB。它的插座尺寸只有Series-B的一半大小,可以在任何应用中替代Series-B。可以说每一条USB线缆都一定有Series-A连接器,但不是都需要Series-B或Mini-B。

USB定义的速度标准分为3种。高速模式(High speed)为480Mbit/s,全速模式(Fun Speed)为12Mbit/s,而低速模式(Low Speed)为1.5Mbit/s。每一个USB兼容的设备都支持低速和全速模式。高速模式是在USB2.0版本加入的,需要USB 2.0兼容的硬件支持。设计3种速度级别的原因在于低速外设往往代表较低的成本,许多对数据率要求不高的外设设计为低速度模式可以相应地降低成本。

在外设端,每个USB设备必须支持低速或全速模式中的一种,上位机端通过检测两根信号线上电平来判断外接的是一个支持低速还是全速模式的外设。如图4所示,在上位机端的两根信号线D+和D-上分别都下拉了一个15kΩ的电阻到地。作为新接入的外设端设备则应该在D+或D-线上上拉一个1.5kΩ的电阻到3.3V电源,分别代表全速设备或低速设备。当这个设备插入时,由于设备的上拉(1.5kΩ)强过上位主机端的下拉(15kΩ),其中的这个线被外设拉高了,高过主机端的判断门限,这样就能分辨出接入的是什么速度的设备。

4)SDRAM接口电路设计。SDRAM具有容量大,存取速度快,成本低的特点,因而广泛应用到微处理系统中。SDRAM主要用来存放执行代码和变量,是系统启动之后主要进行存取操作的存储器。

目前常用的SDRAM为8位/16位的数据宽度,可根据系统需求,构建16位/32位的SDRAM存储器系统。本系统中,由于会产生大量的视频中间数据,选用了两片MT46V32M16TG-6T芯片构建32位的SDRAM存储器系统。每片MT46V32M16TG-6T的存储容量为32MB×16位(64M字节),工作电压为2.5V,存取速度为6ns,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh),16位数据宽度。两片芯片并联构建的32位存储器系统也充分发挥了32位MIPS核的数据处理能力。SDRAM模块硬件连接如下图5所示。

5)Flash接口电路设计。Flash存储器是一种可在系统(In-System)进行电擦写,掉电后信息不丢失的存储器。它具有低功耗、大容量、擦写速度快、可整片或分扇区进行在系统编程(ISP)、擦除等特点,并且可由内部嵌入的算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。作为一种非易失性存储器,Flash在系统中通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。主要生产厂商为ATMEL,AMD,HYUNDAI,SST等,他们生产的同型器件一般具有相同的电气特性和封装形式。

图4 USB速度模式设计

图5 SDRAM引脚连接图

图6 FLASH芯片引脚连接图

本硬件平台使用AMD公司的Am29LV320D FLASH芯片。Am29LV320D是32Mbits的FLASH存储器,有2M*16bits和4M*8bits两种模式。字模式时数据引脚为DQ0~DQ15,字节模式时数据引脚为DQ0~DQ7。该器件在标准的3.0V Vcc供电的情况下可以进行在系统编程,也可以使用标准的EPROM编程器编程。FLASH模块硬件连接如下图6所示。

6)以太网接口设计。以太网接口是网络摄像机上必不可少的接口模块,不但用于网络数据传输,而且在开发调试过程中,也起着至关重要的作用。以太网接口控制器主要包括MAC和PHY两部分,其中MAC层控制器作为逻辑控制比较容易集成在处理器内部。ARM本身就含有MAC层控制器,因此只要再外接一物理层芯片即可。RTL8201BL是台湾Realtek公司生产的一种网络物理层芯片,它自动检测,支持Lo/lOOMbps网络传输,全双工方式通信,符合IEEE802.3协议。它包括物理译码子层、物理介质连接子层、双绞线物理介质相关子层、10Base-Tx译码/解码、双绞线介质连接单元。支持PECL(正极射极耦合逻辑)电平接口的100Base-TX光纤发送器。适应低电压、低功耗要求。

图7 以太网电路接口图

RTL8201BL和MAC控制器的连接是通过MII(Media Independent Interface,媒体独立接口)实现的。其中MAC负责完成数据帧的封装、解封、发送和接收功能。物理层PHY的结构随着传输速率的不同而有一定差异。对于lOBaseT等网络,从以太网PHY芯片输出的就是传输所需的差分信号。但是,还需要一个网络隔离变压器组成的结构。网络隔离变压器可起到抑制共模干扰、隔离线路以及阻抗匹配等作用。以太网电路接口及隔离电路如图7和图8。

3 模块性能特点

基于3G/WiFi模式下的通用音视频数据传输模块是应急指挥系统中无线移动音视频终端的核心模块。该模块已成功低应用于奥里奥克公司研发生产的支架式、手持式、头盔式等不同种类的无线移动终端产品中(www.orioc.com.cn)。模块在系统软件的支持下实现完整的视频信号采集、数据压缩、数据格式组帧及无线网络数据传输。每个模块具有一路音频输入、一路音频输出、一路视频输入、一路高速有线网络接口和3G/WiFi无线网络数据收发等功能。

系统平台采用Linux操作系统,最大限度地利用现有软件、硬件资源,支持3G/WiFi相结合的传输方式,丰富了系统的应用领域。系统在中心站的支持下,可实现多达16个终端组成的集团式移动蜂窝通信,传输距离可延伸到所有3G信号覆盖的区域。系统延时在秒级之内,成功地解决了移动公网无线音视频应用系统中语音和视频的同步问题,为高清晰语音图像无线移动传输应用的普及提供了有效的手段。

参考文献

[1]燕杨.基于H.264/AVC无线视频传输的研究[J].吉林工程技术师范学院学报.2008,11:79-81.

[2]郭梯云.邬国扬,李建东.移动通信.西安电子科技大学出版社,2000.

[3]旁海生,朱诗兵.超宽带及其关键技术.电信技术,2005,4:59-61.

[4]刘增基,鲍民权,邱智亮.交换原理与技术[M].人民邮电出版社,北京,2007.

[5]李建东,杨家玮.个人通信.北京:人民邮电出版社,l998.

通用切断模具的结构介绍 篇7

1 典型案例介绍

通常通过模具来制造的产品都是一对一的, 也就是说一系列模具只能生产一种件, 而这种情况有些时候就会造成模具的浪费以及加工成本的提高。

这是一个支架 (如图1a) , 在冲压生产中经常会遇到。为了保证冲压件定位豁口位置的准确性, 通常这样的冲压件都会使用落料冲孔、压弯成形、修端冲豁口3道工序, 进而需要制造落料冲孔模、压弯成形模、修端模3套模具。另一支架 (如图1b) , 也采用与支架a相同的工序来生产, 需要制造同样的3套模具。像这类支架在每辆车上都会有五六种甚至更多, 它们的结构几乎完全相同, 功能也大体类似。它们的落料板料形状如图2。

如果把这些落料片的R角忽略掉, 就可以发现它们都是一些矩形的料片, 如图3。考虑到剪床对剪切宽度有要求, 无法实现小件的剪切, 因此设计了这套通用切断模具。这套模具只能实现板料的剪切, 所以支架相应的工艺更改也是必须的。因此, 上述两个支架的工艺改为切断、成形、修端冲孔冲豁。

2 模具结构及原理

图4为最初的模具整体结构。图5为下平面图。

通过图4、图5, 可以清楚看到最初设计的模具的结构原理。设计之初考虑到剪切时的受力形式。

最初是按照落料模具的设计思想来设计这套模具的, 在凸凹模之间预留一定的间隙值, 这样工作中就会出现图6a所示的情况, 板料在凸模刚刚接触的时候就会受到压力F, 由于间隙Z的存在这个压力就会变成压弯力, 进而产生弯曲力矩M=F·Z, 如图7。

为了避免出现上述状况, 采用了托料板结构 (如图6b) , 这样F力就会完全作为剪切力, 同时可以保证产品的断面质量。

图5显示的是下平面图, 这套模具预计生产5种制件, 但是5种制件的宽度都不一样。为了保证5种制件的剪切尺寸, 必须给每种制件都设计精确的定位措施。并且, 每种制件的定位都要与其他制件的定位错开, 避免干涉。还要考虑到镶块钻孔后的强度以及定位措施的标识以及生产中的更换。采用传统的挡料销, 在下底板上根据每种制件的板料形状设计出定位销孔的位置, 并在底板上的相应位置钻螺纹孔, 把销子固定到下底板上。然后在每个销子旁边打上相应的制件编号。如需要更换品种, 就把模具在维修阵地打开, 把没有用的销子拿掉, 在制件编号标注的位置安装上对应的定位销。

3 模具问题及解决方案

通过以上的设计思想制造了一套模具, 并且进行试生产。在试生产过程中, 发现了这套模具存在几个设计时候没有考虑到的问题。首先是取送件的问题, 这个问题主要体现在取件困难, 生产效率很低。传统的落料模具都是采用上模含件的结构, 当压力机达到上死点时, 模具通过打料杆将料片推出, 再用接料板把件接住。这种生产方式可以一个人进行生产, 用脚踏开关来操作压力机的动作, 用手拿着接料板, 当滑块达到上死点的时候就用接料板接件, 另一只手送料。送料和接料的两个动作是可以同时进行的, 这种生产方式每分钟可以生产12~15件。而这套模具的料片留在下底板上, 每次都要等到滑块到达上死点时用电磁手取件, 然后再送料。当料片剩到150 mm左右的时候送料就会很麻烦, 因为板料已经含到模具里面, 只能等到压床停止的时候再用电磁手向前方推料, 操作起来很不方便, 每分钟只能达到6~8件。考虑到多种产品的尺寸差异, 采用上模含件的方式显然不适合。后来受到剪床的启发, 决定把托料板取消, 然后将托料板下方开空。这样每次冲压完成后料片就会自己落到下底板的底部, 只要保证落下的料片不过量堆积就可以满足生产。通过这样的更改, 每分钟可以生产15~20件, 极大地提高了生产效率。

在解决上述问题以后, 再次对模具进行了改进。

因为定位销孔的布置问题, 原来的模具定位之间的距离有的大于两个制件的宽度, 在板料剩到50~60 mm的时候就起不到定位作用。并且更换时候也比较麻烦, 每次都需要提前在模具维修区打开模具。

重新设计了模具定位并且对送料部分做了改进, 如图8。

(1) 把模具定位销取消, 取而代之的是平面定位块。这些定位镶块安装在下底板后部, 通过螺钉固定到定位块固定板上面。这样, 在每次生产中就不用再提前更换定位了。在模具安装完成后, 直接就可以在压力机上面进行操作, 大大节省了准备工作的工作量及所需实践。

(2) 在下底板的左侧设计导尺结构, 并且在下底板上面开了送料沟槽。这样每次到最后一段板料的时候, 就可以用手来向前推板料并有了准确的限位。不但节省了生产实践, 而且也避免了材料的浪费。

通用数据结构 篇8

关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。而非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。

随着互联网技术的发展以及企业IT信息化技术的普及,用户的对企业信息化的认可度不断升温,用户的需求也越来越来越个性化。传统的关系数据库在应付这种个性化需求时已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库No SQL则由于其本身的特点得到了非常迅速的发展。

No SQL数据库崛起的原因是数据作用域发生了改变。它们不再是整数和浮点等原始的数据类型,数据已经成为了一个完整的文件。由于DBA(数据库管理员)正在逐渐丧失对其领域的控制权,因此No SQL可能将让DBA感受到了压力。

但目前No SQL数据库的应用并未普及,技术上并不成熟。那么,如何将当前比较成熟的关系型数据库与非结构化数据结合起来应用,使两者各自发挥自身的优势成为了一个难点。

1 No SQL简介

1.1 关系数据库的缺陷

在当代的IT信息时代,web2.0网站更加倾向于纯动态化、高并发化,在此其间产生了许多不受约束的大规模数据。web2.0网站对这些数据具有高效的存储和大并发量读写等的要求。同时很多网站提供24小时网上服务功能,而关系型数据库系统的升级、扩展往往需要停机维护和数据迁移。因此,网站的维护就要要求数据库具有更加良好的可扩展性。

关系型数据库应付这些要求已经力不从心,不受约束的大规模数据之间错综复杂的关系更使得关系型数据库暴露出很多难以克服的实际问题。

1.2 No SQL定义

No SQL(No SQL=Not Only SQL),意为反SQL运动,是一项全新的数据库革命性运动,早期就有一些人提出,发展至2009年趋势越发高涨。No SQL的拥护者们提倡运用非关系型的数据存储,相对于现代铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

No SQL的主要特点包括非关系的、分布式的、开源的和水平可扩展性。

No SQL的原始目的是为了大规模的web应用,在数据存储中,通常的应用如模式自由、支持简易复制、简单的API、最终的一致性(非ACID)、大容量数据等。No SQL用得最多饿是key-value(键值对)存储,还有文档型、列存储、图形数据库等。

1.3 No SQL的特点

(1)No SQL可以运行在便宜的PC服务器群上。这样PC服务群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性、成本。

(2)No SQL打破性能瓶颈。通过No SQL数据架构可以省去将Web或Java应用和数据转换成SQL格式的时间,执行速度变得更快。“SQL并非适用于所有的程序代码,”对于那些繁重的重复操作的数据,SQL值得花钱。但是当数据库结构非常简单时,SQL可能没有太大用处。

(3)No SQL可以处理超大量的数据高并发和高存储。

(4)No SQL没有过多的操作。

1.4 No SQL与关系型数据库比较

关系型数据库中的表都是存储一些格式化的数据结构和数据元素,每个元组(行)字段(列)的组成都是一样的,即使不是每个元组(行)都需要所有的字段(列),但数据库会为每个元组(行)分配所有的字段(列),这样的结构可以便于表与表之间进行连接等操作,但从另外一个角度来说它也是关系型数据库性能瓶颈的一个因素。而非关系型数据库No SQL以键值对存储,它的结构是不固定的,每一个元组(行)可以有不一样的字段(列),每个元组(行)可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。

2 通用数据存储结构的问题情景分析

在当今社会,用户网上缴费和支付的需求量越来越大。针对目前用户网上支付需求量大的问题,我们开发了一套在线缴费系统,本系统前端部分可通过多种方式产生订单,应用于不同的缴费项目,例如物业费、学杂费、通讯费等等,根据不同的缴费项产生订单,订单中的订单号、缴费时间、缴费金额等字段可共用,但与订单相关的其他附属属性则不同,比如物业费订单中含有房号、业主姓名等信息,学杂费订单中含有学生姓名、学校名称、院系、班级、学号、性别等信息,而在通讯费中,含有电话号码、姓名、区域、缴费项目等等信息。如何做到同一套系统部署时,不用修改代码即可挂载不同的应用,存储对应缴费项目的订单成为开发人员需要解决的难题。在本论文中我们不详细介绍系统组建的过程,只介绍使用No SQL数据库搭建通用数据存储结构的方案设计。

3 存储结构设计

3.1 存储结构设计

本论文介绍的数据存储结构的设计主要是依据在线缴费系统来介绍,具体的字段不在这逐个介绍,只介绍与本存储结构相关的字段内容举例。

依据No SQL数据库存储数据的基本思想,在关系型数据库中新建数据库时,在表结构中新建一个blob类型的字段,将与订单相关的个性化附属属性以高性能的JSON格式存放,比如物业费在关系数据库中数据存储的字段为:订单号、支付金额、支付时间、订单属性;其中订单个性化属性的存储的数据有:房号、业主姓名、小区名称、小区地址,存储该数据的存储格式为:

{"house Id":"1-2-101","owner Name":"张三","area Name":"关中花园","address":"幸福路12号"}

其他通用属性,如订单号,订单金额,支付时间,支付状态等仍然存在对应表字段中,如图1所示。

数据存储样例:

通过以上存储结构的设计,可以解决不同缴费项目的订单数据在相同的关系数据表中的数据存储问题。从而,将缴费系统前端订单模块抽象成了通用的订单数据存储模块,当有新的、异构的缴费项目新建时,订单存储模块不需要做任何改动。这种方式可以通用语物业费、学杂费、通讯费等等在线缴费系统的使用,这样就可以把多个系统融合为一个系统来完成。

3.2 数据保存

采用以上结构存储订单数据以后,数据保存时,需要将订单记录中的个性化属性构建成JSON格式保存,构建方法通常有直接构建JSON串,或者先构建Map对象,再转换为JSON串。

3.3 数据查询

对于web网站操作中,应用最多的就是对数据库中数据的查询功能和对查询结果数据的存储,在关系型数据库中数据查询的语法大多数都是进行检索词和关键词之间进行匹配性比较,也就是说数据查询时,关系数据库其他字段按照关系数据库查询语句的语法进行匹配查询,语法格式一般用:select字段名from表名where匹配查询条件group by查询分组。对于个性化属性部分的查询,则需要使用LIKE语句的方式模糊匹配查询。查询结果显示时,可直接通过Key-Value方式获取数据,或者先进行对象转换,再通过对象属性获取数据。

4 应用示范

缴费平台已经投入使用,当前在物业费缴费、学费缴费、通讯费缴费等领域已运营两年,同时,业务领域仍在不断扩大,但系统的订单存储结构仍然采用目前这种模式,实践证明,此模式对于软件开发人员实施快速开发以及满足用户方的个性化需求等方面起到了很大的作用。同时,我们也在不断探索实践,通过这种模式的引入,我们在此基础上又设计了关系数据库个性化属性的导出、分类、生成个性化报表等。此方法的应用对提升用户的体验、满足用户的个性化需求上起到了积极的作用。

5 结束语

通过将不固定属性以JSON格式存储在某个固定字段中的方法,解决了数据灵活多变,利用关系数据库构建通用程序的问题。但同时此方法也存在一定的弊端,当数据量不断增大时,针对个性化属性字段内容的查询效率会逐渐降低,虽然可通过全文检索的方式来解决此问题,但并不是所有的数据库都支持全文检索,部分数据库由于版本问题、中文支持问题、数据存储引擎类型的差异等无法解决此问题。

摘要:针对目前软件开发中关系数据库表结构无法适应数据记录属性不固定的情况,该文提出了一种将不固定属性以JSON格式存储在某个固定字段中的方法,解决了数据灵活多变时,利用关系数据库无法构建通用程序的问题。

关键词:关系数据库,JSON,通用程序

参考文献

[1]汉德罗克.Ajax——Web开发、可重用组件及模式[M].北京:清华大学出版社,2011:28-31.

[2]韩义波,宋莉,宋俊杰,等.Ajax技术结合XML或JSON的使用比较[J].电脑知识与技术,2009,(01):101-103.

通用数据结构 篇9

企业数据中心是企业信息集成的基础,它可以有效的解决应用系统的整合和数据共享,解决企业普遍存在的“信息孤岛”等问题。随着数据中心的建立,原来企业一些应用系统积累的大量数据需要向数据中心迁移。这就要求必须制定合理的迁移策略使历史数据和新产生的数据实时的迁移到数据中心。目前数据迁移主要两种方式,一种是采用商用迁移工具,另一种就是编写专门的迁移软件。两种方式在实现大型数据库数据迁移中仍然存在一些不足,例如只能完成数据模型结构相同的数据迁移,但对于数据模型结构不相同的数据进行迁移时,就需要编写大量的辅助程序;传统迁移策略主要包括一次性迁移、分次迁移、先迁后补[1]等几等种方式,通过研究发现,这些方式都不能满足对于产生的历史数据和实时数据的迁移,同时也缺乏灵活性和重用性。

对于这种情况,通过对元数据驱动技术[2]以及数据抽取、转换和加载体系结构(ETL)的研究,本文提出一个基于元数据驱动技术的多策略通用数据迁移模型,该模型中定义了三种策略,即历史数据迁移、实时数据迁移和定时数据迁移。框架的技术核心是使用元数据描述各种映射模式,其中包括转换算法逻辑,ETL模型通过对映射规则的解析来实现从数据源抽取数据并实现转换功能,达到灵活的数据迁多的目的。

1 数据迁移策略框架体系模型设计

1.1 多策略数据迁移系统框架结构

图1定义了多策略数据迁移框架模型:在迁移策略上,首先对历史数据进行历史数据迁移;对于实时数据通过定时数据迁移和即时数据迁移进行数据迁移。对于实时数据迁移,当数据源有新数据产生时,系统通过实时迁移策略触发即时迁移模块或者定时模块,通过对源数据到目标数据的映射模式中存储的映射规则以及转换逻辑元数据来实现从源端的数据抽取、转换,最后通过加载模块将数据迁移到目标库中。

1.2 数据模型映射及数据抽取转换

多种迁移策略的实现是靠数据模型映射来实现的。所谓数据模型映射是根据一组规则(称为映射规则),建立一个源模型和一个目标模型之间的对应关系。映射之前,源模型和目标模型的描述均已存在。模型映射有时也称数据映射。

数据模型映射关系的语法描述:

1)下面给出数据映射关系的一些基本概念。

(1)映射实体、映射属性和映射表。映射实体是用户可见的较高视图[3,4],反映了源系统与目标系统在概念模型上的对应关系。映射属性是映射关系的最底层,也是迁移规则处理的最小单位。映射实体(ME)分为源映射实体(SME)和目标映射实体(TME);映射表分为源映射表(ST)和目标映射表(ST);映射属性分为源映射属性(SATTR)和目标映射属性(TATTR)。

(2)映射关系。映射关系是源映射实体和目标映射实体属性之间的映射关系。映射关系由映射模式[4](MM)和有向线段构成。映射关联的起始节点即为映射的源映射实体的映射属性,映射关联的目标节点即为映射的目标实体的映射属性。

映射模式又分为三种类型:算数映射模式(ARITH_MM),数据映射模式(DATA_MM)和语义映射模式(SEMA_MM)。

2)数据映射关系的语法描述。映射关系是一个三元组,M<STM,R>。这里M是映射关系名称,R是映射关联集合,MO是映射算子集合。下面采用BNF范式对映射关系语法进行形式化定义,其符号定义为:”...”:表示术语符号;<>:内包含的内容为必填选项;::=表示定义为;[]:内包含的内容为可选选项;{}:内包含的内容为可以重复0次到无数次;|:表示为左右两边的内容可以任意选择;(...):分组;斜体字:表示参数,在其他地方有解释。映射关系的语法描述如下:

3)映射模式元模型构建。元模型[5]设计分为2个层次:基础元模型设计与驱动元模型设计。基础元模型用于存储基础映射模式元数据定制的元数据;驱动元模型位于基础元模型下一层,用于存储映射模式元数据。

基础元模型包括存储源库与目标库结构信息的数据字典元模型、存储映射模式、转换函数及函数参数类型信息的元模型、ETL功能模块及其接口描述信息元模型。

驱动元模型以实体间映射模式为描述单位,其中映射库、映射表、映射字段表存储数据迁移对应数据库位置及对应数据表、对应字段信息等信息。字段映射模式、转换函数、参数位置表存储对应字段数据转换过程中调用的映射函数位置、名称及具体参数值等信息。流程信息、ETL模块信息表存储不同抽取及加载方式所调用ETL模块的函数接口信息。迁移任务异常信息表存储执行一次任务过程中产生的异常数据文件、日志文件、模块调用异常等信息。

2 应用案例

本系统在“大庆油田公司井下作业分公司数据中心迁移项目”中得到了很好的应用。数据中心数据模型构建好之后,需要将A2施工总结中的数据迁移到数据中心中。通过本系统实现了将A2施工总结的历史数据和应用系统产生的实时数据通过本系统迁移到数据中心中、实现日志的查看功能、迁移之后的正确性检查。完成了40多张表,5000多万条历史数据的迁移任务。实践表明本系统具有较高的实用价值。具体应用见图2的即时迁移主界面。

3 结束语

本文提出了迁移框架模型,并在其中定义了历史数据迁移、实时数据迁移和即时数据迁移策略;构建了元数据模型,实现了对种映射模式的存储。该框架模型具有(1)实用性强,框架基于数据字典定制元数据,能够实现不同专业数据库到数据中心数据库的数据迁移,使系统具有一定的通用性;(2)良好扩展性,框架使用转换函数元模型,当遇到两种不同数据模型的数据迁移时,就会出现很多的映射模式,如果出现一种新的映射模式时只要编写单独的转换函数,就可以使用新的映射模式完成数据的转换,不需要修改源代码;(3)易维护,使用元数据驱动的方式实现ETL功能,维护工作大部分为修改元数据,使维护简化。

参考文献

[1]刘朝斌,王洪雨.云计算中动态数据迁移的关键技术研究[D].大连海事大学,2010,7.

[2]苗立志,张书亮,闾国年.通用映射模式下GML关系数据库存储研究[J].计算机应用研究,2009,11.

[3]Zhao X F,Huang Z Q.A formal framework for reasoning of Meta-data based on CWM[C].The25th International Conference on Con-cep-tual Modeling,2006:371-384.

[4]袁满,陈星童.基于元数据驱动的异构数据模型映射算法研究[J].东北林业大学,2011,11:128-131.

通用数据结构 篇10

水利数据中心已经建设水文、水质、水资源、水利工程、水能资源调查、农村水电等专题数据库,分别由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.

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

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

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

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

四是数据产生频率不同, 站库各岗位要求两小时巡检一次记录数据, 每天数据产生频率为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.

上一篇:计算机网络风险下一篇:监控系统与煤矿安全