CN105045848A - 一种支持布尔表达式查询的数据库管理系统 - Google Patents
一种支持布尔表达式查询的数据库管理系统 Download PDFInfo
- Publication number
- CN105045848A CN105045848A CN201510385858.9A CN201510385858A CN105045848A CN 105045848 A CN105045848 A CN 105045848A CN 201510385858 A CN201510385858 A CN 201510385858A CN 105045848 A CN105045848 A CN 105045848A
- Authority
- CN
- China
- Prior art keywords
- boolean expression
- besystem
- supporting
- management system
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000014509 gene expression Effects 0.000 title claims abstract description 66
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000000034 method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库管理系统,其针对传统技术中数据库管理系统存在的问题,提出一种支持布尔表达式查询的数据库管理系统,实现在不改变数据库模式的情况下,可以灵活的引入新的属性来标注数据对象,并将SQL查询与布尔表达式的判断进行无缝衔接。在所述数据库管理系统中嵌套有支持布尔表达式查询的查询系统BESystem,所述查询系统BESystem用于支持布尔表达式列的定义,使得在不改变数据库模式的情况下,可以灵活的引入新的属性来标注数据对象;还用于通过特定的数据表示和索引结构支持对布尔表达式的判断,以及将SQL查询与布尔表达式的判断进行无缝衔接。本发明适用于数据库管理。
Description
技术领域
本发明涉及数据库管理系统(DBMS),具体涉及一种支持布尔表达式查询的数据库管理系统。
背景技术
近年来,企业通过开发信息系统来提升管理水平,改善用户体验等。这些系统在广泛使用的同时产生了大量的数据。目前,存储并管理这些数据的主要方法是通过数据库管理系统。
信息系统开发的核心环节之一在于数据库模式(Schema)设计,即:根据“实体-关系(ER)”模型设计表结构。数据库模式的确定意味着对企业业务活动和数据流转的确认。然而,对数据库模式的设计无法做到“一劳永逸”——即企业很难在系统设计之初就预见到未来业务变更、扩展所带来的数据库模式的调整。不仅如此,信息系统经过一段较长时间的使用,数据库中已经存储了大量的数据,此时,对已有数据库模式哪怕进行细微的调整,如对列的增减,往往都会带来巨大的I/O开销,甚至变更失败。以下,我们通过一个实例对该问题作进一步的认识。
下表一为某企业的用户表Consumer_old,其表结构为系统开发之初设计:
表一:Consumer_old用户表
随着企业业务发展,为了掌握用户对企业产品的兴趣,该企业希望在上述Consumer_old表上进行扩展,使得扩展后的数据表(如表二所示)可以便利的记录用户对企业产品的兴趣。
表二:Consumer用户表
不难发现,Interest列是一个特殊的列,它引用了多个属性,如MODEL,PRICE,YEAR以及MILEAGE;并且通过“逻辑与”关系将这些属性连接成布尔表达式以此表明用户对特定产品的兴趣。然而,虽然Interest列为信息系统开发及数据库管理提供了更加灵活的方式,但是传统的数据库管理系统并不能很好地支持对Interest列的定义,查询。
目前主流的DBMS中,仅Oracle在其10g以上版本的数据库管理系统中,通过支持EVALUATEOPERATOR来实现更加灵活的数据查询与结构拓展。简言之:该方案通过支持“布尔表达式”列,在SQL查询的基础上,嵌套进布尔表达式的判定,为数据库模式的扩展和查询提供了较大的灵活性。然而,在实际使用中该方案依然存在如下约束:
1)EVALUATE列是一个基于多个普通列的复合列,因此,定义EVALUATE列时必须提前知道普通列;此外EVALUATE关键词不支持区间值查询;
2)对EVALUATE列进行扩展时,其引用到的普通列所在表必须为空表;
3)对EVALUATE列的查询,查询条件必须对每一子项(普通列)进行判断才会正确返回结果,否则系统返回错误提示。
发明内容
本发明针对传统技术中数据库管理系统存在的问题,提出一种支持布尔表达式查询的数据库管理系统,实现在不改变数据库模式的情况下,可以灵活的引入新的属性来标注数据对象,并将SQL查询与布尔表达式的判断进行无缝衔接。
本发明解决上述技术问题所采用的方案是:一种支持布尔表达式查询的数据库管理系统,嵌套有支持布尔表达式查询的查询系统BESystem,所述查询系统BESystem用于支持布尔表达式列的定义,使得在不改变数据库模式的情况下,可以灵活的引入新的属性来标注数据对象;还用于通过特定的数据表示和索引结构支持对布尔表达式的判断,以及将SQL查询与布尔表达式的判断进行无缝衔接。
具体的,所述查询系统BESystem支持特定的数据表示的方式为:
查询系统BESystem创建并维护三种表,分别是:
表Tb:根据最初的ER关系所设计的数据表,其不含布尔表达式列,并且数据表中的每一条记录由唯一的ID标识;
表Tfn:存储布尔表达式所引用的属性组,其表结构为:name,pid;Tfn表的两个属性分别对应布尔表达式所引用属性的名称及ID;
表Tbf:存储布尔表达式内容,其表结构为:ID,bform;
其中,表Tbf与表Tb通过ID关联,即Tbf表存储Tb表中每条记录的布尔表达式。
具体的,所述BESystem还用于将形如“Pθ‘a’”的interest列转换为形如“定位数组|值域”的形式,并将转换后的内容以字符串形式存储在Tbf表的bform列。
具体的,所述BESystem通过索引结构支持对布尔表达式的判断的方式为:
BESystem对出现在布尔表达式列的属性(P)构建基于B+树的索引NegIndex,用于快速筛选不满足查询条件的数据。
具体的,所述BESystem将SQL查询与布尔表达式的判断进行无缝衔接的方式为:
BESystem将对布尔表达式的判断融入到SQL查询句中。
本发明的有益效果是:在DBMS之上建立一个灵活的支持布尔表达式查询的数据库管理系统BESystem;该系统通过支持对特殊列的定义、查询,实现在不改变数据库模式的情况下,可以灵活的引入新的属性来标注数据对象,并将SQL查询与布尔表达式的判断进行无缝衔接。
附图说明
图1为BESystem系统架构图;
图2为属性Price的NegIndex结构示意图。
具体实施方式
本发明旨在针对传统技术中数据库管理系统存在的问题,提出一种支持布尔表达式查询的数据库管理系统,实现在不改变数据库模式的情况下,可以灵活的引入新的属性来标注数据对象,并将SQL查询与布尔表达式的判断进行无缝衔接。
本发明在DBMS的基础上嵌套了支持布尔表达式查询的查询系统BESystem,该查询系统BESystem的系统构架如图1所示,下面分别介绍该系统的各个功能构架:
(一)数据表示及索引构建:
(I)数据表示方式:
为了更好地支持对数据表T的模式扩展,BESystem支持一个特定的形似布尔表达式的列,从而使得在任意阶段,对表T的扩展,无需作任何数据库层面的修改。
具体的数据表示形式如下所示:BESystem创建并维护三种表,分别是:
1)表Tb:根据最初的ER关系所设计的数据表,其不含布尔表达式列,并且数据表中的每一条记录由唯一的ID标识;
2)表Tfn:存储布尔表达式所引用的属性组,其表结构(schema)为:name(STRING),pid(INTEGER)。Tfn表的两个属性分别对应布尔表达式所引用属性的名称及ID。表Tfn的数据量无疑是非常小的,因此可以快速加载,并始终驻留在内存中;
3)表Tbf:存储布尔表达式内容,其表结构为:ID(INTEGER),bform(STRING)。表Tbf与表Tb通过ID关联,即Tbf表存储Tb表中每条记录的布尔表达式。
例如:为了支持对表二(即Consumer用户表)中Interest列的定义、查询,BESystem首先将表一(即Consumer_old表)视为Tb表,表中的每条记录由CID指定;然后根据Interest列,构建表Tfn(见表三)和表Tbf(表四)。
表三:Tfn表
name | pid |
Model | 0 |
Price | 1 |
Year | 2 |
Mileage | 3 |
表四:Tbf表
CID | bform |
1 | {0,8,‐1,‐1}|=Taurus/≤15000≥10000 |
2 | {‐1,‐1,0,‐1}|≤2000 |
3 | {0,‐1,9,‐1}|=Mustang/≥1999 |
4 | {‐1,‐1,‐1,0}|≥25000≤26000 |
值得一提的是,为了节约存储空间,支持高效的布尔表达式计算,BESystem将形如“Pθ‘a’”的interest列转换为形如“定位数组|值域”的形式,并将转换后的内容以字符串形式存储在Tbf表的bform列。例如:t1行Interest列(t1[Interest])转换成字符串即为“{0,8,-1,-1}|=Taurus/≤15000≥10000”,其中“|”将定位数组与表达式分隔,而“/”将表达式中的各属性值分隔。字符串t1[Interest]的定位数组为{0,8,-1,-1},表示Model属性的取值对应到值域字符串“=Taurus/≤15000≥10000”的第1个字符起至最近的“/”止;同理,Price属性的取值对应到值域字符串的第8个字符起至最近的“/”(或到字符串尾)止,而数组第2、3号元素取值为-1表明pid=2(或3)的属性Year、Mileage没有取值(即:t1所对应的用户没有对产品的Year和Mileage提出约束条件。)
(II)索引NegIndex:
为了能够对海量的带有布尔表达式的数据进行快速查询,BESystem对出现在布尔表达式列的属性(P)构建基于B+树的索引NegIndex,用于快速筛选不满足查询条件的数据。具体而言,(a)当某条记录(CID=m)的布尔表达式包含形如Pθ‘a’的查询条件时(θ为“=”,“≥”或“≤”,‘a’为常数),若θ为“≥”,m将被插入NegIndex中由叶节点‘a’指向的数据块;此外,所有这样的数据块按照被指向的叶结点的取值以从大到小的顺序链接起来,形成链表U-list。若θ为“≤”,则m将被插入另一个由‘a’指向的数据块,且数据块按叶节点取值以从小到大的顺序链接成链表L-list。图2展示了前例中基于Price属性的NegIndex。
(二)查询处理:
BESystem对传统SQL查询语句进行了拓展,将对布尔表达式的判断融入到查询语句中。以下为其支持的查询语句的示例:
Select*
FromConsumer
WhereSex='Male'
BconditionsPrice<20000andYear>2005
上述查询旨在从Consumer表中,找到所有的男性顾客,且他们对价格在20000以内,生产年份在2005年以后的产品感兴趣。对于该查询,BESystem通过以下步骤进行计算:
1)对查询语句中的标准SQL语句部分,BESystem首先在DBMS上对Consumer表(Tb表)进行查询,得到所有满足查询条件(由where字句所指定的查询条件,如:Sex='Male')的数据集及其CID集合S(CID);
2)如果Bconditions所指定查询条件中的属性已经建立了NegIndex索引,BESystem则使用NegIndex(Price)和NegIndex(Year)获取所有不满足Bconditions语句所指定条件的记录ID。具体来说:BESystem首先沿NegIndex(Price)的B+树定位到叶节点20000,然后从20000指向的数据块沿着U-list的指针方向遍历,获取所有访问到的数据块中的CID;类似地,BESystem从NegIndex(Year)的2005叶节点所指向的数据块,沿L-list的指针方向遍历,获取所有的CID。以上CID的集合Sn(CID)包含了所有不满足Bconditions指定条件的记录CID;此时BESystem根据集合的差S(CID)\Sn(CID)获得满足条件的用户CID集合,同时拓展Consumer表中的其他列,得到最终查询结果。
3)当某个属性P没有构建索引,BESystem对该属性通过如下方式进行检验:(a)BESystem首先访问已经加载进内存的表Tfn,快速获得P属性的pid;(b)对于每个S(CID)\Sn(CID)中的CID,BESystem检验Tbf表中该CID所对应的bform值bform(CID)。具体而言,bform(CID)首先被分隔符“|”分成“定位数组”和“值域”两部分。如果定位数组所指向的值域部分的值不满足条件,则其对应CID被从S(CID)\Sn(CID)中删除。当所有S(CID)\Sn(CID)中的CID所对应的bform值被验证完毕,BESystem返回Consumer表中CID属于S(CID)\Sn(CID)的记录作为最终查询结果。
Claims (5)
1.一种支持布尔表达式查询的数据库管理系统,其特征在于,嵌套有支持布尔表达式查询的查询系统BESystem,所述查询系统BESystem用于支持布尔表达式列的定义,使得在不改变数据库模式的情况下,可以灵活的引入新的属性来标注数据对象;还用于通过特定的数据表示和索引结构支持对布尔表达式的判断,以及将SQL查询与布尔表达式的判断进行无缝衔接。
2.如权利要求1所述的一种支持布尔表达式查询的数据库管理系统,其特征在于,所述查询系统BESystem支持特定的数据表示的方式为:
查询系统BESystem创建并维护三种表,分别是:
表Tb:根据最初的ER关系所设计的数据表,其不含布尔表达式列,并且数据表中的每一条记录由唯一的ID标识;
表Tfn:存储布尔表达式所引用的属性组,其表结构为:name,pid;Tfn表的两个属性分别对应布尔表达式所引用属性的名称及ID;
表Tbf:存储布尔表达式内容,其表结构为:ID,bform;
其中,表Tbf与表Tb通过ID关联,即Tbf表存储Tb表中每条记录的布尔表达式。
3.如权利要求2所述的一种支持布尔表达式查询的数据库管理系统,其特征在于,所述BESystem还用于将形如“Pθ‘a’”的interest列转换为形如“定位数组|值域”的形式,并将转换后的内容以字符串形式存储在Tbf表的bform列。
4.如权利要求3所述的一种支持布尔表达式查询的数据库管理系统,其特征在于,所述BESystem通过索引结构支持对布尔表达式的判断的方式为:
BESystem对出现在布尔表达式列的属性构建基于B+树的索引NegIndex,用于快速筛选不满足查询条件的数据。
5.如权利要求4所述的一种支持布尔表达式查询的数据库管理系统,其特征在于,所述BESystem将SQL查询与布尔表达式的判断进行无缝衔接的方式为:
BESystem将对布尔表达式的判断融入到SQL查询句中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510385858.9A CN105045848B (zh) | 2015-06-30 | 2015-06-30 | 一种支持布尔表达式查询的数据库管理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510385858.9A CN105045848B (zh) | 2015-06-30 | 2015-06-30 | 一种支持布尔表达式查询的数据库管理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045848A true CN105045848A (zh) | 2015-11-11 |
CN105045848B CN105045848B (zh) | 2019-01-29 |
Family
ID=54452395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510385858.9A Expired - Fee Related CN105045848B (zh) | 2015-06-30 | 2015-06-30 | 一种支持布尔表达式查询的数据库管理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045848B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469218A (zh) * | 2016-09-08 | 2017-03-01 | 中国科学院信息工程研究所 | 一种基于位图的布尔表达式存储、匹配方法和系统 |
CN110851506A (zh) * | 2018-07-25 | 2020-02-28 | 上海柯林布瑞信息技术有限公司 | 临床大数据的搜索方法及装置、存储介质、服务器 |
TWI745702B (zh) * | 2018-08-31 | 2021-11-11 | 大陸商北京奧星貝斯科技有限公司 | 資料查詢方法、裝置、電子設備及電腦可讀儲存媒體 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101360123A (zh) * | 2008-09-12 | 2009-02-04 | 中国科学院计算技术研究所 | 一种网络系统及其管理方法 |
CN103049521A (zh) * | 2012-12-19 | 2013-04-17 | 广东电子工业研究院有限公司 | 一种支持多属性复合条件查询的虚拟表索引机制及方法 |
CN104462559A (zh) * | 2014-12-25 | 2015-03-25 | 广东电子工业研究院有限公司 | 一种主流关系型数据库表模式对象化和虚拟化机制 |
-
2015
- 2015-06-30 CN CN201510385858.9A patent/CN105045848B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101360123A (zh) * | 2008-09-12 | 2009-02-04 | 中国科学院计算技术研究所 | 一种网络系统及其管理方法 |
CN103049521A (zh) * | 2012-12-19 | 2013-04-17 | 广东电子工业研究院有限公司 | 一种支持多属性复合条件查询的虚拟表索引机制及方法 |
CN104462559A (zh) * | 2014-12-25 | 2015-03-25 | 广东电子工业研究院有限公司 | 一种主流关系型数据库表模式对象化和虚拟化机制 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469218A (zh) * | 2016-09-08 | 2017-03-01 | 中国科学院信息工程研究所 | 一种基于位图的布尔表达式存储、匹配方法和系统 |
CN106469218B (zh) * | 2016-09-08 | 2019-11-19 | 中国科学院信息工程研究所 | 一种基于位图的布尔表达式存储、匹配方法和系统 |
CN110851506A (zh) * | 2018-07-25 | 2020-02-28 | 上海柯林布瑞信息技术有限公司 | 临床大数据的搜索方法及装置、存储介质、服务器 |
CN110851506B (zh) * | 2018-07-25 | 2021-12-03 | 上海柯林布瑞信息技术有限公司 | 临床大数据的搜索方法及装置、存储介质、服务器 |
TWI745702B (zh) * | 2018-08-31 | 2021-11-11 | 大陸商北京奧星貝斯科技有限公司 | 資料查詢方法、裝置、電子設備及電腦可讀儲存媒體 |
Also Published As
Publication number | Publication date |
---|---|
CN105045848B (zh) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273506B (zh) | 一种数据库多表联合查询的方法 | |
CN103530327B (zh) | 一种从非关系型数据库到关系型数据库的数据迁移方法 | |
CN106227800B (zh) | 一种高度关联大数据的存储方法及管理系统 | |
CN107818115B (zh) | 一种处理数据表的方法及装置 | |
CN102033954B (zh) | 关系数据库中可扩展标记语言文档全文检索查询索引方法 | |
CN104252536B (zh) | 一种基于hbase的上网日志数据查询方法及装置 | |
CN100481076C (zh) | 关系型数据库与全文检索相结合的检索方法 | |
CN105488043B (zh) | 基于Key-Value数据块的数据查询方法及系统 | |
CN103049521B (zh) | 可实现多属性复合条件查询的虚拟表索引系统及方法 | |
CN113392227B (zh) | 面向轨道交通领域的元数据知识图谱引擎系统 | |
US9665607B2 (en) | Methods and apparatus for organizing data in a database | |
CN106933833B (zh) | 一种基于空间索引技术的位置信息快速查询方法 | |
CN101158958B (zh) | 基于MySQL存储引擎的融合查询方法 | |
CN106326429A (zh) | 一种基于solr的Hbase秒级查询方案 | |
CN101833568B (zh) | Web数据管理系统 | |
CN102193983B (zh) | 图形数据库基于关系路径的节点数据过滤方法 | |
CN107015987B (zh) | 一种更新和搜索数据库的方法及设备 | |
CN102023983A (zh) | 统计时空数据库及其管理方法 | |
CN102591960A (zh) | 农业经济电子地图数据服务接口方法 | |
CN106503040B (zh) | 适用sql查询方法的kv数据库及其创建方法 | |
CN102375827A (zh) | 一种对版本化的电网模型数据库进行快速加载的方法 | |
US20110184956A1 (en) | Accessing digitally published content using re-indexing of search results | |
CN105045848A (zh) | 一种支持布尔表达式查询的数据库管理系统 | |
CN104317936A (zh) | 一种基于星型模型的rolap解析引擎设计方法及装置 | |
CN105022791A (zh) | 一种新型的kv分布式数据存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190129 |