CN107515918A - 一种基于网格索引的动态top‑k查询方法 - Google Patents

一种基于网格索引的动态top‑k查询方法 Download PDF

Info

Publication number
CN107515918A
CN107515918A CN201710713552.0A CN201710713552A CN107515918A CN 107515918 A CN107515918 A CN 107515918A CN 201710713552 A CN201710713552 A CN 201710713552A CN 107515918 A CN107515918 A CN 107515918A
Authority
CN
China
Prior art keywords
grid
node
data
value
trunk
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.)
Pending
Application number
CN201710713552.0A
Other languages
English (en)
Inventor
秦小麟
邓丹苹
李博涵
鲍芝峰
郑伟
王雅楠
关东海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Aeronautics and Astronautics
Original Assignee
Nanjing University of Aeronautics and Astronautics
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University of Aeronautics and Astronautics filed Critical Nanjing University of Aeronautics and Astronautics
Priority to CN201710713552.0A priority Critical patent/CN107515918A/zh
Publication of CN107515918A publication Critical patent/CN107515918A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Navigation (AREA)

Abstract

本发明公开了一种基于网格索引的动态top‑k查询方法,将数据所在的区域划分成等大的若干个网格单元,每个网格单元内包括了落在该区域的数据,建立TTI树形索引,将网格插入索引中,从TTI索引顶层躯干节点开始,向左右遍历通过网格中已有的概要信息计算网格的k支配能力,直至找到判定单元,利用判定单元划分影响区和自由区,并在影响区中计算top‑k结果集;若属性值发生变化的数据落在自由区,则不需要更新top‑k结果集。若数据变化发生在自由区,则经过插入和删除数据步骤后从步骤3开始重新计算top‑k结果集。本发明的有益效果是能够适应数据量的迅速增加和数据的动态变化,查询效率高。

Description

