littlebot
Published on 2025-04-07 / 0 Visits
0

【源码】基于C++的BusTub存储引擎

项目简介

BusTub是卡内基梅隆大学CMU 15 - 445课程的Lab项目,目标是实现一个基础的存储引擎。此项目包含缓冲池管理、索引管理、并发控制、日志记录与恢复等核心功能模块,有助于学生深入理解数据库系统的内部工作原理。

项目的主要特性和功能

1. 缓冲池管理(Buffer Pool)

  • 负责物理页面在主内存和磁盘间的移动,使DBMS能支持大于系统可用内存量的数据库。
  • 采用LRU缓存替换策略,减少磁盘IO次数,提升性能。
  • 利用互斥锁保证缓冲池的线程安全性。

2. 索引管理(Index)

  • 以B + 树作为底层数据结构,实现多级索引,支持快速随机查找和有序记录的高效访问。
  • 多线程并发访问时,使用节点粒度的锁保证线程安全。
  • 沿访问路径加锁,仅锁住分支,减小临界区,提高并发访问性能。

3. 并发控制(Concurrency Control)

  • 实现锁管理器,支持并发查询执行,跟踪元组级锁,支持共享锁和排他锁的授予与释放。
  • 在后台线程使用等待有向图实现定时的死锁检测算法,通过Abort开始时间晚的事务并回滚来打破死锁。
  • 实现了READ_UNCOMMITED、READ_COMMITTED和REPEATABLE_READ三种常见隔离级别。

4. 日志记录与恢复(Logging & Recovery)

  • 在No - Force/Steal缓冲策略下实现先写日志,记录页面级写入操作和事务命令。
  • 采用物理逻辑日志,并使用日志顺序号保证物理逻辑redo操作的幂等性。
  • 设计日志缓冲区,将多条日志记录在缓冲区后一次输出到稳定储存器,减小系统开销。
  • 采用No - Force策略,事务只需等待提交日志输出到稳定储存器即可提交,无需等待修改数据全部写入磁盘,加快事务提交速度。

安装使用步骤

1. 环境准备

  • 确保系统安装了C++编译器(如GCC或Clang)。
  • 安装CMake用于项目构建。

2. 复制项目

bash cd Bustub

3. 构建项目

bash mkdir build cd build cmake .. make

4. 运行测试

bash ctest

5. 运行项目

bash ./bustub_executable

通过以上步骤,可成功构建并运行BusTub存储引擎项目,对其核心功能进行测试和验证。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】