全国大学生计算机系统能力大赛数据库管理系统赛道,以培养学生“数据库管理系统内核实现”能力为目标。本次比赛为参赛队伍提供数据库管理系统代码框架RMDB,参赛队伍在RMDB的基础上,设计和实现一个完整的关系型数据库管理系统,该系统要求具备运行TPC-C基准测试(TPC-C是一个面向联机事务处理的测试基准)常用负载的能力。
RMDB由中国人民大学数据库教学团队开发,同时得到教育部-华为”智能基座”项目的支持,平台、赛题和测试用例等得到了全国大学生计算机系统能力大赛数据库管理系统赛道技术委员会的支持和审核。系统能力大赛专家组和101计划数据库系统课程工作组给予了指导。
- 操作系统:Ubuntu 18.04 及以上(64位)
- 编译器:GCC
- 编程语言:C++17
- 管理工具:cmake
- 推荐编辑器:VScode
- gcc 7.1及以上版本(要求完全支持C++17)
- cmake 3.16及以上版本
- flex
- bison
- readline
欲查看有关依赖运行库、编译工具、项目结构和运行方式的更多说明,请查阅 RMDB项目结构。
src/rmdb.cpp:服务端入口,负责数据库打开/创建、恢复、TCP 连接处理和 SQL 分发。rmdb_client/main.cpp:通过 TCP/Unix socket 与服务端交互的客户端。src/parser/:SQL 词法、语法解析和 AST 定义。src/analyze/:表、列、类型、谓词、分组、连接和聚合的语义检查。src/optimizer/:逻辑计划和优化,包括索引选择、谓词/投影下推、连接顺序、排序和explain。src/execution/:插入、删除、更新、顺序扫描、索引扫描、连接、投影和排序等执行器。src/system/:元数据和 DDL 管理,包括表/索引创建删除、show tables、desc和元数据持久化。src/storage/:磁盘管理器、页抽象和缓冲池。src/replacer/:缓冲池替换策略,主要为 LRU。src/record/:记录文件、记录页和记录扫描。src/index/:B+ 树索引和索引扫描。src/transaction/:事务、锁、时间戳、MVCC、写集合和回滚。src/recovery/:日志、redo/undo、崩溃恢复和检查点。src/unit_test.cpp:低层模块的 GoogleTest 单元测试。tests/:本地回归测试,包括 SQL 用例、期望输出和 Python/C++ 运行器。docs/:项目、竞赛和测试文档,题目文档位于docs/task/。deps/:第三方依赖和子模块,包括deps/TPCC-Tester。
本地回归测试位于 tests/,TPC-C 性能测试流程和测试负载代码位于 deps/TPCC-Tester/。
RMDB采用木兰宽松许可证,第2版,可以自由拷贝和使用源码, 当做修改或分发时, 请遵守木兰宽松许可证,第2版.
