Optimizing Subgraph Queries by Combining Binary and Worst-Case Optimal Joins

本文关注子图查询优化,提出了一种动态规划优化器,用于生成混合计划,结合了二元连接和最坏情况优化(WCO)连接。优化器基于代价,通过查询点序选择有效扩展部分匹配。文章还介绍了适应性技术,可以在查询执行过程中调整WCO子计划的顺序。
摘要由CSDN通过智能技术生成

本文由滑铁卢大学的Amine Mhedhbi和Semih Salihoglu发表

摘要

本文主要研究子图查询优化问题,并使用新的 worst-case optimal join plans
worst-case optimal join plans 通过使用多路交叉一次匹配一个查询顶点来评估查询。
其核心问题是选取一个查询点序。

本文中我们设计了一个基于代价的优化器,其作用是:
1、选取有效的查询点序。
2、生成混合计划,包含传统的Binary Join和 worst-case 风格的多路交叉。

同时描述了一个适应性技术,在查询执行中可以改变 worst-case optimal subplans 的序。


1. 相关介绍

子图查询是一个图数据库所支持的基本查询类,用来在一个输入图 G ( V , E ) G(V,E) G(V,E) 中找到一个子图查询实例 Q ( V Q , E Q ) Q(V_{Q}, E_{Q}) Q(VQ,EQ)

本文研究评估一个点和边都带有标签的子图查询类。对于有标签的查询,查询边对应的边表只包含G中和点和边标签一致的边。

子图查询使用两种方法评估:

  • Query-edge(s)-at-a-time
    • 执行一个Binary Join序列来评估Q。每个Binary Join有效地匹配G中Q的查询边的更大子集,直到Q匹配为止。
  • Query-vertex-at-a-time
    • 选取一个 V Q V_{Q} VQ 的查询点序,根据查询点序,使用多路连接符,匹配一次查询Q的一个查询点。使用 worst-case optimal join 算法计算,交合一个或多个点邻接列表来扩展部分匹配。

本文主要贡献

第一个主要贡献

动态规划优化器,可生成带有Binary Join和扩展/相交操作符通过一个查询点来扩展部分匹配。
优化器通过两种可替换的方法枚举计划,评估查询Q的k点子查询 Q k Q_{k} Qk k = 2 , . . . , m k=2,...,m k=2,...,m

  1. 两个更小的子查询的Binary Join
  2. 通过一次相交,用一个查询点扩展一个子查询 Q k − 1 Q_{k-1} Qk1

优化器使用 intersection cost (i-cost) 来排序 WCO 计划。
i-cost表示一个计划中相交的工作量,其使用计划中要相交的领接表的大小信息。

结合i-cost和Binary的代价来排序混合计划。

代价度量考虑输入图的属性,例如前后邻接表大小的分布,将作为计划的一部分计算的不同子图的匹配数。

我们使用子图目录来估计 i-cost, Binary Join的代价, 计划中会产生的部分匹配的数量。
子图目录包含:
(i) 输入图的领接表大小分布
(ii) 在小子图上对于不同相交的选择

第二个主要贡献

使用适应性技术来选取 WCO 中的查询点序。


2. 初步工作

Generic Join 是 WCO 连接的一个算法,每次计算查询的查询点有两步:

  1. Query Vertex Ordering (QVO)
  2. Iterative Partial Match Extensions

3. Optimizing WCO plans

展示内容:

  1. WCO plans
  2. 指定的不同 QVOs 的影响
  3. WCO plans 的 i-cost metric

WCO plans and E/I(Extend/Intersect) operator

使用两个操作符

Scan

计划中的叶节点,匹配一条查询边,使用一个 Scan 操作符来评估。Scan 操作符扫描图G中的前邻接表,匹配查询边上的标签,和它的起始点和终点,并且输出每个匹配成功的边作为 2-match。

Extend/Intersect

E/I操作符接收输入的(k-1)-matches,并将每个元组t扩展到一个或多个k-matches。
操作符配置了一个或多个邻接表描述符和目标点的标签 l k l_{k} lk
每个操作符是一个(i, dir, l e l_{e} le)元组,i是t中点的索引,dir是前或后的方向, l e l_{e} le是查询边上的标签。

对于每个(k-1)-match t,描述符首先通过相交所描述邻接表计算 t 的扩展集 S,确保匹配到特定的边和目标点标签,然后扩展 t 到 t × S 。
对于单个描述符,S是此描述符所描述的列表。否则使用迭代二路串联相交。

在一个 E/I 操作符连续处理的多个(k-1)-matches,如果它们进行相同的相交,则它们需要相同的扩展集。在这种情况下,我们的 E/I 操作符缓存并重复使用最近的扩展集。相交缓存可以全面提高 WCO 计划的性能。

Effects of QVOs

三个主要的因素影响相交工作和 WCO 运行时间:

  1. 相交的邻接表的方向
  2. 查询点序生成的中间部分匹配的数量
  3. 查询点序使用相交缓存的量

1. Directions of Intersected Adjacency Lists

邻接表方向组合的效率,依赖于输入图的结构性质,例如前后邻居表的分布。

2. Number of Intermediate Partial Matches

带尾三角状查询可由 WCO 两大类评估:

  1. Edge-2Path
  2. Edge-Triangle

∣ E ∣ |E| E 表示边的数量
∣ 2 P a t h ∣ |2Path| 2Path 表示2边路径
∣ △ ∣ |\bigtriangleup| 表示三角形的数量

在忽略扩展和相交的方向下,Edge-2Path完成 ∣ E ∣ |E| E次扩展加上 ∣ 2 P a t h ∣ |2Path| 2Path次相交,然而Edge-Triangle完成 ∣ E ∣ |E| E次相交加上 ∣ △ ∣ |\bigtriangleup| 次扩展。

QVOs产生更少的中间匹配,依赖于:

  1. 查询结构
  2. 对于带标签的查询,查询标签的选择
  3. 输入图的结构性质,图的聚集系数越低,中间产物越低

3. Intersection Cache Hits

如果QVO扩展(k-1)-matches,使用带索引 a 1 . . . a k − 2 a_{1}...a_{k-2} a1...ak2 的邻接表匹配到 a k a_{k} ak ,E/I操作符的相交缓存会使用更多。

使用 ( k − 1 ) t h (k-1)^{th} (k1)th 索引的相交不能重复使用,因为 a k − 1 a_{k-1} ak1 是前一个E/I操作符相交的结果,并且会匹配不同的点ID。
但是那些使用索引 a 1 . . . a k − 2 a_{1}...a_{k-2} a1...ak2 有重复使用的可能性。

缓存可以提供类似因式分解的好处。在因式分解处理中,查询结果表示为查询独立成分的笛卡尔积。

Cost Metric for WCO Plans

intersection cost(i-cost) 定义为被不同 WCO 计划使用和相交的邻接表的大小。

t t t Q k − 1 Q_{k-1} Qk1的一个(k-1)-match,假设 t t t通过相交一个使用邻接表描述符 A k − 1 A_{k-1} Ak1的邻接表的集合来扩展到 Q k Q_k Qk的实例。 σ \sigma σ的i-cost的形式为:

KaTeX parse error: Undefined control sequence: \substack at position 97: …Q_{k-1}} \sum_{\̲s̲u̲b̲s̲t̲a̲c̲k̲{(i,dir)\in A_{…

∣ t . d i r ∣ |t.dir| t.dir捕获不同方向上的邻接表的大小
第二个求和覆盖所有中间匹配,获取中间匹配的大小
最后一个求和覆盖所有使用的邻接表,忽略相交时已缓存的表。


4. Full Plan Space & DP Optimizer

完整的任务计划包括:Binary Join,E/I操作符,这些计划的代价以及动态规划优化器

Hybrid Plans and HashJoin Operator

一个计划是一个有根树

Q k Q_k Qk Q Q Q的一个投影,投射到k个查询点的一个任意集合

叶节点标记为 Q Q Q的单个查询边
根节点标记为 Q Q Q
每个内部点标记为 Q k Q_k Qk,是查询点的子集的投影

内部点 o k o_k ok要么有一个child,要么有两个children。

有一个子节点的 o k o_k ok标记为 Q k − 1 Q_{k-1} Qk1,是 Q k Q_k Qk的子图,其中点 q v ∈ V k q_v \in V_k qvVk

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值