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

【源码】基于C++的MiniSQL数据库系统

项目简介

MiniSQL是轻量级的关系型数据库管理系统,提供基本SQL查询和数据管理功能。该项目参考CMU - 15445 BusTub框架,进行修改和扩展以兼容原MiniSQL实验指导要求,支持缓冲池管理、索引管理、记录管理等核心功能,还提供持久化数据页分配回收状态的支持。

项目的主要特性和功能

  1. 缓冲池管理:管理从磁盘读取的页面,有页面生命周期管理、缓存策略等,提供页面获取、新建、删除、解引用和刷新功能。
  2. 索引管理:采用B + 树作为索引结构,支持插入、删除、查询等操作,提供索引创建、删除、扫描和迭代功能。
  3. 记录管理:管理数据库表中的行数据,支持插入、删除、更新、获取等操作,提供表页初始化、元组插入、标记删除、更新、应用删除、回滚删除等功能。
  4. SQL解析与执行:有简单的交互式SQL解析和执行引擎,支持用户输入SQL命令并执行,可进行SQL语句解析、语法树生成和执行。
  5. 持久化支持:通过内存对象的序列化和反序列化持久化数据,支持位图页、磁盘文件元数据页的持久化。

安装使用步骤

环境准备

  1. 编译器
    • MacOS: Apple clang version 11.0+
    • Linux: gcc & g++ 8.0+
  2. 构建工具
    • cmake: 3.20+
    • gdb: 7.0+ (可选)
    • flex & bison (可选,用于修改SQL编译器的语法)
  3. 其他工具
    • llvm - symbolizer (可选)

构建项目

  1. 创建构建目录: bash mkdir build cd build
  2. 生成构建文件: bash cmake ..
  3. 编译项目: bash make -j
  4. (可选)以发布模式编译: bash cmake -DCMAKE_BUILD_TYPE=Release ..

运行测试

  1. 运行所有测试: bash ./minisql_test
  2. 运行单个测试: bash make <test_name>_test

使用示例

  1. 启动MiniSQL交互式SQL解析和执行引擎: bash ./minisql
  2. 输入SQL命令并执行,例如: sql CREATE TABLE example_table (id INT, name VARCHAR(255)); INSERT INTO example_table (id, name) VALUES (1, 'example'); SELECT * FROM example_table;
  3. 退出MiniSQL: sql QUIT;

注意事项

  • 为避免代码抄袭,请勿将代码发布到公共平台。
  • 项目目前不支持Windows平台编译,可安装WSL(Windows的Linux子系统)进行开发和构建。

下载地址

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