B-Tree
倒排
- B 树如果每个内部节点存的是具体的value,叶子节点存 id,那么这就是个倒排
- 真实场景中,的确有不少搜索引擎是这么存倒排的
正排
- 如果内部节点存 Id,叶子节点存内容,这就是个正排
- 真实场景中,mysql 的 pk 索引就是这么存的
- 行存列存
+ 如果正排的 B-tree 的叶子节点存的是一行的值,那么这就是行存,反之,如果是一列的值,就是列存
存储结构
- 存储结构就是数据真实落盘的方式,是物理层面的真实结构
- 根据不同的数据结构有不同的存储结构
- 一般而言,B-Tree 就是索引文件落盘,而 HashTable 则可以以散列存储。
- 目前基本都是索引结构落盘,不同产品的具体实现均不相同。
- 如 IBM 的VSAM就是存储 B-tree 的一种文件格式,由三部分组成:索引集,顺序集和数据集
列存与倒排
- 回到开头的问题,列存和倒排到底是什么关系呢?
- 列存是一种正排的存储思想,和倒排没什么关系
- 一般由于搜索引擎的排序都是少数列的,所以一般搜索引擎都是精确查询用倒排,比较算分用列存
参考资料
来源: https://yq.aliyun.com/articles/70363