1
- < div align = " center " >
1
+ # MiniOB 介绍
2
2
3
+ <div align =" left " >
4
+
5
+ [ ![ Chinese Doc] ( https://img.shields.io/badge/文档-简体中文-blue )] ( https://oceanbase.github.io/miniob/miniob-introduction.html )
6
+ [ ![ MiniOB stars] ( https://img.shields.io/badge/dynamic/json?color=blue&label=stars&query=stargazers_count&url=https%3A%2F%2Fapi.github.com%2Frepos%2Foceanbase%2Fminiob )] ( https://github.com/oceanbase/miniob )
3
7
[ ![ Coverage Status] ( https://codecov.io/gh/oceanbase/miniob/branch/main/graph/badge.svg )] ( https://codecov.io/gh/oceanbase/miniob )
4
8
5
9
</div >
6
10
7
- # MiniOB 概述
8
-
9
- MiniOB 是 [ OceanBase] ( https://github.com/oceanbase/oceanbase ) 团队基于华中科技大学数据库课程原型,联合多所高校重新开发的、专为零基础的同学设计的数据库入门学习项目。我们的目标是为在校学生、数据库从业者、爱好者或对基础技术感兴趣的人提供一个友好的数据库学习项目。
11
+ MiniOB 是 [ OceanBase] ( https://github.com/oceanbase/oceanbase ) 团队基于华中科技大学数据库课程原型,联合多所高校重新开发的、专为零基础的同学设计的数据库入门学习项目。MiniOB 的目标是为在校学生、数据库从业者、爱好者或对基础技术感兴趣的人提供一个友好的数据库学习项目,更好地将理论、实践进行结合,提升同学们的工程实战能力。
10
12
11
13
MiniOB 整体代码简洁,容易上手,设计了一系列由浅入深的题目,帮助同学们从零基础入门,迅速了解数据库并深入学习数据库内核。MiniOB 简化了许多模块,例如不考虑并发操作、安全特性和复杂的事务管理等功能,以便更好地学习数据库实现原理。我们期望通过 MiniOB 的训练,同学们能够熟练掌握数据库内核模块的功能和协同关系,并具备一定的工程编码能力,例如内存管理、网络通信和磁盘 I/O 处理等, 这将有助于同学在未来的面试和工作中脱颖而出。
12
14
13
15
# [ 文档] ( https://oceanbase.github.io/miniob/ )
14
- 代码配套文档和相关代码注释已经生成文档 ,并通过 GitHub Pages 发布。您可以直接访问:[ MiniOB GitHub Pages] ( https://oceanbase.github.io/miniob/ ) .
16
+ 代码配套设计文档和相关代码注释已经生成文档 ,并通过 GitHub Pages 发布。您可以直接访问:[ MiniOB GitHub Pages] ( https://oceanbase.github.io/miniob/ ) .
15
17
16
18
## 快速上手
17
19
@@ -40,16 +42,16 @@ MiniOB 整体架构如下图所示:
40
42
41
43
- SQL解析:将用户输入的SQL语句解析成语法树;
42
44
43
- - 执行计划缓存:执行计划缓存模块会将该 SQL第一次生成的执行计划缓存在内存中,后续的执行可以反复执行这个计划,避免了重复查询优化的过程(未实现)。
44
-
45
- - 语义解析模块:将生成的语法树,转换成数据库内部数据结构(部分实现);
46
-
47
- - 查询缓存:将执行的查询结果缓存在内存中,下次查询时,可以直接返回(未实现);
45
+ - 语义解析模块:将生成的语法树,转换成数据库内部数据结构;
48
46
49
47
- 查询优化:根据一定规则和统计数据,调整/重写语法树。(部分实现);
50
48
51
49
- 计划执行:根据语法树描述,执行并生成结果;
52
50
51
+ - 存储引擎:负责数据的存储和检索;
52
+
53
+ - 事务管理:管理事务的提交、回滚、隔离级别等;
54
+
53
55
- 会话管理:管理用户连接、调整某个连接的参数;
54
56
55
57
- 元数据管理:记录当前的数据库、表、字段和索引元数据信息;
@@ -59,43 +61,38 @@ MiniOB 整体架构如下图所示:
59
61
60
62
# [ OceanBase 大赛] ( https://open.oceanbase.com/competition )
61
63
62
- 2022 OceanBase 数据库大赛是由中国计算机学会(CCF)数据库专业委员会指导,OceanBase 与蚂蚁技术研究院学术合作团队联合举办的数据库内核实战赛事。本次大赛主要面向全国爱好数据库的高校学生,以“竞技、交流、成长”为宗旨,搭建基于赛事的技术交流平台,促进高校创新人才培养机制,不仅帮助学生从0开始系统化学习数据库理论知识,提升学生数据库实践能力,更能帮助学生走向企业积累经验,促进国内数据库人才的发展,碰撞出创新的火花。
64
+ 全国大学生计算机系统能力大赛(以下简称“大赛”)是由系统能力培养研究专家组发起,全国高等学校计算机教育研究会、系统能力培养研究项目示范高校共同主办、OceanBase 承办,面向高校大学生的全国性数据库大赛。
65
+ 大赛面向全国爱好数据库的高校学生,以“竞技、交流、成长”为宗旨,搭建基于赛事的技术交流平台,促进高校创新人才培养机制,不仅帮助学生从0开始系统化学习 OceanBase 数据库理论知识,提升学生数据库实践能力,更能帮助学生走向企业积累经验,促进国内数据库人才的发展,碰撞出创新的火花。
63
66
64
67
OceanBase 初赛基于一套适合初学者实践的数据库实训平台 MiniOB,代码量少,易于上手学习,包含了数据库的各个关键模块,是一个系统性的数据库学习平台。基于该平台设置了一系列由浅入深的题目,以帮助同学们更好"零"基础入门。
65
68
66
- 2023 OceanBase 数据库大赛正在火热进行, 更多详情, 请参考 [ OceanBase 大赛 ] ( https://open.oceanbase.com/competition/index ) 。
67
-
68
- ### 1. 大赛手把手入门教程
69
+ 为了帮助大家能在大赛中取得好成绩,我们提供了一系列的教程和指导,帮助大家更好地学习数据库基础知识,更好地完成大赛题目 。
70
+ 欢迎大家查看 [ 《从0到1数据库内核实战教程》 视频教程 ] ( https://open.oceanbase.com/activities/4921877?id=4921946 ) ,视频中包含了代码框架的介绍和一些入门题目的讲解。
71
+ > 由于MiniOB是一个持续演进的产品,视频教程中有些内容会与最新代码有冲突,建议大家参考讲解中的思路。
69
72
70
- [ 大赛入门教程] ( https://oceanbase.github.io/miniob/game/gitee-instructions.html )
71
-
72
- ### 2. 大赛赛题
73
-
74
- [ 赛题介绍] ( https://oceanbase.github.io/miniob/game/miniob_topics.html )
75
-
76
- ### 3. 提交测试
77
-
78
- 题目完成并通过自测后,大家可以在 [ MiniOB 训练营] ( https://open.oceanbase.com/train?questionId=500003 ) 上提交代码进行测试。
73
+ 大赛的初赛是在MiniOB上进行的,同学们可以在前几届的题目上进行提前训练,可以让自己比别人提前一步。大家在日常训练时可以在[ MiniOB 训练营] ( https://open.oceanbase.com/train?questionId=500003 ) 上提交代码进行测试。
79
74
80
75
在提交前, 请参考并学习 [ 训练营使用说明] ( https://ask.oceanbase.com/t/topic/35600372 ) 。
81
76
82
- ### 4. 大赛FAQ
83
-
84
- [ 大赛 FAQ ] ( https://ask.oceanbase.com/t/topic/35601465 )
77
+ 如果大家在大赛中或使用训练营时遇到一些问题,请先查看[ 大赛 FAQ] ( https://ask.oceanbase.com/t/topic/35601465 ) 。
85
78
86
79
# 在线开发平台
87
80
88
- 本仓库基于 Gitpod 建立了快速在线开发平台。点击下面的按钮即可一键体验(建议使用 Chrome 浏览器)。
81
+ 搭建开发环境是一个比较耗时而且繁琐的事情,特别是对于初学者。为了让大家更快地上手 MiniOB, 本仓库基于 Gitpod 建立了快速在线开发平台。点击下面的按钮即可一键体验(建议使用 Chrome 浏览器)。
89
82
90
83
[ ![ Open in Gitpod] ( https://gitpod.io/button/open-in-gitpod.svg )] ( https://gitpod.io/#https://github.com/oceanbase/miniob )
91
84
85
+ > 注意:这个链接打开的是MiniOB主仓库的开发环境,同学们需要通过gitpod进入自己的仓库开发环境。
86
+
92
87
首次进入 Gitpod 时需要安装一些依赖。安装完成后,终端界面会显示 "Dependency installed successfully"。运行 ` bash build.sh --make -j4 ` 命令即可编译 MiniOB。
93
88
94
89
# Contributing
95
90
96
- OceanBase 社区热情欢迎每一位对数据库技术热爱的开发者,期待与您携手开启思维碰撞之旅。无论是文档格式调整或文字修正、问题修复还是增加新功能,都是参与和贡献 OceanBase 社区的方式之一。现在就开始您的首次贡献吧!更多详情,请参考 [ 社区贡献] ( CONTRIBUTING.md ) .
91
+ OceanBase 社区热情欢迎每一位对数据库技术热爱的开发者,期待与您携手开启思维碰撞之旅。无论是文档格式调整或文字修正、问题修复还是增加新功能,都是参与和贡献 OceanBase 社区的方式之一。MiniOB 现在开放了一些 [ 新功能的开发 ] ( https://github.com/oceanbase/miniob/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22 ) ,欢迎有兴趣的同学一起共建,希望我们共同成长。如果你对MiniOB不熟悉也没关系,可以直接联系我们,我们将会有人指导上手。 现在就开始您的首次贡献吧!更多详情,请参考 [ 社区贡献] ( CONTRIBUTING.md ) 。
97
92
98
93
# Contributors
94
+ 感谢所有为 MiniOB 项目做出贡献的同学们!
95
+
99
96
<a href =" https://github.com/oceanbase/miniob/graphs/contributors " ><img src =" https://contributors-img.web.app/image?repo=oceanbase/miniob&width=890 " /></a >
100
97
101
98
# License
0 commit comments