2021 OceanBase 数据库大赛来袭!邀你改编世界,码出未来

2021 OceanBase 数据库大赛报名开始!一起改编世界,数造未来!

大赛介绍

OceanBase 联合蚂蚁集团学术合作团队举办 “2021 OceanBase 数据库大赛”,本次大赛主要面向全国爱好数据库的高校学生,以“竞技、交流、成长”为宗旨,搭建基于赛事的技术交流平台,促进高校创新人才培养机制,不仅帮助学生从0开始系统化学习数据库理论知识,提升学生数据库实践能力,更能帮助学生走向企业积累经验,促进国内数据库人才的发展,碰撞出创新的火花。

参赛方式

无论你是爱好数据库的高校学生、科研机构的数据库从业者、互联网企业的研发人员,都可以报名参赛!以参赛队伍为基本报名单位,1-3 名参赛者为一队。

温馨提示:个人参赛者可加入大赛官方交流群,寻找参赛队友,自由组队

赛题说明

本次大赛赛题,是在一个 MiniOB 库的基础上,让参数选手实现数据库的非常基础的功能,功能分为入门(预选赛),中级(决赛),高阶(黑客松)3个阶段。入门门槛较低,适合所有参赛选手。面向的对象主要是在校学生,数据库从业者、爱好者,或者对基础技术有一定兴趣的爱好者,并且考题对诸多模块做了简化,比如不考虑并发操作,事务比较简单。

此次大赛目标是让不熟悉数据库设计和实现的参赛选手能够快速的了解与深入学习数据库内核,期望通过 MiniOB 相关训练之后,能够对各个数据库内核模块的功能与它们之间的关联有所了解,并能够在使用时,设计出高效的 SQL, 并帮助降低学习 OceanBase 内核的学习门槛。点击《学习参赛宝典》,查看初赛赛题,快速上手 OB 大赛,更有机会夺得大奖!

大赛日程及晋级标准

奖项设置

答疑

若有任何问题,欢迎加入微信群或钉钉群,大赛组委会将为您进行解答

加群方式:

微信OB小助手

备注:姓名-高校/公司-职位

小助手将会拉你入群

钉钉群

赛题说明:

https://oceanbase-partner.github.io/lectures-on-dbms-implementation/

报名链接:

https://open.oceanbase.com/competition/index

2021 OceanBase 数据库大赛直播间地址:https://live.bilibili.com/22924893 ;预计9.16号进行第4场直播。

本次是第3期(9.9号)直播间的答疑汇总:

Q1:奖金是税前还是税后?

A1:官网上是税前金额

Q2:MINIOB有没有代码导读的文档?

A2:大赛官方网站首页,有代码导读和上手指南小视频教程;请参考:https://open.oceanbase.com/competition/index

Q3:MINIOB是用MySQL test做测试么

A3:在OceanBase比赛初赛阶段,题目是实现数据库功能。这些功能的验证,是通过类似MySQL test的方式做的。有预先写好的测试用例与测试结果。

Q4:MINIOB需要实现MySQL协议么?

A4:MINIOB的目的是让新手能快速的理解数据库核心实现原理,做了很多精简。对于像MySQL协议这样不涉及到数据库核心概念的功能点,我们不需要考虑。

Q5:初赛会考虑性能吗?

A5:OceanBase大赛初赛阶段仅要求实现一些数据库功能,不以考察性能为目的。但是对测试还是有时长要求的。

Q6:开源OB有没有配套的介绍文档,感觉代码量太大,看起来有点困难?