一种基于网格索引的动态top-k查询方法
技术领域
本发明属于计算机技术领域,涉及一种基于网格索引的动态top-k查询方法。
背景技术
随着移动计算的快速发展,top-k查询及其计算方法得到了众多研究者的关注,主要是因为top-k查询结果集在很多应用中都有着非常重要的作用,例如社交网站好友查询、电子商务商品查询、股票交易优股查询、购买房产查询等等。top-k查询选取一个偏好函数返回前k个函数值最小(或最大)的数据对象作为结果,对于数据分析者寻找有意义对象进行决策支持具有十分重要的意义。top-k查询通过用户的喜好返回k个最佳纪录,用户偏好由选择条件和排序函数组成,同的用户不仅对偏好函数中的参数有着不同规定,关注的属性维度也不一样。随着数据量增长,并且在实际应用中,数据对象之间的互相影响或者由于数据对象本身的因素可能导致目标对象的属性值发生改变。因此使用静态的原始数据会导致查询结果的不准确。而传统的算法在动态变化的大量数据集上效率较低,传统的top-k算法通过对所有记录进行遍历和全排序从而返回得分最高的k个,这种情况下无论k取多少都不会影响算法的运行时间,如果在数据集合较大时,用户只要求选出top-10个餐厅,全遍历及排序需要花费很大的代价并且没有必要。在现有的研究中,解决top-k查询的算法有四种类型:Sort-list方法,层次方法,基于视图的方法,基于概要的方法。其中,前三种方法适用于静态数据集,最后一种方法可用于动态数据集。Sort-list类型的方法的使用前提是数据集可放入内存,并且一旦数据发生动态变化,需要重新建立列表,并不适应大量数据动态变化时的情况。层次模型采用了数据预处理的方法,提高了在线查找的速度,但在动态变化的情况下,维护层次模型的代价很大。视图方法在数据动态变化时需要重新计算其对应的物化视图,同样不适用于动态变化的数据集,并且该类算法效率对权重系数的变化很敏感。
基于概要的方法在离线时把数据区域分成若干个等大网格,并根据参数k的大小以网格为最小单位划分影响区和自由区,当增删的记录位于影响区可能会引起top-k集合的变化,而自由区中的记录变化从理论上保证对top-k集合无影响。可满足不同用户的偏好,提高了在线查询速度,可适应数据集的动态变化。但是传统的基于概要的方法并未对网格建立高效索引,当网格数量增加时,查找定位网格速度较慢,并且划分区域时不能利用网格在索引中的位置提高计算效率,继而在数据动态变化导致频繁更新区域时花费代价较大。由于数据量的迅速增加和数据的动态变化,传统的top-k查询无法适应这些情况。现有的基于网格索引的研究方法中,存储网格一般使用的链表形式,在访问网格时需遍历所有网格。并且在建立网格时需要获得网格中的最优记录,最劣记录和记录数量等信息,或者需要计算网格所有支配节点以及逆支配节点,以确定该网格属于自由区还是影响区,在查询结构的建立以及维护方面都需花费较大的代价。
发明内容
本发明的目的在于提供一种基于网格索引的动态top-k查询方法,解决了现有的查询方法不适应大量数据动态变化时的情况,查询效率低的问题。
本发明所采用的技术方案是按照以下步骤进行:
步骤1:首先将二维数据所在的区域划分成等大的若干个网格单元,每个网格单元内包括了落在该区域的数据,通过数据的属性值判断它所属的网格单元;
步骤2:建立TTI(Trunk tree Index)树形索引,索引包括躯干及左右分支部分,将网格插入索引中,索引上的每个节点用来存储一个网格单元;
步骤3:从TTI索引顶层躯干节点开始,向左右遍历通过网格中已有的概要信息计算网格的k支配能力,直至找到判定单元,利用判定单元划分影响区和自由区,并在影响区中计算top-k结果集;其中k:存在网格C,若C和C胞兄节点上的网格和所有支配C的网格中记录数量之和大于等于k,则称网格C是具有k支配能力的网格。
步骤4:若属性值发生变化的数据落在自由区,则不需要更新top-k结果集。若数据变化发生在自由区,则经过插入和删除数据步骤后从步骤3开始重新计算top-k结果集。一个top-k查询的例子如下,在餐馆查询数据库系统当中,每个餐厅记录的属性有口味,环境,服务,人均消费水平,距离等等,用户可以通过在线查询来挑选合适的餐厅。每个用户的需求是不同的,也就是每个用户用来筛选k个结果的偏好函数不同,比如f=0.1*环境+0.6*口味+0.3*距离,用户可以根据自己的喜好找到最满足要求的k个结果。
进一步,所述步骤2中TTI索引中存在躯干节点为网格Ci,j,躯干节点的左孩子为网格Ci-1,j、右孩子为Ci,j-1、中孩子为Ci-1,j-1,将数据空间进行网格划分,网格在每个属性维度上的长度为δ,根据网格下标建立TTI树形索引,记录根节点的下标O.i,O.j,给出数据点p,在1*1的二维空间中,它的属性值为(p.x1,p.x2),利用数据点p所在网格节点的下标值p.i=[p.x1/δ],p.j=[p.x2/δ],和根节点o的下标值O.i,O.j,从根节点开始向下遍历,每向下一层p.i和p.j加1,当p.i=O.i或者p.j=O.j时,说明已经找到p所在的层,此时考虑三种情况:1)p.i=O.i∩p.j=O.j,p为当前层次的躯干节点,算法结束;2)p.i=O.i∩p.j≠O.j,说明p位于当前层次的右分支,O.j-p.j的值为指针向右走的步数;3)p.i≠O.i∩p.j=O.j,说明p位于当前层次的左分支,O.i-p.i的值为指针向左走的步数。
进一步,所述步骤3中计算网格的k支配能力时方法:通过当前节点下标值C.i,C.j与根节点下标值O.i,O.j的关系,计算在遍历过程中指针从每层躯干节点出发需要向左和向右走的步数,记为maxlstep,maxrstep,顶层的根节点向右需要走过的步数为maxlstep=O.i-C.i,向右需要走过的步数为maxrstep=O.j-C.j,先遍历左分支,再遍历右分支,在这一过程中遍历的节点数为maxlstep+1,maxrstep+1,每遍历一个节点,获取节点上网格的RN值,累加入result变量,在这一过程中,躯干节点的RN值在被累加了两次,在计算当前层次结束时减去一次当前层次躯干节点上网格RN值;每向下一层,将步数maxlstep和maxrstep减一,直到maxlstep或者maxrstep的值小于0,算法结束。
进一步,所述步骤3中计算判定单元方法:通过不断更新缩小左右标记值lefttab,righttab以减少需要遍历的节点,从顶层的根节点开始,指针往左遍历与躯干节点距离小于lefttab的网格节点直到找到判定单元,用中间变量R记下当前节点与本层躯干节点的距离,变量R同时用来判断是否已找到判定单元,若没找到,R的值为-1,在遍历当前分枝结束后用该值更新lefttab;结束一侧分支后重置R值;当前层次的lefttab和righttab用于裁剪下一层次的网格节点,每向下一层次,更新标记值,将lefttab和righttab减一,直到lefttab和righttab都为负数,算法结束。
本发明的有益效果是能够适应数据量的迅速增加和数据的动态变化,查询效率高。
附图说明
图1是本发明算法流程示意图;
图2是本发明TTI索引结构示意图;
图3是本发明对数据空间进行网格划分以及网格间支配关系示意图;
图4是GID-top-k算法整体结构示意图。
具体实施方式
下面结合具体实施方式对本发明进行详细说明:
(1)建立TTI索引;
在TTI索引中,存在躯干节点为网格Ci,j,则其左孩子为网格Ci-1,j,其右孩子为Ci,j-1,中孩子为Ci-1,j-1。若存在左分支节点Ci,j,则其孩子为Ci-1,j。若存在右分支节点Ci,j,则其孩子为Ci,j-1。建立索引模块首先需要将数据空间进行网格划分,网格在每个属性维度上的长度为δ,根据网格下标建立TTI树形索引,并初始化RN(cid)=0,plink→null,area=0,记录根节点的下标O.i,O.j,给出数据点p,在1*1的二维空间中,它的属性值为(p.x1,p.x2)它所在的网格编号Ci,j可以通过p.i=[p.x1/δ],p.j=[p.x2/δ]计算得到。图2所示为TTI索引,根节点为O,其中只有躯干上的节点有左中右孩子,称作躯干节点。其他节点均只有一个孩子,称为左分支节点和右分支节点。每个节点表示一个网格
从根节点开始向下遍历,每向下一层p.i和p.j加1,当p.i=O.i或者p.j=O.j时,说明已经找到p所在的层,此时考虑三种情况:p.i=O.i∩p.j=O.j,p为当前层次的躯干节点,算法结束;p.i=O.i∩p.j≠O.j,说明p位于当前层次的右分支,O.j-p.j的值为指针向右走的步数;p.i≠O.i∩p.j=O.j,说明p位于当前层次的左分支,O.i-p.i的值为指针向左走的步数。将p插入对应的网格中,并将对应网格中的RN(Ci,j)增加一,将area的值初始化为0。对数据集P中的数据进行一一插入,可得到每个网格中RN(cid)的值和plink指向的数据。在TTI索引中,在插入数据点时不需要遍历所有网格。以下是将一个数据插入网格的算法。循环该算法直到数据集为空。
(2)判断网格是否具有k支配能力
两个网格Ca1,a2,Cb1,b2,若存在a1>b1并且a2>b2,则Cb1,b2为Ca1,a2的子孙。网格中除了父子关系以外,还存在兄弟关系,若a1=b1∩a2>b2或者a1>b1∩a2=b2,则称Ca1,a2为Cb1,b2的胞兄,Cb1,b2为Ca1,a2的胞弟。
存在网格C,若C和C胞兄节点上的网格和所有支配C的网格中记录数量之和大于等于k,则称网格C是具有k支配能力的网格。存在网格C,C是具有k支配能力的网格,则所有被C所支配的网格中,不存在top-k的结果。若胞兄节点具有是k支配能力的网格,则胞弟节点一定也是具有k支配能力的网格。
通过当前节点与根节点位置关系,计算在遍历过程中指针从每层躯干节点出发需要向左和向右走的步数,记为maxlstep,maxrstep,顶层的根节点向右需要走过的步数为maxlstep=O.i-C.i,向右需要走过的步数为maxrstep=O.j-C.j,先遍历左分支,再遍历右分支,在这一过程中遍历的节点数为maxlstep+1,maxrstep+1(左右分支均包括躯干节点),每遍历一个节点,获取节点上网格的RN值,累加入result变量,在这一过程中,躯干节点的RN值在被累加了两次,在计算当前层次结束时减去一次当前层次躯干节点上网格RN值。每向下一层,将步数maxlstep和maxrstep减一,直到maxlstep或者maxrstep的值小于0,算法结束。例如,在图3中判断网格C3,4是否具有k支配能力,Ci,j表示网格,横纵坐标数值范围为0到1。在顶层累加左分支中RN(C5,5),RN(C4,5),RN(C3,5)值,右分支中RN(C5,5),RN(C5,4)值,减去一次RN(C5,5),指针向下一层,累加左分支中RN(C4,4),RN(C3,4)值,累加右分支RN(C4,4),减去一次RN(C4,4),算法结束,返回累加值。
(3)划分影响区及自由区
TTI索引每层有两个左右判定单元分别位于左右分支,为距离躯干节点最近并且具有k支配能力的网格。假设当前层次的左右判定单元与躯干节点的距离为lefttab,righttab,则下一层次左右判定单元与躯干节点的距离小于等于lefttab-1,righttab-1。设置左右标记对网格节点进行裁剪,初始化左右分支的标记值lefttab,righttab为无穷大,算法通过不断更新缩小左右标记值以减少需要遍历的节点。从顶层的根节点开始,指针往左遍历与躯干节点距离小于lefttab的网格节点直到找到判定单元,用中间变量R记下当前节点与本层躯干节点的距离,变量R同时用来判断是否已找到判定单元,若没找到,R的值为-1,在遍历当前分枝结束后用该值更新lefttab(若没找到判定单元说明判定单位与躯干节点的距离为lefttab,不更新lefttab)。结束一侧分支后重置R值。同理遍历右分支。当前层次的lefttab和righttab可用于裁剪下一层次的网格节点,每向下一层次,更新标记值,将lefttab和righttab减一。直到lefttab和righttab都为负数,算法结束。
TTI索引在数据进行插入,删除等操作时可依据网格下标对其进行定位,提高了建立和维护索引结构的效率。并且,TTI索引可根据网格在索引中的位置和网格的概要信息进行裁剪,通过判断网格是否具有“k支配能力”以及确定索引中的“判定单元”来划分自由区和影响区,提高了剪枝效率。算法的索引建立模块负责将初始数据插入TTI索引。算法的计算模块负责将网格分区并计算初始top-k结果,并当数据变化发生在影响区时,负责重新划分区域及计算。如图4所示为本发明GID-top-k算法整体结构示意图,表示了把划分网格的数据空间映射到TTI索引的规则以及索引中存储概要信息的数据结构。
本发明还具有以下优点:
(1)本发明基于网格分区top-k算法,提出了GID-top-k算法,提高了已有结构在目标对象属性值动态变化的情况下算法的效率。
(2)本发明在建立TTI索引时根据网格下标确定网格在索引中位置,以及从根节点到该位置的访问路径,避免遍历索引中所有网格,减少了建立索引的代价。
(3)本发明提出了k支配能力的概念,可根据判断遍历的网格是否具有k支配能力对索引结构进行向下裁剪,提高了裁剪效率。
(4)本发明利用判定单元和索引结构每个层次之间的关系减少需要判断是否具有k支配能力的网格数量,加速了遍历算法的结束。
以上所述仅是对本发明的较佳实施方式而已,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施方式所做的任何简单修改,等同变化与修饰,均属于本发明技术方案的范围内。

