OceanBase 基础-MiniOB概述和环境搭建

版权声明:本文参考CSDN博主「阿福Chris」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chrisy521/article/details/127142293 

在这里插入图片描述

  1. Client 向灰色框框里的服务端发起访问请求;
  2. NET 网络模块接受到请求以后,将请求交给 Parser 模块进行词法解析(LEX)和语法解析(YACC);
  3. 经过词法解析和语法解析后,转发给 Plan Cache 这个模块,当前的 Plan Cache 不做任何特殊处理,直接丢给 Resolver 模块
  4. Resolver 模块会将 Parser 模块解析出来的语法树进行细化,比如把里面表的名字转换成某一个对象、比如把 SELECT * 中的 * 转换为表中的各个字段;当然在这个阶段还会进行一些预检,比如查看该表是否存在;
  5. 接下来会传给优化阶段的 Transformer 和 Optimizer,这两个部分像前一篇文章纪老师提到的一样,会不断的迭代,尽量找到一个低成本的执行计划;Transformer 会根据一些 SQL 规则进行一些优化;Optimizer 会根据一些统计数据找到一个更好的查询路径;
  6. 然后会传给后面的 Executor 执行模块,按照执行计划执行查询,把执行结果返回给 NET 网络模块;
  7. NET 模块通过 Socket 返回给客户端

MiniOB 开发调试环境搭建

当前已经确认没问题的环境是 Mac 和 Linux 机器,如果是 Windows 机器的话,可以尝试 Linux 子系统、虚拟机 Linux 或 Docker 来做。

环境搭建大概需要如下几个步骤:

    安装 CMAKE,版本建议 3.20 以上的版本
    安装 GCC,版本建议 8.3 以上的版本
    下载代码
    安装依赖库
    编译 MiniOB

依赖库和MiniOB的编译,可以参考文章:https://github.com/oceanbase/miniob/blob/main/docs/how_to_build.md 进行。如果有遇到问题,可以在我的帖子中搜索 MiniOB 编译问题解决的那个帖子。

注意:在编译时为了方便调试,建议将 DEBUG选项加上,比如:cmake … -DDEBUG=ON

如果大家希望采用 Docker,可以参考一下 Docker Hub 的位置下载已经准备好的环境:
在这里插入图片描述
上手调试环境演示

上面的开发调试环境搭建好了以后,接下来我们跟着运来老师一起来看一下如何使用和调试 MiniOB。

  •     编译好以后,在 MiniOB 目录的 build 文件夹下,会生成 bin 文件夹,可执行的 server 和 client 文件都在此处
  •     下面我们通过指定 sock 和 配置文件 的方式启动 observer,指定 & 符号启动后台运行
$ ./bin/observer -s miniob.sock -f ../etc/observer.ini &
[1] 13072
Successfully load ../etc/observer.ini
  •    启动后,会在本地生成一个日志文件,如果平时我们使用 gdb 比较麻烦,可以通过查看日志来进行一些问题定位操作
-rw-r--r--   1 chris  staff  47085 10  2 14:27 observer.log.20221002
  • 接着,我们可以使用客户端连接到 observer 进行一些操作
    $ ./bin/obclient -s miniob.sock
    miniob > show tables;
    t1
    miniob > create table t2(id int);
    SUCCESS
    miniob > insert into t2(id) values(1);
    Failed to parse sql
    miniob > insert into t2 values(1);
    SUCCESS
    miniob > select * from t2;
    id
    1
    miniob >
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值