Efficient Batch Processing for Multiple Keyword Queries on Graph Data

摘要

目前的关键词查询只关注单个查询。对于查询系统来说,短时间内会接受大批量的关键词查询,往往不同查询包含相同的关键词。 
因此本文研究图数据多关键词查询的批处理。为多查询和单个查询找到最优查询计划都是非常复杂的。我们首先提出两个启发式的方法使关键词的重叠最大并优先处理规模小的关键词。然后设计了一个同时考虑了数据统计信息和搜索语义的基于cardinality的成本估计模型。

1. 介绍

在过去的十年中,网络搜索技术发展迅速。用户依赖搜索引擎为了不断增加的信息分享和其他需求,在此过程中取代了其他的打印,电子和人类信息资源。相似的,数据库服务提供者希望给用户提供一个能够对多种信息进行关键词搜索的接口。现在大部分的关于关键词搜索的研究只关注单个关键词搜索,在实际中不实用。 
(接下来举例说明批搜索处理的重要性) 
第三方公司作为重要的数据用户为了优化其业务可能通过批查询执行数据分析和挖掘潜在数据。对在短时间内接收到的大量查询在几分之一秒内返回结果十分重要。目前特定领域的搜索引擎被广泛使用。通常其潜在数据是高度结构化的,往往被表示成图结构。对于流行的特定领域搜索引擎,短时间内会接收到大量的查询,并且这些查询共享关键词的可能性非常高。因此对批量的关键词应答会显著提高特定领域搜索引擎的性能。 
(介绍相关工作) 
本文研究图数据上关键词搜索的批处理问题,目标是在最小化总时间成本的前提下处理一组关键词查询。批量查询处理是数据库领域的经典问题。Sellis et.al 将SQL查询拆分成子查询并且保证批中每个SQL查询能够被子查询应答。但其有时可能会需要维护所有子查询的中间结果,这样会导致高昂的空间花销和额外的IO成本。Roy et. al.通过对比pipeline成本和重用成本对子查询的中间结果重用和重计算进行了平衡。Jacob and Ives解决了关系数据库中批量的交互关键词查询问题,在他们的工作中,关键词搜索语义通过candidate networks定义,需要提前知道关系型数据库的schema。 
(问题的独特性) 
在对不同内容的批查询和图数据库上的单个关键词查询处理的相关工作调研后,我们发现现有技术无法解决“图数据上批量关键词查询”问题。 
原因如下:

  1. Meaningful Result Semantics: 因为r-clique能够发现给出关键词的最紧密的关系,所以r-clique能很好的定义图数据上关键词搜索的语义。但没有研究使用该meaningful result semantics的批查询处理工作。
  2. Complexity of the Optimal Batch Processing: NP完全问题。因为每个查询对应几个查询计划,我们不能枚举出所有的单个查询的结合方式来得到最优的查询计划。
  3. Not-available Query Historic Information: 我们在执行查询之前不需要假设知道任何子查询的结果,因为此类历史信息不可获取。

即便我们简单的按照预定义的顺序处理批查询并重用中间结果,也不能保证我们能够最优的处理批查询。为解决该问题,我们首先开发了两个启发式的方法首先处理规模较小且关键词重合度高的关键词。然后设计了一个cardinality estimation cost model通过考虑图的连通性和result semantics of r-clique. 基于该成本模型我们通过拓展A∗A∗搜索算法得到一个最优的批查询计划,并为A∗A∗设计了剪枝规则。

本文贡献如下:

  • 我们提出并研究了在原始图数据上进行批关键词查询的新问题。
  • 证明该问题是NP完全的,并在考虑了批关键词查询的特点后设计两个启发式的规则解答该问题。
  • 为了最优的执行批查询,我们设计了一个基于估计的成本模型去评估可能子查询的计算成本,然后用来计算批查询的最优计划。
  • 在DBLP和IMDB数据集上测试。

2. 预赛和问题定义

2.1 Keyword Query on Graph Data

Native graph data. 原始图数据G(V,E)G(V,E)包含点集V(G)V(G)和边集E(G)E(G)。 
点v∈V(G)v∈V(G)可能包含一些文本,可被表示为v.KS={v.key1,...,v.keyz}v.KS={v.key1,...,v.keyz}. 把有文本的点称为content vertex. 
边e∈E(G)e∈E(G)是一对点(vi,vj)(vi,vj∈V)(vi,vj)(vi,vj∈V).两点之间的路径表示为dist(vi,vj)dist(vi,vj),路径最短即边最少。

