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

本文主要是介绍《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}
这里写图片描述
图2(a)展示了 q1 的一个查询计划,为了简化表示可用图2(b)表示图2(a)。查询计划有两个操作符:

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

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

    3.2 A Maximal Overlapping Driven Approach

    这里写图片描述
    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中的查询。然后本轮迭代结束,从未被处理的查询中,继续找共享因子。
    这里写图片描述

    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)) <script type="math/tex" id="MathJax-Element-150"> (rc^{'}\in \mathbb{RC}(K_i,G) and rc^{''}\in \mathbb{RC}(K_j,G))</script>。r-join操作从 <rc,rc′′> <script type="math/tex" id="MathJax-Element-151"> </script>中找出点对 <v,v> <script type="math/tex" id="MathJax-Element-152"> </script>其中 dist(v,vr) ,预计算所有点对的最短路径,然后成本 o=RC(Ki,G)RRC(Kj,G))

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

    ni RC(Ki,G) 的r-clique数量。因此成本与两个输入有关。
    这里写图片描述

    4.2 Estimating Cardinality of an r-Join Result

    对于给定的查询q,有
    这里写图片描述
    对于倒排列表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} ,
    这里写图片描述

    Estimating cardinality of an r-join between an r-clique set and an inverted list for a keyword.
    这里写图片描述

    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)> <script type="math/tex" id="MathJax-Element-177"> </script>。
    因此搜索空间中每个状态 si 是一个n元组 <pi1,...,pin> <script type="math/tex" id="MathJax-Element-179"> </script>其中 pij {NULL} 或者是对第i个查询的查询计划。搜索空间包含起始状态 s0=<NULL,...,NULL> 和几个最终状态 SF 。状态的值为所有查询的总和:

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

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

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

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

    pre_cost(si))=opcost^(o)

    这里写图片描述
    总结本文算法 EstPlan:如果任何状态 sj(ij),lb(si)<v(sj) ,算法继续是 si 状态,否则跳至 sj 状态。

    5.2 Reducing Search Space

    这里写图片描述
    这里写图片描述

    6. EXPERIMENT

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

这篇关于《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135463

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi