头图

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/

2022 年 10 月 17 日,OceanBase 数据库大赛拉开了初赛帷幕,共吸引了国内外 1988 名选手,1180 支队伍参与。经过初赛比拼,共计 53 支团队入围决赛,12 支队伍在决赛中凭借优秀的表现,进入最终的现场答辩环节,并于 3 月 24 日争夺冠亚季军。

一路过关斩将,迎来12强巅峰对决

2022 年 10 月 17 日,1988 名国内外数据库爱好者,组成 1180 支参赛团队,打破专业和年龄的限制,从 MiniOB 实训由浅入深,走向真实的工业级数据库的业务场景探索,开启了一场关于速度与极限的数据库内核实战马拉松。

在探索中,大家不仅深入理解了许多关于数据库理论及工程方面的知识,还获得了实战项目演练,从0到1,通过策略思考与动手实践,系统地打造出自己的数据库。从初赛到决赛,这12支团队一路过关斩将,凭着超强的学习能力和抗压能力,通过创新思维突破挑战,实现从理论到实践工程的蜕变,为走向企业打下基础,再次恭喜他们!

本次 OceanBase 数据库大赛的评委阵容由中国人民大学明理书院院长杜小勇、西北工业大学计算机学院副院长李战怀、武汉大学计算机学院副院长彭智勇、华东师范大学数据学院院长钱卫宁、东北大学计算机学院教授于戈、OceanBase 首席科学家阳振坤、蚂蚁风管同业技术负责人余锋、OceanBase CTO 杨传辉等嘉宾组成,决赛现场,评委老师将从技术难度、产品价值、创新性 3 大维度为 12 强团队打分,最后综合决赛提测分数和答辩成绩,决出最终的名次。

Image

决赛赛题和精彩题解

OceanBase 是完全自研的一款分布式数据库,在 TPC-C、TPC-H 上刷新了世界纪录,并且连续 10 年稳定支撑了“双 11”业务。自 2021 年 6 月 1 号开源后,越来越多的金融客户、电信运营商、互联网企业开始使用 OceanBase,OceanBase 也开始接入越来越多的场景。

企业在数据库升级的过程中,需要解决的第一件事情就是将数据从历史系统中无缝导入 OceanBase, 我们决赛的赛题就基于真实业务场景——旁路导入,向选手发起了挑战。

很多时候,导入操作会在一个有限的运维窗口中才能进行,如果一个10TB 的数据消耗了 8 小时,可能会横跨一个运维窗口(通常凌晨 2 点到早上 9 点),给正常业务带来压力。因此,导入速度至关重要,用户期望 10TB 的数据能在 1 小时内完成导入。

这是一个极富挑战的场景,虽然上手简单(从单一核心模块即可入手),且发挥空间巨大,可以涉及数据库的各个模块,但对参赛选手而言,压力也非常大。

首先,数据导入效率的优化是得分高低的重要影响因素。 数据导入是数据库替换的重要环节,如数据库的初始化导入,定时批量导入等会用于数据分析,而数据库导入的性能好坏是评价数据库性能的重要指标,特别是在数据库分析场景,可以参考下面的网站,从该网站可以看到,除了会比较各个数据库的查询速度,还会比较导入速度。(https://benchmark.clickhouse.com/

其次,决赛基于 OceanBase,考察文本文件导入的速度。 参赛者要直接将数据写入数据库存储文件中,不经过 SQL 与事务等环节,更底层、更有效。

最后,参赛选手基本都是初次接触 OceanBase,需要在 一个月内了解整个数据导入工作原理并对其进行优化。

从各个参赛团队在决赛中的表现来看,这届选手都非常优秀,思路也非常开阔,会从各个角度深度挖掘优化方案。比如多线程文件读写,权衡 I/O 与 CPU 效率的同时,充分利用各个资源。有些选手使用多路归并排序,甚至重写了 OceanBase 的外部排序算法。由于测试机器的 I/O 速度相对于 CPU 来说有很大差距,一些选手就会权衡 I/O 与 CPU,将数据进行编码压缩后进行读写,使用 CPU 换 I/O。

参赛收获

授人以鱼不如授人以渔,通过此次决赛,参赛选手也可以学习到许多关于数据库及工程方面的知识。具体但不限于:

第一,接触真实工业界数据库的存储引擎,并学习和接触数据库最核心的模块之一 “存储引擎”。

  • 学习 LSM Tree 的原理。 OceanBase 存储底层采用 LSM Tree 结构,选手在做此题时需要将数据直接写为 SSTable(LSM Tree中的一个核心数据结构)文件,会对LSM Tree 有更加深刻的认识。
  • 平衡查找树原理。 OceanBase 存储底层结构使用 LSM Tree,而其中的每个 SSTable 使用多阶层的平衡多叉树作为排序结构,而没有采用 skip-list 结构。因此,选手会对平衡查找的原理有更深入的理解,同时理解磁盘数据访问的优化原理。

第二,接触高并发、高性能系统框架,系统性学习底层编程技巧和规范。

  • 多线程与任务调度。 为了能够充分利用机器的资源,让性能成绩提高,必然需要充分发挥计算机多核的优势,采用多线程的方式,提高任务的并发处理能力。另外,多线程处理中,任务调度的效率,也会直接影响到整体的执行效率。
  • 文件读取优化。 文件读写是许多工程项目中需要用到的技能,而如何高效读取数据,充分利用磁盘带宽,也会影响程序的执行效率。这里也涉及零拷贝技术的应用,同时让选手对文件系统读写模块底层理解得更加透彻。
  • 文件排序。 在数据库系统中,由于磁盘比内存大很多,在外存中对数据进行排序,也是常见的场景。在导入数据时,也需要考虑数据放在外存中排序,如何更加高效,是选手努力的目标之一。
  • 性能调优手段。 学习如何使用 CPU 调优、内存调优。

我们希望大家以学习数据库技术为目的来参加比赛,因此,决赛赛题的设置以帮助选手成长为主要目标,竞技为第二目标,在未来,我们也欢迎大家成为 OceanBase 社区大家庭中的一员,与我们一起为社区建设添砖加瓦,共创更好的 OceanBase。

写在最后

最后,我们也收集了几位评委老师对大家的祝福——


西北工业大学计算机学院副院长李战怀: 希望大家能再接再厉,在决赛中充分发挥出你们的潜力和能力,并以此为起点,将来成为我们中国数据库领域的中坚。

中国人民大学明理书院院长杜小勇: 12 强都是来自于国内计算机领域的著名高校,非常高兴看到这么多学校的同学对数据库内核技术越来越有兴趣。祝愿同学们认真准备,认真参赛,取得好成绩。

3 月 24 日的答辩结束后,12 强参赛团队将与 OceanBase 的师兄展开面对面交流,分享自己的参赛体验,畅谈对数据库的未来理想。为了让更多数据库爱好者,见证这群追光少年的精彩对决,本次冠军答辩将在视频号开启全程直播,大家可以关注 OceanBase 视频号进行观看,一起为每一位努力奔跑的选手喝彩!

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/


OceanBase技术站
22 声望122 粉丝

海量记录,笔笔算数