项目简介
MiniSQL是轻量级的关系型数据库管理系统,提供基本SQL查询和数据管理功能。该项目参考CMU - 15445 BusTub框架,进行修改和扩展以兼容原MiniSQL实验指导要求,支持缓冲池管理、索引管理、记录管理等核心功能,还提供持久化数据页分配回收状态的支持。
项目的主要特性和功能
- 缓冲池管理:管理从磁盘读取的页面,有页面生命周期管理、缓存策略等,提供页面获取、新建、删除、解引用和刷新功能。
- 索引管理:采用B + 树作为索引结构,支持插入、删除、查询等操作,提供索引创建、删除、扫描和迭代功能。
- 记录管理:管理数据库表中的行数据,支持插入、删除、更新、获取等操作,提供表页初始化、元组插入、标记删除、更新、应用删除、回滚删除等功能。
- SQL解析与执行:有简单的交互式SQL解析和执行引擎,支持用户输入SQL命令并执行,可进行SQL语句解析、语法树生成和执行。
- 持久化支持:通过内存对象的序列化和反序列化持久化数据,支持位图页、磁盘文件元数据页的持久化。
安装使用步骤
环境准备
- 编译器:
- MacOS: Apple clang version 11.0+
- Linux: gcc & g++ 8.0+
- 构建工具:
- cmake: 3.20+
- gdb: 7.0+ (可选)
- flex & bison (可选,用于修改SQL编译器的语法)
- 其他工具:
- llvm - symbolizer (可选)
构建项目
- 创建构建目录:
bash mkdir build cd build
- 生成构建文件:
bash cmake ..
- 编译项目:
bash make -j
- (可选)以发布模式编译:
bash cmake -DCMAKE_BUILD_TYPE=Release ..
运行测试
- 运行所有测试:
bash ./minisql_test
- 运行单个测试:
bash make <test_name>_test
使用示例
- 启动MiniSQL交互式SQL解析和执行引擎:
bash ./minisql
- 输入SQL命令并执行,例如:
sql CREATE TABLE example_table (id INT, name VARCHAR(255)); INSERT INTO example_table (id, name) VALUES (1, 'example'); SELECT * FROM example_table;
- 退出MiniSQL:
sql QUIT;
注意事项
- 为避免代码抄袭,请勿将代码发布到公共平台。
- 项目目前不支持Windows平台编译,可安装WSL(Windows的Linux子系统)进行开发和构建。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】