中文

Trie 连接中的灵活缓存

数据库 2016-03-01 v1

摘要

多路连接计算的传统算法基于重写连接顺序并组合中间子查询的结果。最近,针对“最坏情况最优”的算法提出了若干方法,其中所有关系被同时扫描。一个例子是 Veldhuizen 的 Leapfrog Trie Join (LFTJ)。LFTJ 的一个重要优势是其内存占用小,因为中间结果是可立即转储的完整元组。然而,由于该算法不存储中间结果,重复连接必须从源关系重建,导致过多的内存流量。在本文中,我们通过将缓存合并到 LFTJ 中来解决此问题。我们采用连接优化的最新进展,将变量排序与树分解相关联来实现这一点。虽然树分解的传统用法是预先计算每个包的结果,但我们提出的方法将缓存直接合并到 LFTJ 中,并能动态调整缓存大小。因此,我们的解决方案平衡了内存使用和重复计算,正如我们在 SNAP 数据集上的实验所证实的那样。

关键词

引用

@article{arxiv.1602.08721,
  title  = {Flexible Caching in Trie Joins},
  author = {Oren Kalinsky and Yoav Etsion and Benny Kimelfeld},
  journal= {arXiv preprint arXiv:1602.08721},
  year   = {2016}
}