Pengzna's blog 👋

Sep 25, 2022

CMU 15-445: 3. Hash Table

3. Hash Table

[CMU-15-445 Lecture 6 Hash Tables - 知乎 (zhihu.com)

3.1. Hash Function

3.2. Hash Scheme

3.2.1. static hash scheme

3.2.1.1. 线性

3.2.1.2. Robin Hood Hashing

  • 不清晰,需要学习一下

3.2.1.3. Cuckoo Hashing

  • 多个 hash 表,对应不同的 hash function

上述谈论的 3 种方案都是静态哈希,这就意味着哈希表的大小是固定的,我们必须提前知道我们想要保存的 key 的大概数量,这样才能知道如何分配空间使得其足够容纳并能最小化哈希碰撞。但是现实没有那么理想,一旦超过容量,就要扩容。扩容并非是直接 append 一段内存,一般来说得重建整个哈希表并迁移。当我们谈到分布式数据库时我们还会谈到一致性哈希算法,这个算法无需调整大小(令人期待的算法)。但是对于单机数据库中的哈希表,我们还是得重新构建,这也是动态的哈希所要解决的问题。

3.2.2. dynamic hash scheme

3.2.2.1. Chained Hashing

3.2.2.2. Extendible Hashing

  • 妙,但不好理解。多看看

3.2.2.3. Linear Hashing

3.2.3. 布隆过滤器

  • 这篇文章写的很好

布隆过滤器,这一篇给你讲的明明白白-阿里云开发者社区 (aliyun.com)

OLDER > < NEWER