一种海量数据Top-k选择查询方法技术

技术编号:19692284 阅读:22 留言:0更新日期:2018-12-08 11:17
本发明专利技术提供一种海量数据Top‑k选择查询方法,有效地处理大数据上的top‑k选择查询,提出了基于表扫描的TKS算法,该算法通过对预排序表PT的顺序扫描来计算top‑k选择查询结果。本发明专利技术具有早结束特性;在连续扫描预排序表的过程中,只需要维护k个候选结果;并且选择剪切和分数剪切可以有效的减少I/O的代价,选择剪切是利用位图编码去掉不满足选择条件的元组,而分数剪切是利用评分函数的单调性和预排序列表的有序性跳过那些不满足分数要求的元组。

【技术实现步骤摘要】
一种海量数据Top-k选择查询方法
本专利技术涉及大数据查询领域,尤其涉及一种海量数据Top-k选择查询方法。
技术介绍
随着移动计算的快速发展,top-k查询及其计算方法得到了众多研究者的关注,主要是因为top-k查询结果集在很多应用中都有着非常重要的作用,由于其实际意义,top-k查询引起了广泛的关注,并提出了许多算法。现有的top-k算法可以分为三类:基于索引的方法、基于视图的方法和基于排序的方法。然而,绝大多数现有算法都没有选择条件,只返回所有元组中的top-k结果。当然,这些算法的简单扩展,即首先找到满足选择条件的元组,然后在满足条件的元组上执行top-k查询,将会导致大量的I/O开销。目前已经有多种算法来处理top-k选择查询。D.Xin和J.Han等人提出评分立方体(Rankingcube)方法,在选择属性和度量属性上构建rank-aware的数据集,可以有效地回答top-k选择查询。然而,该方法总是假设选择维度是范围类型,并且实际应用中,在海量数据上的评分立方体的预计算成本和存储成本是非常昂贵的。另外两项密切相关的研究是N.Bruno和A.Stupar等人提出的,前者将其转化为一个单一的范围查询,以获得与预设的属性值根据距离函数匹配的k个元组。后一种方法处理预设选择条件的查询,由于选择形式的限制和精确的数值属性,其实用性受到了严重的限制。换言之,现有的算法在处理海量数据的top-k选择查询时存在一定的问题。
技术实现思路
为了克服上述现有技术中的不足,本专利技术提供一种海量数据Top-k选择查询方法,方法包括:预设查询表T,基于TKS算法,对查询表T预排序,形成预排序表PT;根据选择剪切方式和分数剪切方式,按预排序顺序扫描预排序表PT;在扫描过程中,选择剪切方式为剪掉不满足选择条件P的元组;分数剪切方式为预设分数的下界,任意元组的分数如果小于分数下界,则所述元组为非查询结果,剪掉所述元组;基于选择剪切方式和分数剪切方式的扫描后,保留未被剪掉的元组,输出查询结果。优选地,步骤预设查询表T,基于TKS算法,对查询表T预排序,形成预排序表PT还包括:T具有n个元组,M个度量属性A1,…,AM和D个选择属性S1,…,SD,top-k选择查询定义在d个选择属性S1,…,Sd上的选择条件P={(l1≤S1≤u1)∧…(ld≤Sd≤ud)}和定义在m个度量属性A1,…,Am上的评分函数返回满足选择条件且分数最大的k个元组;根据数据表T,生成有序列文件ALi(PI,Ai),PI是元组的位置索引,Ai代表第i个属性值,有序列文件按照Ai的值递减排序;对T的元组根据其在AL1,…,ALM的轮询顺序进行预排序,获得预排序表PT。优选地,步骤预设查询表T,基于TKS算法,对查询表T预排序,形成预排序表PT还包括:生成由表T的位置索引和度量属性值对组成的列文件ALi(PI,Ai),在ALi中按照属性值Ai降序排列,并用PIi表示Ai中的每个属性值在ALi中的位置索引;用MPI表示预设元组在有序列文件ALi中位置索引PIi的最小值,则t.MPI=min1≤i≤Mt.PIi,将表T中的元组按照MPI值非降序排序,得到预排序表PT,PT表的模式为PT(MPIL,PIT,A1,…,AM,S1,…,SD)。优选地,设置评分函数评分函数用来计算每个元组的分数,连续扫描PT,评估每个元组是否满足选择条件P,维护一个优先队列PQ,队列中的元素是到目前为止满足选择条件且分数最大的k个元组;当满足早结束条件时,返回PQ中的元组,即top-k的选择结果。优选地,选择剪切方式包括:给出选择属性Sj,minj和maxj分别是选择属性值的最小值和最大值,把[minj,maxj]区间分成C个范围(R1,......,RC),并用C个位向量(Bj,1,...,Bj,C)为Sj编码;用Bj,v(a)表示向量Bj,v的第a位;如果pt.Sj属于Rv,则Bj,1(a),...,Bj,v-1(a)为0,Bj,v(a),...,Bj,C(a)为1,Bj,v代表离散化Sj中落入范围[1,v]内的属性值;预设在选择属性Sj上的选择条件lj≤Sj≤uj,两个位向量需要执行选择剪切,[v1,v2]是区间[lj,uj]所涉及到的相关范围,则有代表相关范围的属性值;当v1=1时,只有用于选择剪切;令bfj,1和bfj,2分别表示具有BS个字节缓冲区,并分别维护从和读取的数据;在对PT执行扫描之前,TKS先从和中读取数据,获得类似地,可以获得该位向量对应PT(1,…,8×BS)的元组,如果bf中的第a位为0,PT(a)可以直接跳过;否则读取PT(a),并且通过选择条件进行评估;当缓冲区bf用完后,TKS重新获取和的数据,优选地,分数剪切方式包括:令tscore是top-k选择结果分数的下界,任意元组的分数如果小于tscore,那么该元组肯定不是查询结果,并且可以直接跳过该元组;TKS预先构建一个数据结构APTS(AttributePairTerminating-tupleSet),对于每一个top-k选择查询,利用该结构初始化tscore;指定其上界Kmax;度量属性的维度为M,则APTS需要维护个文件,每个文件中具有Kmax个T中的元组;代表APTS中的一个文件,所述文件保存以round-robin的方式在和上轮询得到的前Kmax个终结元组;再预构造另一个结构MCR,根据元组的位置索引来确定其对应度量属性值的范围;MCRi文件是由log2n个元组组成,MCRi(b)是一个n位的位向量,代表通过EGBFTi(b)检查PT中的元组结果,如果PT(a)的检测结果为真,则MCRi(b)中的第a个位置为1,否则,该位被设置为0;EGBFTi(b)是一个bloomfilter表,是在AL(1,…,2b).PI上构造出来的。优选地,分数剪切方式还包括:配置分数剪切规则;在连续扫描PT之前,预设评分函数,TKS算法通过读个相关文件APTS,初始化tscore;tscore被设置成在相关文件APTS中满足选择条件P的元组中的第k大的分数;如果选择度STV的值较低,则可能小于k个元组满足选择条件P,此时tscore设置成∑1≤i≤mmini;得到tscore的值之后,为度量属性Ai计算如果pt.Ai<pvi,有pt.A1+…+pt.Ai+…+pt.Am<max1+…+pvi+…+maxm=tscore,因此pt不是top-k选择结果;TKS利用EGBIi(1≤i≤m)结构确定当前用于分数剪切的MCR元组的位置索引;TKS返回EGBIi满足条件EGBIi(bi).eval<pvi≤EGBIi(bi-1).eval的第一个位置索引用EGBIi(0).eval表示maxi,是-∞,然后bi是MCR元组的位置索引;已知MCRi(bi)是PT的PIT成员属性检测结果值的位向量;如果当前不能执行分数剪切;令mfi为一个具有BS个字节的缓冲区,用来维护读取MCRi(bi)的数据;在对PT执行顺序扫描之前,TKS通过mfi从MCRi(bi)中获取数据,并且获得该位向量对应PT(1,…,8×BS)的元组,如果mf中的第a位为0,PT(a)直接跳过;否则读取P本文档来自技高网...