Claims (4)

1.一种基于网格索引的动态top-k查询方法,其特征在于包括如下步骤:
步骤1:首先将二维数据所在的区域划分成等大的若干个网格单元,每个网格单元内包括了落在该区域的数据,通过数据的属性值判断它所属的网格单元;
步骤2:建立TTI树形索引,索引包括躯干及左右分支部分,将网格插入索引中,索引上的每个节点用来存储一个网格单元;
步骤3:从TTI索引顶层躯干节点开始,向左右遍历通过网格中已有的概要信息计算网格的k支配能力,直至找到判定单元,利用判定单元划分影响区和自由区,并在影响区中计算top-k结果集;
步骤4:若属性值发生变化的数据落在自由区,则不需要更新top-k结果集。若数据变化发生在自由区,则经过插入和删除数据步骤后从步骤3开始重新计算top-k结果集。
2.按照权利要求1所述一种基于网格索引的动态top-k查询方法,其特征在于:所述步骤2中TTI索引中存在躯干节点为网格Ci,j,躯干节点的左孩子为网格Ci-1,j、右孩子为Ci,j-1、中孩子为Ci-1,j-1,将数据空间进行网格划分,网格在每个属性维度上的长度为δ,根据网格下标建立TTI树形索引,记录根节点的下标O.i,O.j,给出数据点p,在1*1的二维空间中,它的属性值为(p.x1,p.x2),利用数据点p所在网格节点的下标值p.i=[p.x1/δ],p.j=[p.x2/δ],和根节点o的下标值O.i,O.j,从根节点开始向下遍历,每向下一层p.i和p.j加1,当p.i=O.i或者p.j=O.j时,说明已经找到p所在的层,此时考虑三种情况:1)p.i=O.i∩p.j=O.j,p为当前层次的躯干节点,算法结束;2)p.i=O.i∩p.j≠O.j,说明p位于当前层次的右分支,O.j-p.j的值为指针向右走的步数;3)p.i≠O.i∩p.j=O.j,说明p位于当前层次的左分支,O.i-p.i的值为指针向左走的步数。
3.按照权利要求1所述一种基于网格索引的动态top-k查询方法,其特征在于:所述步骤3中计算网格的k支配能力时方法:通过当前节点下标值C.i,C.j与根节点下标值O.i,O.j的关系,计算在遍历过程中指针从每层躯干节点出发需要向左和向右走的步数,记为maxlstep,maxrstep,顶层的根节点向右需要走过的步数为maxlstep=O.i-C.i,向右需要走过的步数为maxrstep=O.j-C.j,先遍历左分支,再遍历右分支,在这一过程中遍历的节点数为maxlstep+1,maxrstep+1,每遍历一个节点,获取节点上网格的RN值,累加入result变量,在这一过程中,躯干节点的RN值在被累加了两次,在计算当前层次结束时减去一次当前层次躯干节点上网格RN值;每向下一层,将步数maxlstep和maxrstep减一,直到maxlstep或者maxrstep的值小于0,算法结束。
4.按照权利要求1所述一种基于网格索引的动态top-k查询方法,其特征在于:所述步骤3中计算判定单元方法:通过不断更新缩小左右标记值lefttab,righttab以减少需要遍历的节点,从顶层的根节点开始,指针往左遍历与躯干节点距离小于lefttab的网格节点直到找到判定单元,用中间变量R记下当前节点与本层躯干节点的距离,变量R同时用来判断是否已找到判定单元,若没找到,R的值为-1,在遍历当前分枝结束后用该值更新lefttab;结束一侧分支后重置R值;当前层次的lefttab和righttab用于裁剪下一层次的网格节点,每向下一层次,更新标记值,将lefttab和righttab减一,直到lefttab和righttab都为负数,算法结束。
CN201710713552.0A 2017-08-18 2017-08-18 一种基于网格索引的动态top‑k查询方法 Pending CN107515918A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710713552.0A CN107515918A (zh) 2017-08-18 2017-08-18 一种基于网格索引的动态top‑k查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710713552.0A CN107515918A (zh) 2017-08-18 2017-08-18 一种基于网格索引的动态top‑k查询方法

