中文

拒绝抖动:如何在闪存上缓存哈希

数据库 2012-08-02 v1

摘要

本文提出了广为人知的布隆过滤器(Bloom filter)数据结构的替代方案。布隆过滤器是一种支持集合插入和成员查询的紧凑数据结构,已广泛应用于数据库、存储系统和网络中。由于布隆过滤器执行频繁的随机读写操作,它几乎 exclusively 用于 RAM 中,限制了其可表示集合的大小。本文首先描述了商过滤器(quotient filter),它支持布隆过滤器的基本操作,在空间和时间性能上大致相当,但具有更好的数据局部性。商过滤器的操作仅需少量连续访问。相较于布隆过滤器,商过滤器还具有其他优势:支持删除操作、可动态调整大小,且两个商过滤器可以高效合并。随后,本文给出了两种数据结构:缓冲商过滤器(buffered quotient filter)和级联过滤器(cascade filter),它们利用了商过滤器的优势,从而成为针对 SSD 优化的布隆过滤器替代方案。级联过滤器具有比缓冲商过滤器更好的渐近 I/O 性能,但缓冲商过滤器在中小规模数据集上表现更优。这两种数据结构均显著优于近期提出的 SSD 优化布隆过滤器变体,如电梯布隆过滤器(elevator Bloom filter)、缓冲布隆过滤器和森林结构布隆过滤器。实验表明,级联过滤器和缓冲商过滤器的插入速度比最快的布隆过滤器变体快 8.6 至 11 倍,查找速度快 0.94 至 2.56 倍。

关键词

引用

@article{arxiv.1208.0290,
  title  = {Don't Thrash: How to Cache Your Hash on Flash},
  author = {Michael A. Bender and Martin Farach-Colton and Rob Johnson and Russell Kraner and Bradley C. Kuszmaul and Dzejla Medjedovic and Pablo Montes and Pradeep Shetty and Richard P. Spillane and Erez Zadok},
  journal= {arXiv preprint arXiv:1208.0290},
  year   = {2012}
}

备注

VLDB2012