• OB数据库大赛初赛总结


    一、背景

    在校的学长举办讲座时,了解到该项目;抱着学习、探索底层的态度进行参与了。虽然现在还没截止(11.6晚截止),但是由于课程繁重和能力有限提前给自己做个总结了。作为Java选手,没有C\C++的开发基础(工程开发,简单的函数编写除外)还是挺难的,所以虽然在一两周中只收获了90分,还是十分开心的,也更加触发了个人的思考和数据库的理解。

    在这里插入图片描述

    在这里插入图片描述

    二、基本过程

    环境搭建

    对于MiniOB的环境搭建,编译其实官方给出的十分明确的文档。但由于欠缺C\C++的编程了解。刚好C的软件基本上是需要Linux环境的,对于Windows用户来说,需要去搭建Linux环境,当然对于虚拟机、Dokcer、WSL或者云服务器的使用还是比较能够驾驭,而对于Cygwin,CMake还是比较陌生。所以开赛前两天基本上在研究如何搭环境上面了,因为个人比较喜欢Jetbrains系列最终采用了

    • Clion + 远程开发(连接虚拟机的方式

    本来,前两天已经将代码拉下来并在虚拟机搭好环境了,结果后面虚拟机突然出现问题。然后又花了一天浪费在整理环境方面。回头来看关键注意点有以下:

    • MiniOB的编译环境:Linux环境下(需要Linux的一些包)+ gdb + gcc
    • MiniOB的本身依赖:libevent,jsonsoup,googletest,…(可先看一下MiniOB的整体执行框架和流程),先改用gitmoudule了,可能有时拉不下来,需要多拉几下。
    • MiniOB的启动调试:在群里了解到,其实C\C++的启动有多种模式,Debug,Release。正常下采用Debug模式即可,如果Debug测试没问题,提测有问题,可以考虑coredump问题,改用Release模式,使用ASAN工具分析。

    基础学习

    MiniOB的训练营的学习文档和入门视频真的不错。当自己跟着模仿,写上几句代码,实现功能,提测成功是真的很快乐。但时常也会遇到内存分配问题,甚至字符串处理和预期不同带来的不爽。个人比较行动派,边看边进行代码尝试。现在看来,对于该方面零基础的朋友。以以下路线去学习较好。

    • 执行流程(采用seda模型,流程的执行过程;主要关注解析、转化、执行、存储以及索引、Record记录等);可以进行打断点一步步调试、深入,第一周不要着急实现功能(虽然我第一周因为课程原因只去搭建了环境,但是想参与的朋友其实可以尽早地去提测往年的题目,搭建好环境,然后正式比赛了就会游刃有余,不至于白白浪费一次参赛机会,当然啦我本来也是抱着来学习的态度,嘿嘿)
    • 解析部分:flex\bison的学习了解,该部分是起始部分,十分重要
    • SQL的基本语句语法,作为与数据库交互的首要对象,十分熟悉SQL语句才能更好地去解析,分析语法语义。
    • db、table、record、index的基本概念
    • C++的基础知识(特别是char* string,以及char,int,float几种基本数据类型的熟悉,char*是其中使用最多的)
    • 可利用Notion去记录自己的学习,探索过程。

    在这里插入图片描述

    三、启发思考

    虽然这次最终在正则匹配(解析莫名出现like and like则只能解析出一个值)和insert(修改面积较大)这样简单的题就止步了!但是也有些值得去思考反思和收获的地方。

    • 实现功能需要考虑全面,具有大局意识。先进行分析思考,思想上确定无误在行动,不要急于实现!
    • 排查问题,合理利用日志和调试打断工具,设计测试用例时需要尽量全面而简洁。
    • 任何软件都离不开业务对象,熟悉业务流程很重要(例如数据库主要和SQL打交道,就需要熟悉SQL)
    • 学习一门编程语言就打开一扇新世界的窗户,作为偏底层的C\C++在构建基础系统级软件具有统治性地位,MySQL,Redis,Linux都是其杰作。在研究Java中间件有余力,可适当去学习、开拓。
    • 本次大赛只是开启对数据库的认知学习的大门,而非终点,在学有余力之时可以去训练营学习提测。
  • 相关阅读:
    Unity实现一个可扩展的UGUI无限滑动列表控件
    Apipost现已支持连接数据库!
    Xshell+Xftp通过代理的方式访问局域网内网服务器
    Unity UGUI的Slider(滑动条)件组的介绍及使用
    第04篇:手写JavaRPC框架之搞定网络通信
    pandas---数据结构(Series、DataFrame 和 MultiIndex)创建方式、属性
    抖音矩阵系统源码,抖音矩阵系统源码,抖音矩阵系统源码,抖音矩阵系统源码,抖音矩阵系统源码,抖音矩阵系统源码。
    VueUI Day05(8.4)Mint UI
    《Go 简易速速上手小册》第9章:数据库交互(2024 最新版)
    Clickhouse MaterializeMySQL引擎详解
  • 原文地址:https://blog.csdn.net/qq_44654974/article/details/127678309