Publications (1)

Publication Number Publication Date
CN107515918A true CN107515918A (zh) 2017-12-26

Family

ID=60723252

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710713552.0A Pending CN107515918A (zh) 2017-08-18 2017-08-18 一种基于网格索引的动态top‑k查询方法

Country Status (1)

Country Link
CN (1) CN107515918A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108063731A (zh) * 2018-01-03 2018-05-22 烟台大学 一种分布式数据流中基于数据分布的负载均衡分发方法
CN113873031A (zh) * 2021-09-26 2021-12-31 南京翌淼信息科技有限公司 一种并行分布式大数据架构构建方法及系统
CN115080921A (zh) * 2022-07-27 2022-09-20 南京审计大学 一种基于审计敏感的改进的Top-k Dominating算法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108063731A (zh) * 2018-01-03 2018-05-22 烟台大学 一种分布式数据流中基于数据分布的负载均衡分发方法
CN113873031A (zh) * 2021-09-26 2021-12-31 南京翌淼信息科技有限公司 一种并行分布式大数据架构构建方法及系统
CN113873031B (zh) * 2021-09-26 2022-07-12 南京翌淼信息科技有限公司 一种并行分布式大数据架构构建方法及系统
CN115080921A (zh) * 2022-07-27 2022-09-20 南京审计大学 一种基于审计敏感的改进的Top-k Dominating算法

