您好, 访客   登录/注册

实时数据库的设计思想和实现技术

来源:用户上传      作者: 聂书志

  [摘要]文章论述了实时数据库技术的概念、特点、技术分析和处理、控制方法,分析了传统数据库与实时数据库的不同方面;同时对实时数据库实现中相关的设计思想和技术路线进行了阐述。
  [关键词]实时数据库;事件关系;事件表达;组件技术;数据高效存取技术
  [作者简介]聂书志,广州工商职业技术学院教师,广东广州510850
  [中图分类号]TP311.13
  [文献标识码]A
  [文章编号]1672―2728(2006)11―0153-03
  
  一、引 言
  
  随着计算机技术的诞生与发展,工业过程中依赖计算机的技术在过去的几十年里得到了巨大的发展,其中巨大的改进是通过以前的控制技术与新兴的计算机技术相结合,逐步实现对过程的控制逐渐从底层向上层渗透,形成集控制、优化、管理、经营等等于一体化的综合自动化的新模式。不过由于技术发展的原因,控制网络上分布着不同厂商的不同种类的监控系统。每个系统只能采集和管理相应装置或设备在运行过程中产生的部分实时数据。同时,该数据平台应当为先进控制的实时在线优化和生产执行系统等提供实时数据的支持,而实时数据库系统正是为实现该类需求而产生的。近年来实时数据库系统的应用成功地实现了现场控制系统过程生产数据的集成,建立了企业管理系统与底层控制系统之间的数据通信,为企业过程实时信息的综合集成奠定了基础。
  
  二、实时数据库特点
  
  由于传统的关系模型数据库系统善于处理比较稳定的数据,它强调维护数据的一致性、完整性,其性能目标是较高的系统吞吐量与较低的代价,但是对于处理的定时限制无严格的要求。它所针对的是结构简单、稳定不变和可预测的数据,未涉及数据维护、数据共享及数据的完整性与一致性,特别是在时间上的一致性问题。而实时数据库的数据和事务均有显式的时间限制,系统的正确性不仅依赖于事务的逻辑结果,而且依赖于该逻辑结果所产生的时间。实时数据库不是数据库和实时系统的简单结合,它需要在数据模型、体系结构、事物处理模式、数据存储方式等很多方面重新进行开发、研究。也就是说,实时数据库相对于传统的关系模型数据库系统具有以下几方面的特点:
  1.实时一致性。实时数据库系统作为外部系统的一个客观反映,它表示了外部系统的当前状态。只有与外部系统的实际情况符合时,数据才会有意义,所以要求实时数据库系统必须能够高效地实现实时处理。即能确保数据库的状态与被控系统的实际状态一致(外部一致性);能按被控系统所决定的时间有效地处理数据;能对一定的情形进行监视并自动作出反应。
  2.实时稳定性。任何数据库系统都要求具有很高的稳定性,而由于现实中直接基于实时数据库系统的应用常常强调实时性,所以系统的稳定性相对于传统的关系模型数据库系统被提到了更高的高度与要求。
  3.实时容错性。根据工业控制现场的复杂情况,各种干扰非常常见,可能导致采集的数据被污染。因此要求实时数据库系统必须具有较好的容错性,防止出现数据被破坏。
  
  三、实时数据库相关技术的实现
  
  1.实时数据库中的基本事件
  实时数据库的实时功能是在数据库系统提供服务的过程中,数据库被激发具有某种智能去执行操作和处理的主动性、实时性,也就是说实时性来源于事件的触发,即事件驱动。显然,事件表达、复杂事件的分解和事件的运算则成为建立实时数据库的必须和关键。众所周知,事件是一种系统行为的瞬时发生,系统行为可以是数据库操作、事务管理活动、时间行为或外部环境的交互作用。数据库系统预先定义,用户可以直接引用的是各种应用中常用的共同事件,称为基本事件。任何复杂事件都是通过基本事件的复合及其运算而构造和表达的,或者说任何复杂事件都可以分解为若干基本事件。
  而事件包含的属性有事件的名称标志、类型、发生期、开始发生的时间点、结束的时间点和事件的联系标志。事件分为2类,即系统事件和用户事件。基本的系统事件分为4大类,每一类又包含若干类型,具体分类如下:
  (1)对象事件:指数据库中指定部分发生改变时发生的事件,如插入、删除、更新等。其结束时间点定为各操作的结束点。
  (2)事务事件:数据库状态必须随时能够反映数据库内部的变更情况,根据事务管理操作的不同,分成三类事件,它们被用来监视数据库的状态,实现完整性和一致性的检查。
  (3)时间事件:时间事件也叫时钟信号,其进一步细分有绝对、相对和周期事件型3类,这类事件用来描述数据库系统中各种具有时间限制和约束的事件。
  (4)外部事件:数据库状态必须随时反映外部环境当时的真实状态,当系统与外部环境或用户有通信行为时,如输入/输出、中断、操作员命令、实时信号等所形成的事件。这些事件常在程序实现处理、实时监控、复合事件中应用。
  2.事件的定义与运算、维护和事件表达式
  事件的定义按照事件的复杂程度,将其分解成若干基本事件,然后用这些基本事件运算表达出来,其组成的基本事件和事件本身输入事件库。这类操作由事件管理器执行。事件运算可以定义为同时发生运算、选择发生运算、合并发生运算、相继发生运算、之前发生运算、之后发生运算和不发生运算等7种运算。用运算符连接事件而形成的表达式称为事件表达式,事件表达式描述的是一个复合的事件,即复合事件是通过基本事件进行事件运算所构成的事件。一个事件发生表明需要系统作出反应的情形已经出现。判断一种情形出现的标准是其限制或条件的满足与否,但事件与限制作为一个整体对待,一旦一个事件发生,相联的限制就立即被检验。它何时开始及以何种方式执行被触发的活动,由执行方式决定。而执行方式可分为立即执行、暂缓执行2类。例外处理指明当限制违反时要执行的一系列要处理的动作。
  3.基于组件的模块化体系
  组件模型是构造二进制兼容软件的规范,利用组件技术构建的软件具备了更好的可伸缩性和可扩展性,并且组件模型能方便地解决共享和协作问题。实时数据库中核心业务封装在不同的独立进程COM服务器中,彼此之间通过COM进行接口调用而不是简单的数据交换。COM所提供的通道经过特别的优化,在执行效率和数据通信宽带方面均优于常规的方式,使得核心业务模块可以避免手动处理复杂的线程同步和数据共享,所有的接口访问都被自动同步和序列化,保证数据安全并且防止访问冲突。实时数据库的数据采集模块同样采用COM/DCOM技术,能够实现与底层OPC服务器无缝整合,使得实时数据库可以方便地实现分布式构架而不必手动处理网络通信。
  4.被动式内核结构
  实时数据库为了保证稳定性,采用类似OS中内核体系的结构,并将各核心模块尽量独立,即便特定模块出现故障系统也可以自动重新启动该模块并且将系统恢复到故障前的状态。由于将内核

