摘要:从传统XML数据流查询处理中存在的问题出发,设计了XML数据流主动服务系统的框架模型,并提出了系统的实现策略,为用户快速、准确的找到所需信息提供了途径。
关键词:XML;XML数据流;主动服务;查询处理
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)05-11275-02
1 引言
随着XML逐渐成为信息描述和数据交换的事实标准,网络数据流信息会以XML的方式来表达,即XML数据流。Web数据以大量、快速、实时的数据流形式持续到达,而每个人只关注与其相关的数据,出现了“信息过载”和“资源迷向”问题。搜索引擎的出现虽然从一定程度上缓解了此矛盾,改善了人们的信息搜索手段,但它在索引建立、资源利用、查全率、查准率、响应时间等方面还存在着不足之处,尤其是随着搜索引擎所覆盖网页的不断增加,人们不得不对数以千计万计的庞杂的返回结果,进行费时费力的手工筛选。如果能够采用一批预定的规则,自动监测数据系统的事件,当满足某种预定条件时,数据库系统自动进行信息的内部组织或者向外提供响应,帮助用户快速、准确的找到所需信息,变“人找信息”为“信息找人”,无疑是便捷和高效的。
2 主动服务技术
主动服务的基本思想是系统根据用户定制的信息,自动检索相关信息,并且利用电子邮件或者在线智能推荐服务,准确地将检索结果传送到相应的用户。目前,主动规则(active rules)和数据库触发器是实现该功能的两种主要技术,而数据库触发器主要针对于关系数据库,对于XML数据的流式文件则显得力不从心,因此,本文采用主动规则来实现XML数据流查询处理的主动服务。
主动规则即ECA规则,指的是事件一条件一动作< Event-Condition-Action)规则。表示在某一引发事件发生时,如何主动地执行其中包含的由用户预先设定的动作。它是由人工智能中的产生式规则发展而来,产生式规则范例源于人工智能和专家系统研究领域,在人工智能系统中,产生式规则通常有如下形式:
Condition->action
推理引擎循环地将数据和规则的条件部分相匹配。如果匹配成功,系统会触发相应的动作完成预先设定的工作。
ECA 规则的基本语义是,规则在其事件发生时被触发,而后在特定的时刻系统检查规则条件,如果条件满足,系统将执行规则的动作。由此可见,ECA规则可以用事件、条件、动作来描述。ECA规则的形式化表示为:
事件部分E——当事件发生时相应规则做出反应(可以是基本事件,也可以是一系列基本事件的复合);条件部分C——检查事件发生时前后情况条件,一般是一组数据库查询或一组逻辑表达式,动作部分A——如果相关事件发生和条件满足时通过规则执行任务,可以是一组数据库操作或者用户第一的特定操作。
在现阶段主动规则的应用越来越广,已经成为数据库系统管理中提高效率和自动化的一个不可缺少的部分,因此,我们将主动规则应用在XML数据流的查询处理中必将形成一种新的信息检索方式。
3 XML数据流主动服务系统设计
将主动规则应用在XML数据流的查询处理中建立主动服务系统,其设计的突出原则是让系统具有各种主动进行服务的功能,并以一种统一而方便的机制来实现各种主动性的要求。
系统设计首先要符合基于XML的主动数据库的基本结构,框架模型需要包括以下六部分:用户需求设置模块、XML数据存储模块、XML数据解析模块、XML数据查询模块、XML主动规则库、XML主动规则执行模块。这六部分的关系如图1所示。系统的设计不仅要根据主动服务的思想设计各功能模块还要考虑各模块间的联系。
3.1 用户需求设置模块
在传统信息检索系统中,用户的查询请求是一次性的,代表用户暂时的信息需求,而主动服务系统关注的往往是用户长期的、相对固定的兴趣。所以,在主动服务系统中必须有相应的机制允许用户使用关键词描述信息需求。用户需求设置在客户端进行,作为主动规则的条件被服务器保存。
3.2 存储模块
图1XML数据流主动服务系统的框架模型
XML数据存储模块主要负责对数据和规则的存储,它并不是将XML数据分成若干项进行存储,就像存在一个类关系型数据库中一样。如果这样操作,将会在数据库中产生很多空值,同时浪费数据库空间,降低数据库操作效率。它采用将XML文档作为文件存储在数据库中,同时对数据建立XML文档索引,索引的建立主要是提高数据库管理的效率。
XML数据存储模块分为两大部分,一部分为原有XML数据文档和XML文档索引,另一部分为XML规则文档。
其中对原有XML数据文件的存储保留了文件顺序、处理指令、注释、CDATA块以及实体引用等有用信息,这是其它数据库无法达到的。XML数据文件存储部分不仅可以存储普通文档和非结构化文档还可以存储那些“天然格式”为XML的文件,而不管这些文件包含什么内容。例如,
电子商务系统消息所用的XML文件。尽管这些文件可能是以数据为中心的,而作为消息来说它们的天然格式是XML。这样当它们被存入消息队列后,建立在XML数据库上的消息队列使用起来更为方便。
将主动规则与数据统一进行存储,可以不需要单独对规则文档的检索、更新和数据一致性、完整性进行维护,只需要同XML文档数据用同一套管理系统即可。
3.3 输入输出模块
XML数据输入输出模块主要对数据存储过程中需要的输入输出动作进行管理,以及对数据库存储设计中涉及到的问题进行管理。包括对XML数据文档存储的规范化和完整性检查,以及XML数据文档的更新。
3.4 解析模块
XML解析模块用来装载XML文档到缓存中,文档装载时,可以使用SAX组织处理。XML数据解析模块是用于接口呈现的模块,XML数据只有经过解析模块处理后才能通过应用程序呈现成为普通
XML文档或者其它类型数据,同样,普通XML文档或者数据只有经过解析模块处理后才能真正作为XML数据输入模块的数据,不管是规则模块、数据查询模块和输入输出模块都要经由数据解析模块进行预呈现和输入解析。此模块由两部分组成:XML解析器和事件处理模块。