Query processing for Single keyword query. 给定在图G上的查询q={k1,...,km}q={k1,...,km},q的结果是G的一系列子图,每个子图都用G的r-clique表示为RC(q,G)RC(q,G)生成。 
对于查询q1{k1,k2,k3,k4}q1{k1,k2,k3,k4},让r=1。如图1所示q1q1的一个结果是{v7,v8,v10}{v7,v8,v10} 
 
图2(a)展示了q1q1的一个查询计划,为了简化表示可用图2(b)表示图2(a)。查询计划有两个操作符:

  • σki(G)σki(G)选择图G中匹配关键词kiki的节点。为使该操作更加高效,我们为每个关键词建立了节点的倒排列表,所以该操作的花费为O(1)。查询计划的成本主要依赖于连接操作。
  • ⋈R⋈R连接两个r-cliques。 

An r-clique is a group of content nodes that cover all the input keywords and the distance between each two nodes is less than or equal to r. 
——《Keyword search in graphs:Finding r-cliques.》

2.2 Batched Multiple-Keyword Queries

批处理查询最naive的解决方法是一个接一个的处理查询,如图2(b)和图2(c)所示,显然这样并不高效,理想情况下,我们希望共享一些查询处理的中间结果以避免重复计算。如图2(d)中所示,关键词k1k3k1k3和关键词k1k3k4k1k3k4的中间结果被共享。 
Problem definition 给定一个批关键词查询Q={q1,...,qn}Q={q1,...,qn},目标是构建一个查询计划p(Q)optp(Q)opt使得QQ中的所有子查询成本最小。这是一个典型的NP完全问题。 
问题的重要性:

  • 一个查询可能有多个查询计划,我们不可能枚举所有查询的查询计划的组合找到最优的结果。
  • RC(K1∪K2,G)=RC(K1,G)⋈RRC(K2,G)RC(K1∪K2,G)=RC(K1,G)⋈RRC(K2,G)。 RC(K1∪K2,G)RC(K1∪K2,G)的大小并不和RC(K1,G)RC(K1,G)RC(K2,G)RC(K2,G)成比例,因此不易预测 RC(K1∪K2,G)RC(K1∪K2,G)的大小。

3. HEURISTIC-BASED APPROACHES

3.1 A Shortest List Eager Approach

首先提出一个方法Basic,其主要思想在于按顺序处理批查询中的每个查询,对于每个查询qi∈Qqi∈Q从最短的列表开始连接,如Rule1所示。

Rule 1. Given two inverted lists of keywords kiki and kjkj, respectively. RC({ki},G)RC({ki},G) takes precedence to r-join with the existing intermediate results, if the list of kiki is shorter than that of kjkj.

 
算法1展示了Basic算法的细节,避免处理被处理过的关键词。对每轮迭代,对于被处理过的关键词,它用处理过关键词的最大集合的中间结果。对于未处理的关键词,它与有最小集合的关键词进行join。 
显然该方法优于最简单的挨个处理的方法。

3.2 A Maximal Overlapping Driven Approach

 
Basic 算法不能充分利用共享的关键字。因为优先处理较为频繁出现的共享关键词能够使更多的查询获益,我们提出了算法2。

Definition 1. Sharing factor. Given a batch query Q={q1,...,qn}Q={q1,...,qn}, for any two queries qi,qj∈Q(i≠j)qi,qj∈Q(i≠j), we use the intersection of qiqi and qjqj to express their overlapped keywords, which is called sharing factor of qiqi and qjqj, denoted SF(qi,qj)SF(qi,qj). SF(qi,qj)=qi∩qjSF(qi,qj)=qi∩qj

Rule 2. Given a batch Q and let S be the set of sharing factor w.r.t. Q. For any two sharing factors SFiSFi and SFjSFj in S, RC(SFi,G)RC(SFi,G) takes precedence over RC(SFj,G)RC(SFj,G) if |SFi|⋅freq(SFi)>|SFj|⋅freq(SFj)|SFi|⋅freq(SFi)>|SFj|⋅freq(SFj), where freq(SF) is the frequency of SF in Q.

Rule 2平衡了出现频率和共享因子长度。

算法首先计算Q中所有查询的共享因子,在line 5按照规则2找到需要处理的共享因子sf。对共享因子sf找到其子共享因子sfcsfc,然后计算RC(sf,G)RC(sf,G),进而计算sf的超集,一直到Q中的查询。然后本轮迭代结束,从未被处理的查询中,继续找共享因子。 

