一种用于关系数据库的反向索引优化方法及系统技术方案

技术编号:37382761 阅读:17 留言:0更新日期:2023-04-27 07:23
本发明专利技术提出了一种用于关系数据库的反向索引优化方法及系统,该方法通过采用倒排索引发布列表来减少交集中不必要的比较操作,使用跳过合并连接方法,通过数据库提供的聚合函数跳过行,再使用多路连接方法,通过简化复杂的连接方法,提高连接性能、缩短查询过程,来获得在一个过程中要搜索的关键字发布列表的结果,同时处理被搜索的多个关键字发布列表的连接,不需要获得发布列表交集的中间结果值,从而缩短搜索时间,提高了处理效率。提高了处理效率。提高了处理效率。

【技术实现步骤摘要】
一种用于关系数据库的反向索引优化方法及系统


[0001]本专利技术属于计算机
,特别涉及一种用于关系数据库的反向索引优化方法、系统。

技术介绍

[0002]随着大文本在各种场景中的使用频率越来越高,如何有效管理大文本的存储和查询的需求正迅速增加。数据库通过高效的索引访问,维护数据完整性,备份操作和错误处理来保证高性能和稳定性。几年来,关系数据库管理系统关注在文本搜索技术上,因原有的关键字搜索会因查询的关系增多,执行耗时就越高,而使用反向索引来加速全文搜索。反向索引是一种数据结构,根据关键字对文档进行索引和存储,以在全文进行文本搜索。但是,使用反向索引的关系查询引擎在执行时,会比较和合并所有发布列表行以实现发布列表的合并,大幅增加了查询的搜索时间。为减少搜索时间,市面上已有使用快速搜索指数跳过发布列表的合并连接的方法,但是如果超出了搜索键值,该方法还是会比较发布列表,所以如何减少不必要的比较和查询很有必要。
[0003]在关系数据库搜索中存在多种搜索方法,基于关键字的搜索是最常用的技术,分为基于图的或基于关系的。基于图表的搜索技术将一个关系数据库的所有数据绘制在一个图表上,节点表示元组,节点之间的链接表示定义关系,具有查询处理速度快的优点。基于关系的关键字查询为每个关键字生成一个发布列表,每个表中的元组可以基于模式中表示的关系进行联接,适用于大型数据库,并可以处理复杂的查询。
[0004]反向索引结构被用于存储和管理大型文档,也可以在搜索引擎中使用。反向索引结构可以根据不同使用场景进行拓展,一开始的反向索引结构,虽然能在不修改查询表单的情况下,提供反向索引配置,但存储大小过大,不适用于资源受限环境。之后,通过优化索引方法,有效地利用了最近邻搜索中的空间,减小反向索引的大小,但是在使用反向索引的关系查询引擎执行时,会比较和合并所有发布列表行以实现发布列表的合并,大幅增加了查询的搜索时间。
[0005]本专利技术为减少关系数据库查询的搜索时间,提出了一种用于关系数据库的反向索引优化方法,通过采用倒排索引发布列表来减少交集中不必要的比较操作,并使用聚合函数最小化无效的比较操作,将合并连接与多路连接集成,提高了处理效率。

技术实现思路

[0006]考虑到上述问题,提出了本专利技术。
[0007]根据本专利技术一方面,提出了一种用于关系数据库的反向索引优化方法,该方法包括:
[0008]步骤1:为每个发布列表检查游标当前指向的值;
[0009]步骤2:判断是否匹配并重复执行;
[0010]步骤2

1:如果三个发布列表的当前值相同,则相应的键值存储在结果列表中,并
且三个发布列表的游标都被移动一个单元格;
[0011]步骤2

2:如果不匹配,则根据不匹配的第n

1个发布列表的游标值Vd(C
n

1(j)
)检查第n个发布列表的键值Vd(C
n(i)
);如果游标值Vd(C
n

1(j)
)小于键值Vd(C
n(i)
),则使用跳过合并连接方法搜索与键值Vd(C
n(i)
)相等或小于该值的行,并将游标移动到该行,移动行数由聚合函数确定的;其中,C
n(i)
代表列表n中指向第i行的游标值;i、j分别指代当前键值和游标值的行;
[0012]步骤3:在移动游标后,返回到步骤1并确定n个发布列表的游标值是否匹配;重复此过程,直到一个或多个发布列表的游标指示为NULL为止。
[0013]同时,该方法还包括查询处理,在合并和短语查询中执行列表交叉时,使用逻辑产品搜索包含所有搜索关键字的文档,包括连接查询和短语查询;其中所述连接查询,步骤如下:连接查询搜索包含n个搜索关键字的文档,合取查询要求发布按单调递增已输入的n个关键字排序的列表,并返回包括n个发布列表的公共值在内的排序结果值。
[0014]在该方法中,使用面向行的关系反向索引表中的<term,docid>列来执行发布列表交叉,使用之字形合并连接,当合并的键值不匹配时,使用之字形合并连接运算符来搜索大于或等于键值的值;通过SkipRow函数将游标移动到一个等于或大于所需值的值,使用反向列表中以单调递增模式排列的跳过合并连接,实现连接查询搜索。
[0015]本专利技术还提出一种用于关系数据库的反向索引优化系统,该系统包括:
[0016]检查模块:为每个发布列表检查游标当前指向的值;
[0017]判断模块:判断是否匹配并重复执行;
[0018]判断子模块1:如果三个发布列表的当前值相同,则相应的键值存储在结果列表中,并且三个发布列表的游标都被移动一个单元格;
[0019]判断子模块2:如果不匹配,则根据不匹配的第n