A6:社区版官网博客里有部分 OceanBase 源码解读,知乎的 OB小话唠里也有源码解读文章(https://www.zhihu.com/people/pi-pi-xia-45-56/posts),可以看看。如果对源码有什么问题,也欢迎在问答区提问。

Q7:OB开源有roadmap么?

A7:可以参考 https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/oceanbase-roadmap

Q8:大赛推荐获得的积分可以自由兑换吗?

A8:需要按照推荐官攻略相应的积分池去兑换。可以参考 https://open.oceanbase.com/answer/detail?id=11800020

门槛低:只要你懂C++ 编程,对数据库有些了解,即可参与。

收获大:除了有奖品外,技术方面也一定会有收获。相信你一定不虚此行。

欢迎报名或者推荐别人报名,推荐者也有奖励,推荐越多,奖励越大!

2021 OceanBase 数据库大赛直播间地址:https://live.bilibili.com/22924893 ;预计9.25号进行线下Meetup活动,地点在上海,欢迎大家前来玩耍!

活动详情可以参考:https://open.oceanbase.com/community/activities/1321832


本次是第4期(9.16号)直播间的答疑汇总:

Q1:资源碎片是怎么利用的呢?

A1:OB 的数据读写模型是 LSM Tree,不是 BTree ;OB的增量写都是在内存中以append方式写入。默认每晚低峰期会自动将内存中增量和磁盘上对应基线数据自动合并再写入到磁盘数据文件。所以,OB里没有数据碎片这个概念,也不需要手动整理。


Q2:OB的单机版是如何保证数据安全的?

A2:OB 跟传统关系型数据库一样,都有 Write-Ahead Logging 机制,事务提交的时候事务日志(clog)是立即落盘的(并且会发往所有副本成员通过paxos协议保证多数派落盘成功)。在单机版里就是本机落盘。所以OB单机节点宕机再起来后通过clog恢复也是能找回数据。具体详情请参考:https://mp.weixin.qq.com/s/vWm0pZVsRsnevLTzBRldxg


Q3:OB的SQL结果集是最后汇总到哪里?

A3:OB的SQL在sql中第一个表的主副本所在节点执行,SQL计算结果集从这个节点出。


Q4:分布式OB的优化器怎么生成个节点执行计划?

A4:OB的SQL在sql中第一个表的主副本所在节点执行,总的SQL执行计划在这个节点生成,需要访问其他节点数据时会有分布式执行计划。部分执行计划算子会发往其他节点执行。


Q5:有用LLVM做codegen吗?

A5:新的SQL执行引擎会使用LLVM codegen做jit compile。

Q6:OB使用paxos而不用raft的原因?

A6:Paxos的高并发性能比RAFT 好,实现难度也高。


Q7:每台机器上的实例的主和备本质有什么差别?

A7:每个节点内部的多个实例彼此是隔离的。有的实例上全是主副本时,可以简称为主实例;全是备副本时可以简称为备实例。


Q8:OB存储引擎支持列存么?

A8:支持。目前在内存中有部分数据是列存。


Q9:这个proxy转发SQL会成为瓶颈么?

A9:不会。OBProxy只做sql路由,转发能力能到 10w/s 。 生产环境会至少部署2个OBPROXY。


Q10:查询都是查询主副本么?

A10:默认是强一致读写,都是查询主副本。


Q11:副本数量是否可以设置为双数?

A11:可以做2副本,4副本。但是没有意义。高可用时可能会出现脑裂(2v2)。


Q12:Cg先生成代码后再执行代码,为啥反而更快?

A12:编译后的代码将会是强类型计算,不再是像执行大部分脚本语言一样都是弱类型,同时会减少很多分支逻辑判断,直接利用硬件去执行指令,还能够充分利用CPU Cache。


Q13:OB代替MySQL数据迁移过程麻烦吗?

A13:常用MySQL 的 SQL语法基本兼容。迁移过程包括用datax迁移全量和用canal 迁移增量。具体请参考:

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/use-datax-to-full-migration-data-to-oceanbase

https://open.oceanbase.com/docs/community/ocea


Q14 :OB很多基础功能不能使用,如何改善?

A14:常用MySQL 的 SQL语法基本兼容。没有基础功能不能用情况。


Q15:OB的备份恢复什么时候有?

A15:9月底预计会发版本支持物理备份和恢复。