news 2026/8/23 10:08:49

10分钟跑通一个数据库服务端:MiniOB 新手上手指南 [特殊字符]️

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10分钟跑通一个数据库服务端:MiniOB 新手上手指南 [特殊字符]️

10分钟跑通一个数据库服务端:MiniOB 新手上手指南 🗄️

【免费下载链接】miniobMiniOB is a compact database that assists developers in understanding the fundamental workings of a database.项目地址: https://gitcode.com/GitHub_Trending/mi/miniob

MiniOB 是一款用 C++ 写的轻量级数据库,把 SQL 解析、查询执行、B+ 树索引、日志恢复这些内核环节做成了可读的源码。它适合想进内核层的学生和开发者,照着这篇走,大约 10 分钟能启动你的第一个 MiniOB 实例。

MiniOB 是什么:先看一张架构图

刚学数据库时,"服务端"三个字背后藏着太多东西:网络收发、SQL 解析、计划生成、存储读写。MiniOB 把它们全部摊开,而且只保留了理解原理必需的部分。

图中从上到下就是一条请求的旅程:客户端把 SQL 交给网络模块,经过解析和语义检查变成语法树,优化器改写后交给执行器,最后落到存储引擎,日志模块在旁边记录每一步。

MiniOB 怎么装:最短路径编译并启动

克隆仓库,然后初始化一次编译环境:

git clone https://gitcode.com/GitHub_Trending/mi/miniob cd miniob bash build.sh init

编译出调试版二进制,首次编译大约需要几分钟:

bash build.sh

启动服务端并直接进入命令行交互模式,不用客户端:

cd build_debug ./bin/observer -f ../etc/observer.ini -P cli

看到Welcome to the miniob.提示符就说明跑起来了。更细的配置项(日志级别、端口、buffer pool 大小)写在etc/observer.ini,用法详见仓库内的运行文档。

MiniOB 数据库内核怎么转:一条 SQL 的流水线

你输入的每条 SQL 都会走同一条流水线:解析器把字符串变成语法树,语义检查确认表和字段存在,优化器挑一个执行计划,执行器按计划向下要数据,存储引擎负责真正的读写。

可以把它想象成一条装配线:每个工位只干一件事,上一站的产物就是下一站的原料。想加新功能时,你只需要找到对应工位,而不是通读整个仓库。

10分钟小练习:建表、插数、查计划 💾

进入上面的 cli 模式后,依次执行:

create table t1 (id int primary key, name char(16)); insert into t1 values (1, 'a'), (2, 'b'), (3, 'c'); select * from t1; explain select * from t1 where id > 1; exit;

成功的标志:select返回刚插入的 3 行;explain打印出执行计划树,里面能看到 TableScan 算子。再create index idx on t1(id);重新 explain,观察计划是否改用索引扫描。用exit或 Ctrl+D 退出,数据目录默认在/tmp/miniob

MiniOB 报错怎么办:高频踩坑速查

Q1:运行 observer 提示找不到动态链接库?

依赖默认装在仓库的deps/3rd/usr/local,不在默认查找路径里。在 build 目录里执行./bin/observer -h前先export LD_LIBRARY_PATH=$PWD/../deps/3rd/usr/local/lib:$LD_LIBRARY_PATH再启动。

Q2:bash build.sh init报 flex、bison 缺失?

先确认已装 cmake(3.13+)、gcc 11+ 或 clang 14+、flex 2.5+、bison 3.7+,版本要求详见仓库内的构建文档,缺哪个补哪个即可。

Q3:启动报端口被占用或找不到 6789 端口?

先用./bin/observer -p 6790换一个端口启动服务端,客户端同步改成./bin/obclient -p 6790

下一步看什么

  • MiniOB 架构设计文档:逐个模块理解各组件的职责和边界
  • 如何编译与运行:查 TCP、unix socket 等更多启动方式
  • B+ 树索引源码目录:对照上文流水线动手读实现
  • 课程实验任务:按由浅入深的题目继续练手

跑通只是入口,MiniOB 真正的价值在于你可以随时拆开看每个工位内部的代码。

【免费下载链接】miniobMiniOB is a compact database that assists developers in understanding the fundamental workings of a database.项目地址: https://gitcode.com/GitHub_Trending/mi/miniob

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 10:06:59

BongoCat 桌宠教程:3 步让桌面猫咪跟着键盘和手柄动起来

BongoCat 桌宠教程:3 步让桌面猫咪跟着键盘和手柄动起来 【免费下载链接】BongoCat 🐱 跨平台互动桌宠 BongoCat,为桌面增添乐趣! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat BongoCat 是一款跨平台互动桌宠…

作者头像 李华
网站建设 2026/8/23 10:05:46

SAP资产购置全流程解析:资产价值日配置、操作与常见问题

在SAP FICO模块的日常运维和项目实施中,资产购置与资产价值日的处理是财务核算的核心环节,也是新手顾问和关键用户最容易混淆、出错的地方。很多朋友在处理资产购置业务时,常常对“资产价值日”这个关键字段感到困惑:它和过账日期…

作者头像 李华
网站建设 2026/8/23 10:04:42

空中加油问题:从数学建模到组合优化算法的实战解析

1. 项目概述:从一道赛题到一类经典优化问题的实战拆解 “空中加油”这个题目,乍一看像是军事或航空领域的专业问题,但对于参加过“华为杯”研究生数学建模竞赛的老兵来说,这绝对是一道让人印象深刻的经典赛题。它远不止是计算几架…

作者头像 李华
网站建设 2026/8/23 10:03:57

C语言内存本质:数据类型是编译时契约,运行时只有地址与字节

很多C语言初学者,甚至一些有经验的开发者,常常会陷入一个思维定式:认为 int a 10; 中的 a 是一个“整数类型”的实体。编译器、教科书和我们的日常对话也都在强化“数据类型”这个概念。然而,当我们深入到计算机系统的底层&a…

作者头像 李华
网站建设 2026/8/23 9:59:08

IOPaint图片擦除完整上手:3条命令出第一张干净图

IOPaint图片擦除完整上手:3条命令出第一张干净图 【免费下载链接】IOPaint Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on yo…

作者头像 李华
网站建设 2026/8/23 9:58:07

美赛2023全解析:从建模思维到论文写作的实战指南

1. 项目概述:一场全球大学生的“智力奥林匹克” 如果你是一名理工科或者商科的大学生,并且对解决现实世界中的复杂问题充满热情,那么“美赛”这个名字,你大概率不会陌生。它不是一个简单的数学考试,而是一场为期四天、…

作者头像 李华