《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记

ABSTRACT

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

1. INTRODUCTION

在过去的十年中,网络搜索技术发展迅速。用户依赖搜索引擎为了不断增加的信息分享和其他需求,在此过程中取代了其他的打印,电子和人类信息资源。相似的,数据库服务提供者希望给用户提供一个能够对多种信息进行关键词搜索的接口。现在大部分的关于关键词搜索的研究只关注单个关键词搜索,在实际中不实用。
(接下来举例说明批搜索处理的重要性)
第三方公司作为重要的数据用户为了优化其业务可能通过批查询执行数据分析和挖掘潜在数据。对在短时间内接收到的大量查询在几分之一秒内返回结果十分重要。目前特定领域的搜索引擎被广泛使用。通常其潜在数据是高度结构化的,往往被表示成图结构。对于流行的特定领域搜索引擎,短时间内会接收到大量的查询,并且这些查询共享关键词的可能性非常高。因此对批量的关键词应答会显著提高特定领域搜索引擎的性能。
(介绍相关工作)
本文研究图数据上关键词搜索的批处理问题,目标是在最小化总时间成本的前提下处理一组关键词查询。批量查询处理是数据库领域的经典问题。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设计了剪枝规则。

本文贡献如下:

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

2. PRELIMINARIES AND PROBLEM DEFINITIONS

2.1 Keyword Query on Graph Data

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

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

  • σki(G)选择图G中匹配关键词ki的节点。为使该操作更加高效,我们为每个关键词建立了节点的倒排列表,所以该操作的花费为O(1)。查询计划的成本主要依赖于连接操作。
  • R连接两个r-cliques。
    《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记

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)中所示,关键词k1k3和关键词k1k3k4的中间结果被共享。
Problem definition 给定一个批关键词查询Q={q1,...,qn},目标是构建一个查询计划p(Q)opt使得Q中的所有子查询成本最小。这是一个典型的NP完全问题。
问题的重要性:

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

3. HEURISTIC-BASED APPROACHES

3.1 A Shortest List Eager Approach

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

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

《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记
算法1展示了Basic算法的细节,避免处理被处理过的关键词。对每轮迭代,对于被处理过的关键词,它用处理过关键词的最大集合的中间结果。对于未处理的关键词,它与有最小集合的关键词进行join。
显然该方法优于最简单的挨个处理的方法。

3.2 A Maximal Overlapping Driven Approach

《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记
Basic 算法不能充分利用共享的关键字。因为优先处理较为频繁出现的共享关键词能够使更多的查询获益,我们提出了算法2。

Definition 1. Sharing factor. Given a batch query Q={q1,...,qn}, for any two queries qi,qjQ(ij), we use the intersection of qi and qj to express their overlapped keywords, which is called sharing factor of qi and qj, denoted SF(qi,qj). SF(qi,qj)=qiqj

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

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

算法首先计算Q中所有查询的共享因子,在line 5按照规则2找到需要处理的共享因子sf。对共享因子sf找到其子共享因子sfc,然后计算RC(sf,G),进而计算sf的超集,一直到Q中的查询。然后本轮迭代结束,从未被处理的查询中,继续找共享因子。
《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记

4 COST ESTIMATION FOR QUERY PLANS

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

4.1 Cost of an r-Join

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

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

niRC(Ki,G)的r-clique数量。因此成本与两个输入有关。
《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记

4.2 Estimating Cardinality of an r-Join Result

对于给定的查询q,有
《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记
对于倒排列表L(K)中的一个点v,如果对每个vRC(q {k},G都有dist(v,v)>r则v对于RC(q,G)没有贡献。那么这样的v对于参数r来说就是invalid vertex。我们构建了一个valid inverted list Lrv(k),构建过程如下:对所有v其关键词不包含v,如果v到所有的v路径都大于r,则v点invalid。pr(v)vRC(q {k},G)使得dist(v,v)r的可能性。则

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

Estimating cardinality of an r-join between two inverted lists for keywords. 对于Q={q1,q2},
《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记

Estimating cardinality of an r-join between an r-clique set and an inverted list for a keyword.
《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记

5. ESTIMATION-BASED QUERY PLANS

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

5.1 Finding Optimal Solution based on Estimated Cost

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

v(si)=psi,pNULLcost(p)
所以我们的目的是找到最小的v(sf)

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

lb(si)=v(si1+pre_cost(si))

上式是说从si1si 当对qi执行查询计划p时至少需要pre_cost(si))

pre_cost(si))=opcost^(o)

《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记
总结本文算法EstPlan:如果任何状态sj(ij),lb(si)<v(sj),算法继续是si状态,否则跳至sj状态。

5.2 Reducing Search Space

《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记
《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记

6. EXPERIMENT

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