1个发布列表的游标值Vd(C
n

1(j)
)检查第n个发布列表的键值Vd(C
n(i)
);如果游标值Vd(C
n

1(j)
)小于键值Vd(C
n(i)
),则使用跳过合并连接方法搜索与键值Vd(C
n(i)
)相等或小于该值的行,并将游标移动到该行,移动行数由聚合函数确定的;其中,C
n(i)
代表列表n中指向第i行的游标值;i、j分别指代当前键值和游标值的行;
[0020]执行模块:在移动游标后,返回到步骤1并确定n个发布列表的游标值是否匹配;重复此过程,直到一个或多个发布列表的游标指示为NULL为止。
[0021]同时,该系统还包括查询处理模块,在合并和短语查询中执行列表交叉时,使用逻辑产品搜索包含所有搜索关键字的文档,包括连接查询和短语查询;其中所述连接查询,步骤如下:连接查询搜索包含n个搜索关键字的文档,合取查询要求发布按单调递增已输入的n个关键字排序的列表,并返回包括n个发布列表的公共值在内的排序结果值。
[0022]在该系统中,使用面向行的关系反向索引表中的<term,docid>列来执行发布列表交叉,使用之字形合并连接,当合并的键值不匹配时,使用之字形合并连接运算符来搜索大于或等于键值的值;通过SkipRow函数将游标移动到一个等于或大于所需值的值,使用反向列表中以单调递增模式排列的跳过合并连接,实现连接查询搜索。
[0023]相对于现有技术,本申请具有如下有益效果:
[0024]1、本专利技术不但能减少不必要的比较次数,还能同时处理被搜索的多个关键字发布列表的连接,而不需要获得发布列表交集的中间结果值,从而缩短搜索时间;
[0025]2、本专利技术可以提高数据库查询速度,减少不必要的比较和查询;
[0026]3、对于无处不在的“大数据”,本专利技术技术的应用场景广阔、市场规模及潜在价值巨大;4、对于转型升级中的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于关系数据库的反向索引优化方法,其特征在于,包括:步骤1:为每个发布列表检查游标当前指向的值;步骤2:判断是否匹配并重复执行;步骤2

1:如果三个发布列表的当前值相同,则相应的键值存储在结果列表中,并且三个发布列表的游标都被移动一个单元格;步骤2

2:如果不匹配,则根据不匹配的第n

1个发布列表的游标值Vd(C
n

1(j)
)检查第n个发布列表的键值Vd(C
n(i)
);如果游标值Vd(C
n

1(j)
)小于键值Vd(C
n(i)
),则使用跳过合并连接方法搜索与键值Vd(C
n(i)
)相等或小于该值的行,并将游标移动到该行,移动行数由聚合函数确定的;其中,C
n(i)
代表列表n中指向第i行的游标值;i、j分别指代当前键值和游标值的行;步骤3:在移动游标后,返回到步骤1并确定n个发布列表的游标值是否匹配;重复此过程,直到一个或多个发布列表的游标指示为NULL为止。2.根据权利要求1所述的用于关系数据库的反向索引优化方法,其特征在于,所述方法还包括查询处理:在合并和短语查询中执行列表交叉时,使用逻辑产品搜索包含所有搜索关键字的文档,包括连接查询和短语查询;其中所述连接查询,步骤如下:连接查询搜索包含n个搜索关键字的文档,合取查询要求发布按单调递增已输入的n个关键字排序的列表,并返回包括n个发布列表的公共值在内的排序结果值。3.根据权利要求2所述的用于关系数据库的反向索引优化方法,其特征在于,所述方法还包括:使用面向行的关系反向索引表中的<term,docid>列来执行发布列表交叉,使用之字形合并连接,当合并的键值不匹配时,使用之字形合并连接运算符来搜索大于或等于键值的值;通过SkipRow函数将游标移动到一个等于或大于所需值的值,使用反向列表中以单调递增模式排列的跳过合并连接,实现连接查询搜索。4.根据权利要求3所述的用于关系数据库的反向索引优化方法,其特征在于,具体的跳过合并方法包括,将数据库提供的聚合函数用于跳过按升序排序的两个发布列表的行,通过计算一个聚合函数来获得游标必须移动的行数,所述聚合函数是指在发布列表中游标指示的目标行的值与发布列表中游标指示的行的值之间的行数,从而避免了进行比较的需要;同时,通过验证二进制搜索来确定游标跳过的键值是否大于比较键值,或者偏移量是否在偏移量表中的同一文档编号内移动,并检查移动的文档编号中的第一个偏移量,从而避免合并连接中不必要的比较问题。5.根据权利要求3所述的用于关系数据库的反向索引优化方法,其特征在于,具体的多路连接方法为:当有三个发布列表时,首先,使用三个游标,比较每个倒排列表中第一行的值,因列表A和列表B的光标值不同,列表B的光标向前移动一个单元格,然后,再次比较三个游标值,如果列表A和B的游标值相同,而列表C的游标值较小,则将列表C的游标移动一个单元格到一个值大于等于列表B的游标值的行,结果值是通过同时连接三个列表而不存储中间结果值来获...

【专利技术属性】
技术研发人员:李志辉关永春党咏欣杨宁晏进张宇峰
申请(专利权)人:中电信数智科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1