NOTE
2.19 索引
1. 索引是什么 - 索引是一种把查找关键字和对应的数据记录关联起来(可以看作key-value对)的数据结构 - 索引查找是通过索引来查找数据 2. 为什么需要索引 - 用来加速数据的查找 3. 稀疏索引 vs 稠密索引 - 稀疏索引.md 4. 正排索引 vs 倒排索引 - 倒排索引.md 5.
这是历史学习笔记,可能存在过时或不完整的理解。
1. 索引是什么
- 索引是一种把查找关键字和对应的数据记录关联起来(可以看作key-value对)的数据结构
- 索引查找是通过索引来查找数据
2. 为什么需要索引
- 用来加速数据的查找
3. 稀疏索引 vs 稠密索引
4. 正排索引 vs 倒排索引
5. 如何实现索引
5.1. 有序数组
5.2. HashMap
5.3. BitMap
5.4. BloomFilter
5.5. SSTable
5.6. 红黑树
5.7. B+树
5.8. SkipList
6. 如何选择索引实现
- 数据是格式化数据还是非格式化数据
- 数据是静态数据还是动态数据
- 索引存储在内存还是硬盘
- 单值查找还是区间查找
- 单关键词查找还是多关键词组合查找
6.1. Hash vs SSTable
| Hash | SSTable | |
|---|---|---|
| 是否全部放入内存 | 是 | 否 |
| 查询效率 | 等值查询效率高 | 范围查询效率高 |
| Key是否重复 | 否 | 是 |