目前大多数流行的存储引擎是基于 B-Tree 或 LSM-Tree 这两种数据结构来设计的
- 存储引擎:数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能
- 索引定义:对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息
- 索引作用:将磁盘上的数据读到内存并返回给应用,或将应用修改的数据由内存写到磁盘上
以下数据库的链接为官方文档内索引数据结构相关内容,截图所在教材章节已给出,想要深入学习的可进一步查看
一、关系型数据库
传统关系数据库主要采用B-Tree(广义B-Tree,包括B + ^+ +树及其变体)
1.1 B+树
包括 MySQL(InnoDB) 在内的大多数常见关系型数据库默认索引结构均为B + ^+ +树(或其更高版本)
- Oracle
- 《数据库系统概念 第6版》28.3.4节
- 《数据库系统概念 第6版》28.3.4节
- IBM DB2
- 《数据库系统概念 第6版》29.4.3节
- 《数据库系统概念 第6版》29.4.3节
- 微软 SQL Server
- 《数据库系统概念 第6版》30.3.4节
- 《数据库系统概念 第6版》30.3.4节
1.2 B-Link树
B-Link树是B + ^+ +树的高并发优化版本
- PostgreSQL
- 《数据库系统概念 第6版》27.5.2节
- 《数据库系统概念 第6版》15.10节-BLink树
- 《数据库系统概念 第6版》27.5.2节
二、NoSQL数据库
当前比较流行的NoSQL数据库存储引擎主要采用LSM(日志结构归并,Log Structured Merge)设计模式
- LSM:Cassandra,ElasticSearch(Lucene),Apache HBase,Google Bigtable,LevelDB,RocksDB
- B + ^+ +树:MongoDB(WiredTiger也有LSM接口,但没有实际应用)