一种支持布尔表达式查询的数据库管理系统的制作方法

文档序号:9326934阅读:394来源:国知局
一种支持布尔表达式查询的数据库管理系统的制作方法
【技术领域】
[0001] 本发明涉及数据库管理系统(DBMS),具体涉及一种支持布尔表达式查询的数据库 管理系统。
【背景技术】
[0002] 近年来,企业通过开发信息系统来提升管理水平,改善用户体验等。这些系统在广 泛使用的同时产生了大量的数据。目前,存储并管理这些数据的主要方法是通过数据库管 理系统。
[0003] 信息系统开发的核心环节之一在于数据库模式(Schema)设计,即:根据"实体-关 系(ER) "模型设计表结构。数据库模式的确定意味着对企业业务活动和数据流转的确认。 然而,对数据库模式的设计无法做到"一劳永逸"一一即企业很难在系统设计之初就预见到 未来业务变更、扩展所带来的数据库模式的调整。不仅如此,信息系统经过一段较长时间的 使用,数据库中已经存储了大量的数据,此时,对已有数据库模式哪怕进行细微的调整,如 对列的增减,往往都会带来巨大的I/O开销,甚至变更失败。以下,我们通过一个实例对该 问题作进一步的认识。
[0004] 下表一为某企业的用户表Consumer_old,其表结构为系统开发之初设计:
[0005] 表一 :Consumer_old 用户表
[0006]
[0007] 随着企业业务发展,为了掌握用户对企业产品的兴趣,该企业希望在上述 C〇nsumer_〇ld表上进行扩展,使得扩展后的数据表(如表二所示)可以便利的记录用户对 企业产品的兴趣。
[0008] 表二:Consumer 用户表
[0009]
[0010] 不难发现,Interest列是一个特殊的列,它引用了多个属性,如MODEL,PRICE, YEAR以及MILEAGE ;并且通过"逻辑与"关系将这些属性连接成布尔表达式以此表明用户对 特定产品的兴趣。然而,虽然Interest列为信息系统开发及数据库管理提供了更加灵活的 方式,但是传统的数据库管理系统并不能很好地支持对Interest列的定义,查询。
[0011] 目前主流的DBMS中,仅Oracle在其IOg以上版本的数据库管理系统中,通过支持 EVALUATE OPERATOR来实现更加灵活的数据查询与结构拓展。简言之:该方案通过支持"布 尔表达式"列,在SQL查询的基础上,嵌套进布尔表达式的判定,为数据库模式的扩展和查询 提供了较大的灵活性。然而,在实际使用中该方案依然存在如下约束:
[0012] DEVALUATE列是一个基于多个普通列的复合列,因此,定义EVALUATE列时必须提 前知道普通列;此外EVALUATE关键词不支持区间值查询;
[0013] 2)对EVALUATE列进行扩展时,其引用到的普通列所在表必须为空表;
[0014] 3)对EVALUATE列的查询,查询条件必须对每一子项(普通列)进行判断才会正确 返回结果,否则系统返回错误提示。

【发明内容】

[0015] 本发明针对传统技术中数据库管理系统存在的问题,提出一种支持布尔表达式查 询的数据库管理系统,实现在不改变数据库模式的情况下,可以灵活的引入新的属性来标 注数据对象,并将SQL查询与布尔表达式的判断进行无缝衔接。
[0016] 本发明解决上述技术问题所采用的方案是:一种支持布尔表达式查询的数据库管 理系统,嵌套有支持布尔表达式查询的查询系统BESystem,所述查询系统BESystem用于支 持布尔表达式列的定义,使得在不改变数据库模式的情况下,可以灵活的引入新的属性来 标注数据对象;还用于通过特定的数据表示和索引结构支持对布尔表达式的判断,以及将 SQL查询与布尔表达式的判断进行无缝衔接。
[0017] 具体的,所述查询系统BESystem支持特定的数据表示的方式为:
[0018] 查询系统BESystem创建并维护三种表,分别是:
[0019] 表Tb:根据最初的ER关系所设计的数据表,其不含布尔表达式列,并且数据表中 的每一条记录由唯一的ID标识;
[0020] 表Tfn:存储布尔表达式所引用的属性组,其表结构为:name, pid ;T fn表的两个属 性分别对应布尔表达式所引用属性的名称及ID ;
[0021] 表Tbf:存储布尔表达式内容,其表结构为:ID,bform ;
[0022] 其中,表Tbf与表T b通过ID关联,即T bf表存储T b表中每条记录的布尔表达式。
[0023] 具体的,所述BESystem还用于将形如"Ρ Θ 'a' "的interest列转换为形如"定位 数组I值域"的形式,并将转换后的内容以字符串形式存储在Tbf表的bform列。
[0024] 具体的,所述BESystem通过索引结构支持对布尔表达式的判断的方式为:
[0025] BESystem对出现在布尔表达式列的属性(P)构建基于B+树的索引Neglndex,用 于快速筛选不满足查询条件的数据。
[0026] 具体的,所述BESystem将SQL查询与布尔表达式的判断进行无缝衔接的方式为:
[0027] BESystem将对布尔表达式的判断融入到SQL查询句中。
[0028] 本发明的有益效果是:在DBMS之上建立一个灵活的支持布尔表达式查询的数据 库管理系统BESystem ;该系统通过支持对特殊列的定义、查询,实现在不改变数据库模式 的情况下,可以灵活的引入新的属性来标注数据对象,并将SQL查询与布尔表达式的判断 进行无缝衔接。
【附图说明】
[0029] 图1为BESystem系统架构图;
[0030] 图2为属性Price的NegIndex结构示意图。
【具体实施方式】
[0031] 本发明旨在针对传统技术中数据库管理系统存在的问题,提出一种支持布尔表达 式查询的数据库管理系统,实现在不改变数据库模式的情况下,可以灵活的引入新的属性 来标注数据对象,并将SQL查询与布尔表达式的判断进行无缝衔接。
[0032] 本发明在DBMS的基础上嵌套了支持布尔表达式查询的查询系统BESystem,该查 询系统BESystem的系统构架如图1所示,下面分别介绍该系统的各个功能构架:
[0033](一)数据表示及索引构建:
[0034] (I)数据表示方式:
[0035] 为了更好地支持对数据表T的模式扩展,BESystem支持一个特定的形似布尔表达 式的列,从而使得在任意阶段,对表T的扩展,无需作任何数据库层面的修改。
[0036] 具体的数据表示形式如下所示:BESystem创建并维护三种表,分别是:
[0037] 1)表Tb:根据最初的ER关系所设计的数据表,其不含布尔表达式列,并且数据表 中的每一条记录由唯一的ID标识;
[0038] 2)表Tfn:存储布尔表达式所引用的属性组,其表结构(schema)为: name (STRING),pid(INTEGER)。Tfn表的两个属性分别对应布尔表达式所引用属性的名称及 ID。表Tfn的数据量无疑是非常小的,因此可以快速加载,并始终驻留在内存中;
[0039] 3)表Tbf:存储布尔表达式内容,其表结构为:ID(INTEGER),bform(STRING)。表T bf 与表Tb通过ID关联,即T bf表存储T b表中每条记录的布尔表达式。
[0040] 例如:为了支持对表二(即Consumer用户表)中Interest列的定义、查询, BESystem首先将表一(即Consumer_old表)视为Tb表,表中的每条记录由CID指定;然后 根据Interest列,构建表T fn (见表三)和表Tbf (表四)。
[0041] 表三:1^表
[0042]
[0043] 表
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1