Similar Documents

Publication Publication Date Title
US8605092B2 (en) Method and apparatus of animation planning for a dynamic graph
CN102156725B (zh) 一种提高数据仓库查询性能的方法
Lin et al. Website reorganization using an ant colony system
CN106709035A (zh) 一种电力多维全景数据的预处理系统
CN106372190A (zh) 实时olap查询方法和装置
CN110222029A (zh) 一种大数据多维分析计算效率提升方法及系统
CN107515918A (zh) 一种基于网格索引的动态top‑k查询方法
CN104346444B (zh) 一种基于路网反空间关键字查询的最佳选址方法
CN105426992A (zh) 移动机器人旅行商优化方法
CN107766406A (zh) 一种采用时间优先搜索的轨迹相似性连接查询方法
CN109933620A (zh) 基于Spark的火电大数据挖掘方法
CN106897374A (zh) 一种基于轨迹大数据最近邻查询的个性化推荐方法
CN106503196A (zh) 云环境下可扩展存储索引结构的构建和查询方法
CN104102699B (zh) 一种聚簇图集合中的子图检索方法
Ali et al. The maximum trajectory coverage query in spatial databases
CN108681577A (zh) 一种新型的库结构数据索引方法
CN102004771B (zh) 基于动态裁剪的移动对象反向近邻查询方法
Yang et al. Recommending profitable taxi travel routes based on big taxi trajectories data
CN104809210B (zh) 一种基于分布式计算框架下海量数据加权top‑k查询方法
CN107704475A (zh) 多层分布式非结构化数据存储方法、查询方法及装置
CN107257356B (zh) 一种基于超图分割的社交用户数据优化放置方法
CN103345509B (zh) 获取路网上复反向最远邻居的层次分区树方法及系统
CN115438227A (zh) 一种基于差分隐私和紧密度中心性的网络数据发布方法
CN104794237B (zh) 网页信息处理方法及装置
Chen et al. Skyline path queries with aggregate attributes

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171226