刚好参加了第一届OceanBase数据库大赛,分享一下我的比赛经历和感受,希望对你有所帮助。
这个比赛分为三个阶段,初赛,复赛和决赛。
初赛阶段
在初赛阶段,官方提供给我们一个简易的miniob数据库,让我们在上面不断的累加功能。这些会涉及到SQL解析,SQL执行,数据存储等,整个初赛阶段下来,可以让我们对整个数据库的各个模块的有更清晰的认识。以下附上初赛题目链接,我就不一一介绍题目了。
https://oceanbase-partner.github.io/lectures-on-dbms-implementation/miniob-topics
复赛阶段
在这个阶段,要直接改动OceanBase数据库,整整三百万行,编译都要半个小时,恐怖。比赛题目是让我们去对Nest Loop Join做性能优化,官方提供了相关代码和流程的解析来帮助理解源码。对我个人而言,一方面有了一个契机去接触和学习这种大规模的开源系统,一方面也通过自己去做查询优化,加深了对理论知识的理解。
决赛阶段
决赛采用黑客松的模式,题目是数据压缩。这个功能在面向磁盘的数据库都会涉及到。在这个阶段,我们可以将自己学习的压缩算法和行列存储知识应用到具体的数据库中。整个比赛下来,让我们进一步体会到数据压缩在数据库存储中的重要性。
比赛的体验还是很不错的,赛题指引很到位,工作人员也很负责。就我而言,参与这个比赛是一个很好的深入学习数据库的机会,经过实际动手,会对数据库内核的设计有更多的理解。个人比较推荐将miniob作为初学数据库内核的练手工具,也很推荐参与OceanBase数据库大赛,真正动手实现数据库内核。