介绍
leapfrog triejoin是商业数据记录系统 LogicBlox® 采用的一种新颖的连接算法,在不同的基准测试中表现出色。leapfrog triejoin论文的写作者认为这个算法,即使在完全连接的最坏情况下也能提供最优解,是NPRR算法(另外一个最坏情况下join优化算法)的竞争对手,并且leapfrog triejoin算法容易学习和实现,结论证明很简单。
论文地址:Leapfrog Triejoin: A Worst-case Optimal Join Algorithm – LogicBlox
Leapfrog Triejoin
Leapfrog Triejoin是sort merge join的一种变体。
定义几个接口:
- int key() 返回当前迭代器的位置
- next() 返回下一个迭代器位置
- seek(int seekKey) 返回>=seekKey的第一个迭代器的位置,没有就返回末尾
- bool atEnd() 查看迭代器是否在结尾,是就返回true
论文大概看了一下,单纯看算法实现,其实还挺简单的。
它可以计算A1 ∩ · · · ∩ Ak的交集,A1,A2,A...理解成数列就行。
用论文中的这个图来介绍一下算法的具体流程。