logo
1
0
WeChat Login
minion init on CNB

MiniOB 介绍 文档

本项目参考 MiniOB 是 OceanBase 团队基于华中科技大学数据库课程原型,联合多所高校重新开发的、专为零基础的同学设计的数据库入门学习项目。 MiniOB GitHub Pages

迁移过程

  1. 新建空仓库
  2. 输入MiniOB 地址进行迁移
  3. 迁移完成后,当前处于 detached HEAD 状态,需要进行如下操作
git checkout -b main origin/main
  1. 添加 .cnb.yml 文件, 指定镜像,减少环境打开时间
  2. 重新编写 README.md 文件
  3. 初始提交
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,建议阅读以下内容:

  1. MiniOB 框架介绍
  2. 如何编译 MiniOB 源码
  3. 如何运行 MiniOB
  4. 使用 GitPod 开发 MiniOB
  5. doxygen 代码文档

为了帮助大家更好地学习数据库基础知识,OceanBase社区提供了一系列教程。更多文档请参考 MiniOB GitHub Pages。建议学习:

  1. 《从0到1数据库内核实战教程》 视频教程
  2. 《从0到1数据库内核实战教程》 基础讲义
  3. 《数据库管理系统实现》 华中科技大学实现教材

系统架构

MiniOB 整体架构如下图所示:

InternalNode

其中:

  • 网络模块(NET Service):负责与客户端交互,收发客户端请求与应答;
  • SQL解析(Parser):将用户输入的SQL语句解析成语法树;
  • 语义解析模块(Resolver):将生成的语法树,转换成数据库内部数据结构;
  • 查询优化(Optimizer):根据一定规则和统计数据,调整/重写语法树。(部分实现);
  • 计划执行(Executor):根据语法树描述,执行并生成结果;
  • 存储引擎(Storage Engine):负责数据的存储和检索;
  • 事务管理(MVCC):管理事务的提交、回滚、隔离级别等。当前事务管理仅实现了MVCC模式,因此直接以MVCC展示;
  • 日志管理(Redo Log):负责记录数据库操作日志;
  • 记录管理(Record Manager):负责管理某个表数据文件中的记录存放;
  • B+ Tree:表索引存储结构;
  • 会话管理:管理用户连接、调整某个连接的参数;
  • 元数据管理(Meta Data):记录当前的数据库、表、字段和索引元数据信息;
  • 客户端(Client):作为测试工具,接收用户请求,向服务端发起请求。

License

MiniOB 采用 木兰宽松许可证,第2版, 可以自由拷贝和使用源码, 当做修改或分发时, 请遵守 木兰宽松许可证,第2版.