【技术保护点】
1.一种海量数据Top‑k选择查询方法,其特征在于,方法包括:预设查询表T,基于TKS算法,对查询表T预排序,形成预排序表PT;根据选择剪切方式和分数剪切方式,按预排序顺序扫描预排序表PT;在扫描过程中,选择剪切方式为剪掉不满足选择条件P的元组;分数剪切方式为预设分数的下界,任意元组的分数如果小于分数下界,则所述元组为非查询结果,剪掉所述元组;基于选择剪切方式和分数剪切方式的扫描后,保留未被剪掉的元组,输出查询结果。

【技术特征摘要】
1.一种海量数据Top-k选择查询方法,其特征在于,方法包括:预设查询表T,基于TKS算法,对查询表T预排序,形成预排序表PT;根据选择剪切方式和分数剪切方式,按预排序顺序扫描预排序表PT;在扫描过程中,选择剪切方式为剪掉不满足选择条件P的元组;分数剪切方式为预设分数的下界,任意元组的分数如果小于分数下界,则所述元组为非查询结果,剪掉所述元组;基于选择剪切方式和分数剪切方式的扫描后,保留未被剪掉的元组,输出查询结果。2.根据权利要求1所述的海量数据Top-k选择查询方法,其特征在于,步骤预设查询表T,基于TKS算法,对查询表T预排序,形成预排序表PT还包括:T具有n个元组,M个度量属性A1,…,AM和D个选择属性S1,…,SD,top-k选择查询定义在d个选择属性S1,…,Sd上的选择条件P={(l1≤S1≤u1)∧…(ld≤Sd≤ud)}和定义在m个度量属性A1,…,Am上的评分函数返回满足选择条件且分数最大的k个元组;根据数据表T,生成有序列文件ALi(PI,Ai),PI是元组的位置索引,Ai代表第i个属性值,有序列文件按照Ai的值递减排序;对T的元组根据其在AL1,…,ALM的轮询顺序进行预排序,获得预排序表PT。3.根据权利要求2所述的海量数据Top-k选择查询方法,其特征在于,步骤预设查询表T,基于TKS算法,对查询表T预排序,形成预排序表PT还包括:生成由表T的位置索引和度量属性值对组成的列文件ALi(PI,Ai),在ALi中按照属性值Ai降序排列,并用PIi表示Ai中的每个属性值在ALi中的位置索引;用MPI表示预设元组在有序列文件ALi中位置索引PIi的最小值,则t.MPI=min1≤i≤Mt.PIi,将表T中的元组按照MPI值非降序排序,得到预排序表PT,PT表的模式为PT(MPIL,PIT,A1,…,AM,S1,…,SD)。4.根据权利要求1所述的海量数据Top-k选择查询方法,其特征在于,扫描过程还包括:设置评分函数评分函数用来计算每个元组的分数,连续扫描PT,评估每个元组是否满足选择条件P,维护一个优先队列PQ,队列中的元素是到目前为止满足选择条件且分数最大的k个元组;当满足早结束条件时,返回PQ中的元组,即top-k的选择结果。5.根据权利要求1所述的海量数据Top-k选择查询方法,其特征在于,选择剪切方式包括:给出选择属性Sj,minj和maxj分别是选择属性值的最小值和最大值,把[minj,maxj]区间分成C个范围(R1,......,RC),并用C个位向量(Bj,1,...,Bj,C)为Sj编码;用Bj,v(a)表示向量Bj,v的第a位;如果pt.Sj属于Rv,则Bj,1(a),...,Bj,v-1(a)为0,Bj,v(a),...,Bj,C(a)为1,Bj,v代表离散化Sj中落入范围[1,v]内的属性值;预设在选择属性Sj上的选择条件lj≤Sj≤uj,两个位向量需要执行选择剪切,[v1,v2]是区间[lj,uj]所涉及到的相关范围,则有代表相关范围的属性值;当v1=1时,只有用于选择剪切;令bfj,1和bfj,2分别表示具有BS个字节缓冲区,并分别维护从和读取的数据;在对PT执行扫描之前,TKS先从和中...

【专利技术属性】
技术研发人员:韩希先宋翠王佰玲
申请(专利权)人:哈尔滨工业大学威海
类型:发明
国别省市:山东,37

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

1