【视频】入门实战: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 模式进行编译。

相关文章
|
存储 监控 负载均衡
Redis如何处理大量数据?
Redis高效处理大数据依赖内存存储、多样数据结构及优化策略:选择适合的数据结构,利用批量操作减少网络开销,控制批量大小避免性能下降,通过Redis Cluster分布式存储扩展处理能力,优化内存使用和序列化,监控系统性能并持续调优。
581 4
|
算法 C++ 索引
【算法】——全排列算法讲解
【算法】——全排列算法讲解
1287 0
|
自然语言处理 数据库 开发者
MiniOB select - meta 实现解析 | 学习笔记
快速学习 MiniOB select - meta 实现解析
MiniOB  select - meta 实现解析 | 学习笔记
|
缓存 安全 网络协议
免费在线IP地址查询工具
在日常的网络使用中,我们经常需要了解IP地址的信息,例如想要确认某个网站的IP地址、追踪某个网络攻击的来源等。此时,我们可以使用一些在线IP地址查询工具。
26551 33
|
Web App开发 iOS开发
油猴(tampermonkey)离线安装包下载,油猴插件离线版下载
Tampermonkey(油猴)是一款流行的浏览器脚本管理插件,允许用户自定义网页功能。通过安装脚本,可增强浏览器体验。本文介绍其在Chrome浏览器上的安装方法,包括下载CRX文件并拖拽安装的步骤。
9697 0
|
人工智能 测试技术 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。
|
安全 Linux 程序员
在Linux中,什么是系统调用?举例说明其作用是什么?
在Linux中,什么是系统调用?举例说明其作用是什么?
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 卷积模块 | 在主干网络中添加/替换蛇形卷积Dynamic Snake Convolution
本专栏介绍的DSCNet采用蛇形动态卷积,增强对管状结构特征提取,尤其适合血管等弯曲目标。动态卷积核自适应调整,灵感来自蛇形曲线,能灵活捕捉不同尺度细节。论文及官方代码链接已提供,适用于提升目标检测的准确性和鲁棒性。
|
存储 SQL 关系型数据库
16. Mysql 自定义函数
16. Mysql 自定义函数
543 1