Skip to content

thu-db/huadb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
Mar 14, 2024
Mar 10, 2024
May 19, 2024
Apr 19, 2024
Mar 10, 2024
Sep 10, 2023
Sep 10, 2023
Feb 28, 2024
Mar 4, 2024
Mar 13, 2024
Jan 5, 2024
Mar 31, 2024
Jun 17, 2024

Repository files navigation

HuaDB

HuaDB 为清华大学数据库内核课程的实验框架,实验说明可参阅课程文档,课程资料可在课程主页查阅。

本课程于每年春季学期进行,最新版本为 2024-final 版。

如果在实验中遇到任何问题,可以在 Discussions 中讨论。如果发现了实验框架的 bug 可以提交 IssuePull request

编译与测试

运行如下命令进行编译:

make lab1-debug

你也可以通过设置 CMAKE_BUILD_PARALLEL_LEVEL 环境变量来并行编译:

CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) make lab1-debug

运行如下命令进入数据库交互界面:

make shell

代码结构

实验框架主要包含以下几个模块,加粗部分为实验中涉及到的、需要你来补充的模块:

  • binder: 语义解析模块
  • catalog: 系统表模块
  • common: 工具模块,包含字符串处理函数、异常相关类等
  • database: 数据库引擎
  • executors: 查询执行模块
  • log: 日志模块
  • operators: 查询计划树节点
  • optimizer: 优化器
  • planner: 查询计划生成模块
  • storage: 存储模块
  • table: 表相关类及函数
  • transaction: 事务模块

第三方库

本项目包含了如下第三方库代码:

  • argparse:使用 C++17 编写的命令行解析器,可以轻松定义用户友好的命令行参数
  • fmt: 提供了类似 Python 的字符串插值功能,可以方便地将变量插入到字符串中
  • libfort: 用于在终端输出表格,提供了表格布局和样式设置的功能
  • libpg_query: 由 DuckDB 改写的支持 PostgreSQL 语法的解析器,用于查询解析
  • linenoise: 用于创建交互式命令行界面,简化了用户输入的处理和历史记录的管理

致谢

在 HuaDB 的设计和开发过程中,我们参考了如下优秀的开源数据库项目,对他们的工作表示感谢:

  • BusTub: The BusTub Relational Database Management System (Educational)
  • DuckDB: An in-process SQL OLAP Database Management System
  • PostgreSQL: The World's Most Advanced Open Source Relational Database