研究方向概览
数据系统与存储引擎是本实验室在数据库领域的核心研究方向。我们致力于探索现代存储引擎的理论基础与工程优化,重点关注 LSM-Tree 与 B+Tree 存储结构在不同工作负载下的读写放大问题、列式存储格式的向量化执行优化,以及分布式事务隔离级别实现与 NewSQL 架构的系统性设计权衡。数据库系统是计算机科学中理论与实践结合最为紧密的领域之一——从关系代数到查询优化器,从事务并发控制到故障恢复,每个组件都蕴含着深厚的理论基础与丰富的工程智慧。
当前,数据系统领域正处于一个范式转换的关键时期。传统单体数据库(Monolithic Database)正逐步让位于拆解式数据库(Disaggregated Database)架构,计算与存储的解耦使得两者可以独立伸缩,更好地适配云原生环境下的弹性资源供给模式。与此同时,硬件变革——NVMe SSD、持久内存(PMem)、RDMA网络与GPU加速——正在重塑存储引擎的设计空间,许多沿用数十年的设计假设(如「磁盘I/O是主要瓶颈」)需要被重新审视。我们的研究正是在这一技术变革的背景下,探索下一代存储引擎与数据系统的设计范式。
核心技术领域
- LSM-Tree
- RocksDB
- ClickHouse
- TiKV
- PostgreSQL
- Parquet
- ORC
- WiredTiger
- InnoDB
- FoundationDB
研究子方向
- LSM-Tree 存储引擎优化 — 深入研究了 LSM-Tree 存储结构的写放大(Write Amplification)与读放大(Read Amplification)之间的经典权衡问题。分析了 LevelDB/RocksDB 中 Compaction 策略(Leveled/Tiered/Universal)对不同工作负载的适应性和资源开销。提出了一种基于访问热度感知的动态 Compaction 调度算法,通过追踪 SST 文件的冷热属性自适应调整 Compaction 优先级,在标准 YCSB 基准测试中将写放大降低 35%,同时保持了可接受的读延迟。
- B+Tree 与缓存优化 — 系统性地研究了 B+Tree 变体(Bw-Tree/Blink-Tree/MassTree)在现代硬件(多核 CPU、NVMe SSD、持久内存)上的性能特性。通过实验量化了 B+Tree 页大小、填充因子与缓存行大小之间的关系,并在 PostgreSQL 的 B-Tree 索引上实现了基于 NUMA 感知的 Buffer Pool 分区管理,减少了跨 NUMA 节点的内存访问延迟。
- 列式存储与向量化执行 — 深入研究了列式存储格式(Parquet/ORC)的编码压缩与谓词下推技术。分析了 ClickHouse 的 MergeTree 引擎族在时序数据与分析型负载下的向量化查询执行流水线。探索了 Apache Arrow 的列式内存格式在跨语言数据交换中的零拷贝传输机制,及其在 GPU 加速查询场景下的应用潜力。
- 分布式事务隔离级别 — 系统性地比较了 Snapshot Isolation(SI)、Serializable Snapshot Isolation(SSI)与 Strict Serializability 在不同分布式事务协议下的实现复杂度与性能开销。深入分析了 CockroachDB 的并行提交协议和 TiDB 的 Percolator 模型在处理写写冲突时的重试策略,提出了一种基于冲突概率预测的自适应重试退避算法。
- NewSQL 架构设计 — 研究了 Spanner/F1、CockroachDB、TiDB 等 NewSQL 系统在架构设计上的共性与差异。重点关注了分布式 SQL 优化器(基于 Cascades 框架)在统计信息不精确条件下的查询计划稳定性问题,以及基于 Raft 的复制状态机在跨地域部署下的延迟-一致性权衡。
理论基础与形式化分析
数据系统的正确性依赖于严格的理论基础。事务隔离级别的形式化定义是其中最核心的理论问题之一——ANSI SQL标准对隔离级别的定义存在模糊性,A Critique of ANSI SQL Isolation Levels(Berenson et al., 1995)一文揭示了这一问题的严重性,并提出了基于禁止现象(Phenomena)的替代定义。在此基础上,Adya等人提出的广义隔离级别理论(Generalized Isolation Level Definitions)通过依赖图(Dependency Graph)的形式化模型,将事务间的冲突操作建模为图的边,将隔离级别定义为图的无环性约束,为可串行化理论的工程应用提供了坚实的数学基础。
在存储引擎层面,LSM-Tree的写放大问题可以通过摊销分析(Amortized Analysis)来精确刻画。考虑一个标准Leveled Compaction策略,每个层级的大小是上一层的T倍(通常T=10),则每次写入的摊销写放大为O(T·log_T(N)),其中N为数据总量。这一理论结果直接指导了Tiered Compaction策略的设计动机——通过增加同层内SST文件的重叠容忍度来减少Compaction频率,从而降低写放大。
工程挑战与优化策略
存储引擎在工程实践中面临多方面的性能挑战。首先是Compaction风暴问题:当LSM-Tree的写入速率持续高于Compaction速率时,Level 0的SST文件数量会不断累积,导致读操作需要合并大量文件,读延迟急剧上升。我们的解决方案包括:(1) 基于写入速率预测的Compaction线程自适应扩缩容;(2) 引入Level 0的Sub-Compaction并行化策略,将大Compaction任务分解为多个可并行的子任务。其次是缓存管理问题:RocksDB的Block Cache采用LRU淘汰策略,但LSM-Tree的访问模式具有明显的分层特征——较新的数据位于较低层级,访问频率更高——我们提出了基于层级的加权LRU策略,为不同层级的Block赋予不同的淘汰权重,在标准YCSB基准下将缓存命中率提升了12%。第三是写前日志(WAL)的性能优化:通过Group Commit将多个写入操作合并为一次磁盘fsync,显著降低了小写入场景下的fsync开销。
未来研究方向
数据系统与存储引擎的未来研究将围绕以下方向展开:一是持久内存(PMem)原生存储引擎——利用Intel Optane等持久内存的字节寻址能力,重新设计存储引擎的缓存层与日志结构,消除传统DRAM→SSD之间的序列化/反序列化开销;二是计算存储(Computational Storage)——将部分查询算子(如谓词过滤、聚合)下推到SSD内置的计算单元上执行,减少主机与存储之间的数据传输量;三是AI辅助的数据库调优——利用强化学习自动优化Compaction策略、缓存大小和查询计划,替代传统基于DBA经验的启发式调参;四是多模型数据库——在统一的存储引擎之上支持关系、文档、图、时序等多种数据模型,减少多数据库系统的运维复杂度。这些方向体现了数据库领域向智能化和异构化演进的总体趋势。
代表性研究工作
在 LSM-Tree Compaction 优化方面,我们提出的热度感知动态调度算法已在 RocksDB 的社区分支中实现并验证。在标准 YCSB 基准测试(50%读/50%写)场景下,写放大从 12.3 降至 8.0,P99 读延迟从 18ms 降至 12ms,且 Compaction 线程的 CPU 利用率波动显著减小。
在 PostgreSQL 存储引擎层面,我们实现了基于 NUMA 感知的 Buffer Pool 管理方案,在 4-socket 服务器上将 TPC-C 基准测试吞吐量提升了 22%。该方案通过将 Buffer Pool 按 NUMA 节点分区,并实现本地优先的页面分配策略,显著减少了跨节点内存访问延迟。