模块与直接面向用户的常规业务应用以及数据采集模块隔离开来,大大提高了系统的稳定性。内核服务全部注册系统服务运行的方式相比传统的数据库具备如下优势:
  (1)即便服务器没有完成登录,系统服务已经可以运行,该情况在出现系统由于硬件故障或断电重启动后特别有用。
  (2)可以让低级别的用户以非管理员的身份在服务器登录并且进行操作而不至于因为登录用户权限不足而导致系统无法运行。
  (3)系统服务只能运行一个实例。
  (4)系统服务方便管理员进行控制,可以避开常规的COM应用计数来控制服务器的启动和停止。
  一般来说,采用系统服务方式运行数据库系统核心的做法几乎是所有大型数据库系统的标准方式。内核模块采用被动模式工作,即通过数据采集模块完成数据读取并且将数据压入到内核模块中;外部应用则通过主动读取内核模块的方式获得数据,内核模块本身不提供主动数据通知服务。
  5.高效数据存取技术
  实时数据库必须实现高效的数据存储,才能在应对海量数据的同时保证系统的实时性。在实时数据库中实现高效数据存取必须解决下面的几个问题:
  (1)快速位号检索:实时数据库必须面对海量的位号,位号的检索对于保证数据库的实时性至关重要。经验表明实际应用中大量外围业务和应用软件均会频繁存取位号,大量CPU时间被用于检索位号。实时数据库为加速位号的检索,采用了双索引结构。主索引数据结构为平衡二叉树,以位号的ID作为标志,树的叶子内容作为指向位号实例的指针。另外一套作为辅助索引。结合位号回收利用机制,数组长度总是等于系统中已经组态位的数目,而不至于无限膨胀。采用双索引结构的代价是系统必须保证两套索引的一致性,以免检索过程中出现索引混乱。
  (2)访问同步和数据共享:实时数据库需要面对大量并发访问。而数据采集模块读取的大量数据也需要更新到内核模块,如果为了防止访问冲突而简单地采用整体锁定方式,势必导致效率急剧下降,难以保证实时性。负责数据服务的内核模块均采用COM的MTA模式,允许许多客户端并发访问。
  (3)高速数据读写:无论中间过程如何,实时数据库最终都需要从存储介质中存取位号的数据。为了实现高速数据读写所需要的数据应当驻留内存,但物理内存容量有限而实时数据库所处理的数据极其庞大,造成无法将所有的数据驻留在内存。考虑到实际应用中位号的即时值访问频率极高,实时数据库将所有位号即时值的管理独立成内存快照服务,可以有效应对大规模的并发访问。而对于位号的历史数据,为提高存储效率必须采用缓冲管理策略,采用优先级机制。系统建立优先级队列管理缓冲区中的缓冲类,可利用系统的空闲时间将位号的数据预先载入到缓冲区。结合智能预读与缓冲技术,能够极大地提高系统对数据请求的响应速度。
  6.事务调度模式
  实时数据库不同于传统的关系数据库,其数据结构和事务模型均相对简单,但是同样提出了对于实时性的要求,需要系统作出快速的响应。由于实时数据库需要同时处理多个事务,系统必须具备良好的事务调度模式使得各个事务均得到最快的处理,为此必须实现多事务并发处理及负载平衡。实时数据库内部采用线程技术来实现多个事务的并发处理,并且根据每个线程处理事务所花费的时间计算权值,系统根据每个线程的权值实现负载平衡。作为系统内部的事务处理服务,内部持有工作线程池缺省的线程总线数目为CPU数目的两倍,所有的线程均在系统初始化时被创建,然后系统将他们挂起等待处理事务。当事务被触发时,系统调用事务处理服务的接口函数。由于采用了MTA模式,COM会自动地从内置线程池选取合适的线程进入事务处理服务模块中,首先根据各个线程的权值以及事务本身的优先级从线程池中选取最合适的处理线程并激活该线程,然后将事务打包并发送到该线程处理后立即返回。每个工作线程均装备事务队列,发送过来的事务根据其优先级插入队列中合适的位置,高优先级的事务总是位于前面,工作线程依次处理这些事务,这样可以确保事务优先级。
  
  四、结 语
  
  随着工业产业信息化的不断发展和深化推进,实时数据库将越来越受到重视,依托实时数据库的管理等应用已经并将继续为企业创造越来越多的价值。
  [责任编辑:霁 月]


转载注明来源:https://www.xzbu.com/1/view-248794.htm