【视频】入门实战:MiniOB 概述和环境搭建 | 学习笔记

简介: 快速学习【视频】入门实战:MiniOB 概述和环境搭建

开发者学堂课程【从0到1数据库内核实战教程【视频】入门实战:MiniOB 概述和环境搭建学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/1083/detail/16070


【视频】入门实战:MiniOB概述和环境搭建


内容介绍:

一、MiniOB 介绍

二、MiniOB GitHub/Gitee 使用说明

三、MiniOB 安装与调试


一、MiniOB 介绍

为什么要造 MiniOB?

image.png

数据库系统是非常基础的组件,它有以下特点:

学习难度大,要了解非常多的知识,有很多工作经验丰富的人经常使用 mysql 系统,但即使学习使用了很多年也很少有人精通数据库系统。实现难度更大;

数据库系统涉及的知识面非常广,如果要了解或实现一个数据库系统必须对操作系统、内存、网络等知识非常精通才能构建一个比较性能好的数据库系统,这还没有涉及数据库本身领域的一些知识。现在除了单机版数据库还有很多分布式方面的多机房等相关知识,知识面很广;

上手难度大,很难针对入门做数据库;

国内数据库系统发展晚,60年代国外的数据库已经起步,国内是最近几年才开始高速发展,完全的自主产权的国内数据库更是屈指可数,高校人才培养非常少,只有很少部分的学校专门针对数据库开发来培养人才,现在几年国内的数据库厂上都在大力投入数据库领域,因此人才匮乏;

学校在研究生阶段才会开设数据库实现课程,本科只开设如何使用以及基本原理等方面的课。

基于这些背景,做了一个 MiniOB。MiniOB的愿景:

吸引更多的同学参与到数据库系统的研发;让大家有兴趣,有能力去入门做数据库系统。希望同学们通过 MiniOB 的一系列课程能学习到很多数据库的底层原理。


二、MiniOB GitHub/Gitee 使用说明

MiniOB 框架:

image.png

MiniOB 是一个有一些基础功能的小数据库,功能模块设计的比较简单,主要为了学习,而且去年才起步,有些模块不是非常完美。如上图,左边是客户单,右边是服务端,通过客户端发起命令,通过网络通信跟服务端的网络模块去通讯触发命令,服务端的网络模块收到请求后送给 Paser 模块,经过词法解析和语法解析转发给 Plan Cache,它不做处理直接丢给 Resolver 模块,它将 Paser 解析出来的语法束(转化成树状结构对它进行描述解释,解释的内容用字符串表示)进一步细化,转化成比如需要查询一张表,把表的名字转化成具体的表对象,如果查询某个字段,那么会转换成对应的字段文字。

还可以做一些提前的预检,比如查询一张表,但是这张表不存在,那么可以提前返回错误,经过 Resolver 阶段会把处理的结果放到下两层 Transformer 和 Optimizer 优化,这两个阶段在有些数据库比如 Mysql 上面成为一个模块叫做优化,这里虽然划分为两个模块,但可能不会按照这个流程来执行,会多次循环在低成本情况下找到一个最优查询方案,Transformer 会根据一些规则去转换让后面的优化器更好的转化,比如在查询表时,有一个条件是 1=1,这个规则永远是真的,那么可以直接把这个条件删掉,经过规则转换后交给优化模块来根据比如统计数据,找到更好的查询路径,比如一个查询语句根据“索引”查数据,它需要判断是直接根据“索引”去查效果更好速度更快还是通过全表遍历更快,有时即使通过“索引”去查也不一定是快的,因为可能有一些回表,比如查了索引后还要再去数据文件里看一下去找对应的数据,如果对应的数据量比较多的话可能没有全表遍历的速度快。所以在这里会做判断然后选择比较好的查询计划,给后面的执行模块,原原本本的按照查询计划进行,去访问一些索引啊,或者去记录管理,访问底层的管理模块,把结果返回给网络模块,再返回给客户端。MiniOB 蛮适合入手学习,结构清晰而且比较简单。


三、MiniOB 安装与调试

1、MiniOB 开发调试环境搭建

编译

开发环境调试现在自测过的有 Make 机器,如果使用 Windows 的话可以使用 Docker如果想自己搭环境的话,需要安装CMake https://cmake.org/download/

可以装比较新的3.20。安装GCC,版本推荐8.3以上,如果操作系统比较老建议装8.3以上的。下载代码,安装依赖库,依赖库之前介绍过。

image.png

在文档目录下面 How to build 里会介绍怎么编译依赖库直接装到系统上就可以,如图所示。

image.png

编译miniob,还提供了一个 docker 容器,Dockfile 也直接提供出来了,直接在首页上可以看到,如图

image.png

可以自己 build 或者直接在官网上面拉。就是这个 oceanbase 开头的,运行起来很简单。

image.png

调试

目录上面已经编好了编译好后,build 下有个 bin,bin 下有个 observer 和 obclient,是重点关注的文件,后台运行,如图

image.png

运行起来后生成一个文件,调试的时候觉得挺烦人的,可以使用客户端连接上来,进行简单的查询,建表,插数据,在 build 时为了方便调试,建议使用 ddebug 模式进行编译。

相关文章
|
自然语言处理 数据库 开发者
MiniOB select - meta 实现解析 | 学习笔记
快速学习 MiniOB select - meta 实现解析
MiniOB  select - meta 实现解析 | 学习笔记
|
算法 C++ 索引
【算法】——全排列算法讲解
【算法】——全排列算法讲解
1150 0
|
存储 缓存 监控
一文读懂分布式架构知识体系(内含超全核心知识大图)
7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!马上投递简历:https://developer.aliyun.com/special/offerday01
20470 0
|
11月前
|
人工智能 Cloud Native Java
2025 开源之夏开启报名|AI + 云原生,10个开源项目、24个课题任您挑选
“开源之夏”是由中国科学院软件研究所发起的暑期活动,旨在鼓励高校学生参与开源软件开发与维护。活动联合各大开源社区提供项目任务,面向全球年满18周岁的高校学生开放报名。每位学生最多可申请一个项目。阿里云云原生提报了包括Apache Dubbo、RocketMQ、Seata等在内的10个开源项目共24个课题,涵盖技术优化、功能实现及AI应用等领域。活动流程包括选题、申请、开发与结项考核,具体信息可访问官网了解。
3061 32
|
人工智能 测试技术 API
Ollama本地模型部署+API接口调试超详细指南
本文介绍了如何使用Ollama工具下载并部署AI大模型(如DeepSeek-R1、Llama 3.2等)。首先,访问Ollama的官方GitHub页面下载适合系统的版本并安装。接着,在终端输入`ollama`命令验证安装是否成功。然后,通过命令如`ollama run Llama3.2`下载所需的AI模型。下载完成后,可以在控制台与AI模型进行对话,或通过快捷键`control+d`结束会话。为了更方便地与AI互动,可以安装GUI或Web界面。此外,Ollama还提供了API接口,默认支持API调用,用户可以通过Apifox等工具调试这些API。
|
存储 数据库 数据库管理
SQLite中的B-Tree实现细节分析
SQLite在存储在外部的数据库是以B-Tree来组织的。
394 8
|
机器学习/深度学习 算法 计算机视觉
【多标签文本分类】层次多标签文本分类方法
【多标签文本分类】层次多标签文本分类方法
1346 0
【多标签文本分类】层次多标签文本分类方法