一、 线性存储结构
用于存储有序 / 无序的一维线性数据,是所有复杂结构的基础,操作逻辑简单直观。数据元素呈线性排列,仅有一个首元素和一个尾元素,元素间为一对一关系。
|--------------|---------------------------|--------------------------------|--------------------------------|--------------------------------------------|
| 结构名称 | 关键特性 | 核心优势 | 核心劣势 | 典型适用场景 |
| 静态数组 | 连续内存空间,长度固定,支持下标随机访问 | 随机访问效率极高(O(1)),内存利用率高(无冗余指针) | 增删(非尾部)需移动元素(O(n)),长度不可动态调整 | 固定长度数据(如矩阵、配置参数列表)、高频随机访问场景(如系统常量池) |
| 链表(单/双/循环) | 非连续内存,节点通过指针连接,长度动态可变 | 增删节点仅需修改指针(O(1),找到节点后),无内存浪费 | 随机访问需遍历链表(O(n)),额外存储指针占用空间 | 频繁增删的动态列表(如消息队列、LRU缓存链表)、长度不确定的数据(如用户动态列表) |
| 栈 | 遵循"先进后出(LIFO)",仅允许操作栈顶元素 | 增删查操作均为O(1),逻辑极简,实现成本低 | 数据操作受限(仅能访问栈顶),不支持随机访问 | 函数调用栈、表达式求值(如计算器)、编辑器撤销功能、递归逻辑实现 |
| 队列 | 遵循"先进先出(FIFO)",仅允许队尾入、队首出 | 增删操作O(1),顺序存取高效,适配"排队"类场景 | 随机访问效率低(O(n)),中间元素无法直接操作 | 任务排队(线程池任务队列)、消息队列(MQ)、广度优先搜索(BFS)、打印机队列 |
| 跳表 | 有序链表+多级索引,通过索引层减少遍历次数 | 平均O(logn)增删查效率;实现比平衡树简单,支持范围查询 | 索引层占用额外空间(约为数据层的50%),插入删除需维护索引 | Redis有序集合(ZSet)底层、轻量级有序数据存储(如排行榜)、替代红黑树的场景 |
二、树形存储结构
通过树状层级结构+平衡机制,避免树退化为链表,将操作效率稳定在O(logn)级别,弥补线性结构有序查询慢的短板。以"节点-子节点"的层级关系组织数据,核心优化目标是"维持树的平衡",平衡度直接决定操作效率。
|------------|-----------------------------------|---------------------------------------|----------------------------------------------------------------|
| 结构名称 | 关键特性 | 核心优化点 | 典型适用场景 |
| B树 | 多路平衡查找树,每个节点可存储多个关键字,子节点数与关键字数匹配 | 减少磁盘IO次数:节点大小适配磁盘块,一次IO可读取多个关键字 | 数据库索引(如Oracle索引)、磁盘文件系统(如EXT4) |
| B+树 | B树变种,所有数据存于叶子节点,叶子节点通过链表串联 | 进一步优化磁盘IO:非叶子节点仅存索引;叶子链表支持高效范围查询 | MySQL/PostgreSQL等关系型数据库主键索引、磁盘存储的有序索引 |
| 红黑树 | 自平衡二叉查找树,节点标记红/黑双色,通过旋转和变色维持平衡 | 非严格平衡,插入/删除时旋转次数少,综合效率高(平衡与操作成本均衡) | Java TreeMap/TreeSet、C++ STL map/set、Linux内核内存管理、Redis有序集合辅助结构 |
| 堆(大顶/小顶) | 完全二叉树结构,满足"父节点值≥(大顶堆)/≤(小顶堆)子节点值" | O(1)获取最值,O(logn)增删;结构简单易实现,无需严格平衡 | 优先队列(高优先级任务调度)、TopK问题(如销量前N商品)、堆排序、任务池资源分配 |
| Trie树(字典树) | 按字符串前缀分层存储,根节点到叶子节点的路径对应一个完整字符串 | 前缀匹配效率极高(O(k),k为字符串长度),支持快速去重与检索 | 输入法联想、字典查询、IP路由表、手机号/邮箱前缀检索、字符串去重 |
| 线段树 | 二叉树,每个节点代表一个区间,支持区间查询与动态更新 | 区间操作(求和、最大值、最小值)效率O(logn),适配动态数据的区间统计 | 大数据区间统计(如按时间段统计销量)、算法竞赛区间问题、实时数据监控 |
三、哈希键值存储结构
通过哈希函数跳过遍历过程,将平均增删查效率提升至O(1),是键值存储的核心结构,广泛应用于内存与分布式存储。依赖哈希函数将"键"映射到固定存储位置,核心挑战是"解决哈希冲突"(常用链地址法、开放寻址法、再哈希法)。
|----------|-------------------------------------------|---------------------------------------|---------------------------------------------------------|
| 结构名称 | 关键特性 | 核心优势 | 典型适用场景 |
| 哈希表(散列表) | 数组+链表/红黑树组合,哈希函数映射键的存储下标,冲突时用链表/红黑树解决 | 平均O(1)增删查,是键值存储的最优选择;实现灵活,适配多种数据类型 | Python dict、Java HashMap、Redis String类型底层、缓存系统核心、用户信息查询 |
| 一致性哈希 | 哈希环结构,将节点和数据均映射到环上,通过顺时针查找确定数据存储节点 | 节点增减时仅少量数据迁移,解决分布式系统数据分片的稳定性问题 | Redis集群、分布式缓存(如Memcached集群)、Nginx哈希负载均衡、分布式存储分片 |
| 布隆过滤器 | 位图+多哈希函数组合,判断元素"可能存在"或"一定不存在"(无漏判,有极小误判率) | 空间利用率极高(1位存储1个状态),判重效率O(1),支持海量数据快速去重 | 缓存穿透防护、爬虫URL去重、海量数据存在性检查(如40亿手机号去重)、分布式系统黑名单 |
| 布谷鸟哈希 | 用2-3个哈希函数映射不同位置,冲突时"驱逐"旧元素到新位置,极限时扩容 | 空间利用率高(可达90%),查询速度稳定(最多查询2-3个位置) | 高性能缓存、嵌入式系统有限内存存储、高频读写的键值场景 |
四、图数据存储结构
专门存储"图数据"(由节点和边组成,节点间为"多对多"关系),适配不同密度的图(稠密图/稀疏图)与操作需求(查询边、遍历图、修改边)。围绕"节点"和"边"的关联关系设计,核心权衡"存储空间占用"与"边操作效率"。
|-------|-----------------------------------------|---------------------------------|--------------------------------------|-------------------------------------------|
| 结构名称 | 关键特性 | 核心优势 | 核心劣势 | 典型适用场景 |
| 邻接表 | 数组存储节点,每个节点关联一个链表存储其相邻节点 | 空间复杂度低(O(n+e),n为节点数,e为边数),适配稀疏图 | 查询两点是否相连需遍历链表(O(degree),degree为节点度数) | 社交网络(稀疏图)、路网规划(稀疏边)、图算法底层存储(如DFS/BFS) |
| 邻接矩阵 | 二维数组,matrix[i][j]表示节点i与j是否相连(或边的权重) | 查询两点是否相连效率O(1),判断图的连通性简单,支持矩阵运算 | 空间复杂度高(O(n²)),不适合稀疏图(大量空间浪费) | 小范围稠密图(如小型社交圈、电路拓扑图)、图的矩阵运算(如最短路径Floyd算法) |
| 十字链表 | 邻接表优化版,为有向图设计,节点同时存储"入边链表"和"出边链表" | 高效处理有向图的边增删、遍历(入边/出边单独管理) | 实现复杂,仅适配有向图,不适用于无向图场景 | 有向图频繁修改场景(如交通流向图、依赖关系图、任务调度依赖图) |
| 邻接多重表 | 邻接表优化版,为无向图设计,一条边仅存储一次,关联两个节点的链表 | 避免无向图边的重复存储,遍历效率高,修改边时仅需操作一次 | 实现复杂,不适用于有向图场景 | 无向图边操作(如电路拓扑图、无向路网分析、社交网络双向关系存储) |
五、多维空间存储结构
解决"二维/三维等高维数据"的高效查询问题(如范围查询、最近邻查询),核心是通过空间划分减少不必要的维度遍历,适配地理信息、3D建模等场景。按"空间区域"或"维度分层"划分数据,将高维问题转化为低维区域问题,优化空间查询效率。
|------|-------------------------------------|----------------------------|--------------------------------------|
| 结构名称 | 关键特性 | 核心优势 | 典型适用场景 |
| R树 | 多维平衡树,每个节点对应一个空间矩形,子节点矩形完全包含在父节点矩形内 | 适配任意维度的空间数据,支持范围查询与最近邻查询 | GIS系统空间索引、地图POI检索(如附近的餐厅)、遥感图像数据管理 |
| R*树 | R树优化版,通过强制重插入、优化分裂策略减少节点矩形重叠 | 空间查询效率比R树更高,稳定性更强,插入性能更优 | 高频更新的GIS系统、地图导航系统、大规模空间数据检索 |
| 四叉树 | 二维空间递归分割为四个象限,按区域存储数据,空区域不存储 | 空间区域划分清晰,支持高效范围查询,空区域不浪费空间 | 图像压缩、游戏碰撞检测(如游戏角色与障碍物检测)、二维地图分块管理 |
| 八叉树 | 三维空间递归分割为八个子空间,适配3D数据的区域管理 | 三维空间数据管理效率高,支持3D范围查询与碰撞检测 | 3D游戏场景管理、3D建模数据存储、三维地质勘探数据、VR/AR空间定位 |
| KD树 | k维空间二叉树,按维度循环划分数据空间(如二维先按x轴分,再按y轴分) | 高维数据最近邻查询效率高,实现比R树简单 | 机器学习KNN算法、推荐系统(相似用户/商品检索)、高维数据聚类 |
六、高效压缩存储结构
通过"位级存储"或"前缀合并"等方式极致压缩存储空间,适配海量数据的低成本存储需求,牺牲部分操作灵活性换取空间效率。空间利用率极高,操作逻辑聚焦于"判重""计数""前缀匹配"等特定场景,不适用于复杂数据修改。
|-------------|--------------------------------------------|-----------------------------------|----------------------------------------------|
| 结构名称 | 关键特性 | 空间优势 | 典型适用场景 |
| 位图(BitMap) | 用1位(bit)存储1个布尔状态(0/1),表示"元素是否存在"或"状态是否有效" | 存储效率是普通字节数组的8倍(1字节=8位),海量数据存储成本极低 | 40亿整数去重、用户在线状态统计(Redis Bitmaps)、布隆过滤器底层、权限标记 |
| 基数树(Radix树) | Trie树优化版,合并相同前缀的节点(如"abc"和"abd"共享"ab"前缀节点) | 比Trie树更节省空间,前缀匹配效率不变,支持快速插入/删除 | IP路由表、字符串字典存储、Redis有序集合底层优化、URL路由匹配 |
选择存储型数据结构的核心逻辑是"匹配数据特性与访问需求",具体可按以下维度决策:
1、一维数据:固定长度+高频随机访问→数组;频繁增删→链表;有序+高效查询→跳表;排队场景→队列;后进先出场景→栈。
2、有序数据:磁盘存储→B+树;内存有序集合→红黑树;字符串前缀匹配→Trie树;最值查询→堆;区间统计→线段树。
3、键值数据:内存键值存储→哈希表;分布式分片→一致性哈希;海量数据判重→布隆过滤器;高性能缓存→布谷鸟哈希。
4、图数据:稀疏图→邻接表;稠密图→邻接矩阵;有向图频繁修改→十字链表;无向图→邻接多重表。
5、高维/空间数据:二维地图→四叉树;三维数据→八叉树;GIS空间索引→R*树;高维最近邻→KD树。
6、海量数据压缩存储:布尔状态统计→位图;字符串字典→基数树。
现代数据库经典论文
(1)关系模型
A Relational Model of Data for Large Shared Data Banks.关系数据库创世之作,提出关系数据模型,基于集合论与一阶谓词逻辑定义数据组织方式,确立数据独立性 核心思想,获 ACM 图灵奖认可。https://dl.acm.org/doi/pdf/10.1145/362384.362685
Relational Completeness of Data Base Sublanguages.定义关系代数 与关系演算 等价性,证明 SQL 等关系数据库语言的表达能力边界,为查询优化提供理论依据.https://dl.acm.org/doi/pdf/10.1145/582072.582076
Normalized Data Base Structure: A Brief Tutorial.提出范式理论 (1NF-3NF),解决数据冗余与更新异常问题,成为数据库设计的核心准则.https://dl.acm.org/doi/pdf/10.1145/1282480.1282482
The Entity-Relationship Model---Toward a Unified View of Data.提出实体 - 关系(ER)模型 ,引入 ER 图作为概念数据建模工具,成为数据库设计的行业标准.https://dl.acm.org/doi/pdf/10.1145/320434.320440
(2)关系数据库系统实现
System R: Relational Approach to Database Management.首个关系数据库原型系统 :验证关系模型可行性,实现 SQL 语言、事务管理与查询优化,为 DB2 等商业数据库奠定工程基础.https://dl.acm.org/doi/pdf/10.1145/320473.320481
Access Path Selection in a Relational Database Management System.查询优化里程碑:提出 ** 基于代价的优化(CBO)** 框架,发明动态规划算法求解最优连接顺序,奠定现代数据库查询优化器核心架构.https://dl.acm.org/doi/pdf/10.1145/582250.582258
INGRES: A Relational Database System.并行于 System R 的关系数据库原型,提出查询分解 技术与自底向上的查询处理方法,推动 PostgreSQL 等开源数据库发展.https://dl.acm.org/doi/pdf/10.1145/320473.320482
The Design of the POSTGRES Storage System.提出 POSTGRES 存储系统架构,支持复杂数据类型、继承与规则系统,成为 PostgreSQL 的设计基础.https://dl.acm.org/doi/pdf/10.1145/38713.38740
(3)事务处理与一致性
The notions of consistency and predicate locks in a database system.首次明确定义事务 ACID 特性 (原子性、一致性、隔离性、持久性),提出谓词锁 机制解决并发控制问题.https://dl.acm.org/doi/pdf/10.1145/360363.360369
Aries: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging.事务恢复领域工业标准 :提出基于预写日志(WAL)的恢复算法,支持细粒度锁定与部分回滚,成为 Oracle、SQL Server 等商业数据库的核心恢复机制.https://dl.acm.org/doi/pdf/10.1145/146688.146693
Concurrency Control in Distributed Database Systems.分布式事务处理权威综述:系统阐述两阶段提交(2PC)、分布式锁协议等核心技术,为分布式数据库一致性保障提供完整框架.https://dl.acm.org/doi/pdf/10.1145/356842.356846.
Serializable Isolation for Snapshot Databases.提出 快照隔离机制,通过多版本并发控制(MVCC)实现高并发读写,成为 PostgreSQL、MySQL 等主流数据库的默认隔离级别.https://dl.acm.org/doi/pdf/10.1145/1376616.1376690.
(4)查询优化
Volcano: An Extensible and Parallel Query Evaluation System提出可扩展查询执行框架 :采用迭代器模型与火山式执行方式,支持并行查询处理,成为现代数据库查询引擎标准架构.https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=283846
The Cascades Framework for Query Optimization.升级 Volcano 框架,提出基于规则与代价混合优化 的级联式搜索策略,支持复杂查询的高效优化,被 SQL Server 采用.https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=476308
MonetDB/X100: Hyper-Pipelining Query Execution.开创列存储数据库 性能革命:提出向量化执行与超流水线技术,大幅提升分析型查询(OLAP)性能,奠定 MonetDB、ClickHouse 基础.https://cidrdb.org/cidr2005/papers/P19.pdf
Parallel Database Systems: The Future of High Performance Database Processing.并行数据库领域里程碑综述 :系统阐述共享内存、共享磁盘与无共享三种并行架构,推动 Teradata、Netezza 等并行数据库发展.https://dl.acm.org/doi/pdf/10.1145/128765.128770
(5)分布式数据库
Bigtable: A Distributed Storage System for Structured Data.分布式结构化存储标杆:设计稀疏、分布式、持久化多维排序映射表,支持 PB 级数据存储,成为 HBase、Cassandra 等 NoSQL 数据库的设计范本.https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf
Dynamo: Amazon's Highly Available Key-Value Store.高可用分布式存储典范:提出最终一致性 模型,引入向量时钟、一致性哈希与去中心化架构,支撑亚马逊电商核心业务.https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
Cassandra: A Decentralized Structured Storage System.融合 Dynamo 与 Bigtable 优势:实现无中心架构 与列族存储 结合,支持高写入吞吐量与弹性扩展https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Lakshman.pdf
TAO: Facebook's Distributed Data Store for the Social Graph.社交图数据存储行业标准 :设计面向读优化的分布式数据存储系统,支持万亿级关系查询,支撑 Facebook 核心社交功能.https://www.usenix.org/system/files/conference/atc13/atc13-bronson.pdf
Spanner: Google's Globally-Distributed Database.全球分布式 SQL 里程碑:通过 TrueTime API 提供外部一致性 ,支持跨大洲事务与 SQL 查询,实现 ACID 与全球扩展性的平衡.https://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf
A Distributed SQL Database That Scales.基于 Spanner 构建的分布式 OLTP 数据库 :解决大规模事务处理中的延迟与可用性挑战,提供自动分片、故障转移与强一致性.https://dl.acm.org/doi/pdf/10.1145/2463676.2465228
CockroachDB: The Resilient Geo-Distributed SQL Database.开源分布式 SQL 代表:基于 Raft 协议实现一致性,支持自动分片、跨地域部署与灾备恢复.https://dl.acm.org/doi/pdf/10.1145/3183713.3196909
Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases.提出计算 - 存储分离 架构,将数据库日志直接写入云存储,大幅提升吞吐量与可用性,成为云原生关系数据库标杆https://dl.acm.org/doi/pdf/10.1145/3035918.3056103
(6)存储引擎
B-Trees for Virtual Memory.B 树结构奠基论文,专为虚拟内存设计,支持高效动态平衡查找,成为所有数据库索引的基础.https://dl.acm.org/doi/pdf/10.1145/321694.321697
The Log-Structured Merge-Tree (LSM-Tree).正式提出 LSM 树理论,通过顺序写 + 后台合并优化写入性能,成为 NoSQL 存储引擎核心架构.
B+-Trees: A Dynamic Index Structure for Multi-Attribute Data.系统优化 B + 树结构,叶子节点链表连接、非叶子节点仅存索引,成为关系数据库主键索引标准结构.https://dl.acm.org/doi/pdf/10.1145/320083.320095
ARIES/IM: An Efficient and High Concurrency Index Management Method Using Write-Ahead Logging.基于 Aries 算法提出事务性索引管理方案,支持细粒度锁定与崩溃恢复,成为事务存储引擎核心技术https://dl.acm.org/doi/pdf/10.1145/170035.170083
C-Store: A Column-oriented DBMS.提出列式存储架构,针对 OLAP 场景优化数据压缩与查询效率,奠定现代数据仓库存储引擎基础.
(7)时空数据库
R-Trees: A Dynamic Index Structure for Spatial Searching.空间索引奠基作 :提出 R 树多维空间索引结构,支持点、矩形、多边形等空间对象的高效查询,成为 GIS 与时空数据库的基础.https://dl.acm.org/doi/pdf/10.1145/97169.98740
The R-Tree: An Efficient and Robust Access Method for Points and Rectangles *.R 树优化版,通过强制重新插入 与重叠最小化 策略提升查询性能,成为时空索引的工业标准实现https://dl.acm.org/doi/pdf/10.1145/93597.98741