本项目参考 MiniOB 是 OceanBase 团队基于华中科技大学数据库课程原型,联合多所高校重新开发的、专为零基础的同学设计的数据库入门学习项目。
MiniOB GitHub Pages
- 新建空仓库
- 输入MiniOB 地址进行迁移
- 迁移完成后,当前处于
detached HEAD 状态,需要进行如下操作
git checkout -b main origin/main
- 添加 .cnb.yml 文件, 指定镜像,减少环境打开时间
- 重新编写 README.md 文件
- 初始提交
git add .
git commit -m 'minion init on CNB'
git push origin main
- 迁移完成 重新打开。使用.cnb.yml 配置好的镜像,可以减少环境打开时间
即使只是改动 README.md 文件,也需要执行 git add README.md(或 git add .)来将修改加入暂存区。
./build.sh init
./build.sh build
./build/bin/observer -f ../etc/observer.ini -P cli
为了帮助开发者更好地上手并学习 MiniOB,建议阅读以下内容:
- MiniOB 框架介绍
- 如何编译 MiniOB 源码
- 如何运行 MiniOB
- 使用 GitPod 开发 MiniOB
- doxygen 代码文档
为了帮助大家更好地学习数据库基础知识,OceanBase社区提供了一系列教程。更多文档请参考 MiniOB GitHub Pages。建议学习:
- 《从0到1数据库内核实战教程》 视频教程
- 《从0到1数据库内核实战教程》 基础讲义
- 《数据库管理系统实现》 华中科技大学实现教材
MiniOB 整体架构如下图所示:
其中:
- 网络模块(NET Service):负责与客户端交互,收发客户端请求与应答;
- SQL解析(Parser):将用户输入的SQL语句解析成语法树;
- 语义解析模块(Resolver):将生成的语法树,转换成数据库内部数据结构;
- 查询优化(Optimizer):根据一定规则和统计数据,调整/重写语法树。(部分实现);
- 计划执行(Executor):根据语法树描述,执行并生成结果;
- 存储引擎(Storage Engine):负责数据的存储和检索;
- 事务管理(MVCC):管理事务的提交、回滚、隔离级别等。当前事务管理仅实现了MVCC模式,因此直接以MVCC展示;
- 日志管理(Redo Log):负责记录数据库操作日志;
- 记录管理(Record Manager):负责管理某个表数据文件中的记录存放;
- B+ Tree:表索引存储结构;
- 会话管理:管理用户连接、调整某个连接的参数;
- 元数据管理(Meta Data):记录当前的数据库、表、字段和索引元数据信息;
- 客户端(Client):作为测试工具,接收用户请求,向服务端发起请求。
MiniOB 采用 木兰宽松许可证,第2版, 可以自由拷贝和使用源码, 当做修改或分发时, 请遵守 木兰宽松许可证,第2版.