4 COST ESTIMATION FOR QUERY PLANS

最大化overlap并不意味查询计划的成本最低。本节提出首先提出查询计划的估计方式,然后基于对成本估计生成最佳的查询计划。

4.1 Cost of an r-Join

对于任何r-clique pair <rc′,rc′′>(rc′∈RC(Ki,G)andrc′′∈RC(Kj,G))<rc′,rc″>(rc′∈RC(Ki,G)andrc″∈RC(Kj,G))。r-join操作从 <rc′,rc′′><rc′,rc″>中找出点对 <v,v′><v,v′>其中dist(v,v′≤r)dist(v,v′≤r),预计算所有点对的最短路径,然后成本o=RC(Ki,G)⋈RRC(Kj,G))o=RC(Ki,G)⋈RRC(Kj,G)) 

cost(o)=O(ni×nj×|Ki|×|Kj|)cost(o)=O(ni×nj×|Ki|×|Kj|)


nini是RC(Ki,G)RC(Ki,G)的r-clique数量。因此成本与两个输入有关。 

 

4.2 Estimating Cardinality of an r-Join Result

对于给定的查询q,有 
 (2)
对于倒排列表L(K)中的一个点v,如果对每个v′∈RC(q {k},Gv′∈RC(q {k},G都有dist(v,v′)>rdist(v,v′)>r则v对于RC(q,G)RC(q,G)没有贡献。那么这样的v对于参数r来说就是invalid vertex。我们构建了一个valid inverted list Lrv(k)Lvr(k),构建过程如下:对所有v′v′其关键词不包含v,如果v到所有的v′v′路径都大于r,则v点invalid。pr(v)pr(v)是v′∈RC(q {k},G)v′∈RC(q {k},G)使得dist(v,v′)≤rdist(v,v′)≤r的可能性。则

|RC|(q,G)=pr(v)×|Lrv(k)|×|RC(q {k},G)||RC|(q,G)=pr(v)×|Lvr(k)|×|RC(q {k},G)|

 

Estimating cardinality of an r-join between two inverted lists for keywords. 对于Q={q1,q2}Q={q1,q2}, 

Estimating cardinality of an r-join between an r-clique set and an inverted list for a keyword. (4)

5. ESTIMATION-BASED QUERY PLANS

基于查询计划的估计成本,我们使用最先进的A∗A∗算法找到全局最优的查询计划。首先展示如何为A∗A∗算法构建搜索空间,然后介绍如何剪枝。

5.1 Finding Optimal Solution based on Estimated Cost

使用A∗A∗算法将问题转化为状态空间搜索问题。 
Search space. 批查询Q={q1,...,qn}Q={q1,...,qn}的搜索空间S(Q)S(Q)可以表示为S(Q)={P(q1)×...×P(qn)}S(Q)={P(q1)×...×P(qn)}其中P(qi)P(qi)是对于qiqi的一系列查询计划。对于批处理查询Q的全局查询计划形式如下<p1∈P(q1),...,pn∈P(qn)><p1∈P(q1),...,pn∈P(qn)>。 
因此搜索空间中每个状态sisi是一个n元组<pi1,...,pin><pi1,...,pin>其中pijpij是{NULL}{NULL}或者是对第i个查询的查询计划。搜索空间包含起始状态s0=<NULL,...,NULL>s0=<NULL,...,NULL>和几个最终状态SFSF。状态的值为所有查询的总和:

v(si)=∑p∈si,p≠NULLcost(p)v(si)=∑p∈si,p≠NULLcost(p)

所以我们的目的是找到最小的v(sf)v(sf)。

 

为了算法快速收敛,lower bound 函数lb(si)lb(si)提出,旨在剪枝中间结果,决定是否从si−1si−1到sisi

lb(si)=v(si−1+pre_cost(si))lb(si)=v(si−1+pre_cost(si))


上式是说从si−1si−1到sisi 当对qiqi执行查询计划p′p′时至少需要pre_cost(si))pre_cost(si))

 

 

pre_cost(si))=∑o∈p′cost^(o)pre_cost(si))=∑o∈p′cost^(o)


 
总结本文算法EstPlan:如果任何状态sj(i≠j),lb(si)<v(sj)sj(i≠j),lb(si)<v(sj),算法继续是sisi状态,否则跳至sjsj状态。

 

5.2 Reducing Search Space

 

6. EXPERIMENT

Basic——the Shortest List Eager Approach 
Overlap——the Maximal Overlapping Driven Approach 
EstPlan——A∗A∗ based algorithm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值