第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道
-
大赛概况
云原生数据仓库 AnalyticDB MySQL 版是融合数据库、大数据技术于一体的云原生企业级数据仓库服务。AnalyticDB MySQL 版支持高吞吐的数据实时增删改、低延时的实时分析和复杂ETL,兼容上下游生态工具,可用于构建企业级报表系统、数据仓库和数据服务引擎。本题结合英特尔
傲腾
持久内存技术(PMem),探索新介质和新软件系统上极致的持久化和性能。参赛者在充分认知 PMem 硬件特质特性的情况下设计最优的数据结构。
赛程安排
报名与实名认证(即日起—2021年6月25日,UTC+8)
1.报名方式:登录比赛官网,完成个人信息注册,即可报名参赛。2.选手可2-3人组队或单人成队参赛,每位选手只能加入一支队伍。
3.选手需确保报名信息准确有效,组委会有权取消不符合条件队伍的参赛资格及奖励。
4.选手报名、组队变更等操作截止时间为6月25日中午11:00。
5.各队伍(包括队长及全体队伍成员)需要再6月25日中午11:00完成实名认证(认证入口:天池官网-右上角个人中心-认证-支付宝实名认证),未完成认证的参赛团队将无法进行正式比赛。
6.大赛官方钉钉群请扫描以下二维码加入,最新通知将会第一时间内在群内同步。
enter image description here
第一赛季(2021年5月17日-6月30日,UTC+8)
1.预热赛(5月17日-6月10日):5月17日11:00开放代码评测入口,每天提供3次代码运行机会,并提供运行日志。5月26日起开始提供排名。6月10日11:00关闭提交入口。
2.正式赛(6月11日-6月30日):6月11日10:00开放代码评测入口,每天提供10次代码运行机会,并提供运行日志。6月11日起分别在10:00, 14:00, 20:00, 22:00, 24:00更新一次排行榜,按照得分(截止当天的历史最优成绩)从高到低排序。
3.第一赛季截止时(6月30日10:00截止提交,6月30日20:00产生最后排行),最好成绩排名前100名的队伍进入第二赛季。
4.阿里云的员工参赛,仅参与第一赛季,并单独榜单排名,前5名领取相应大赛专属礼品。
第二赛季(2021年7月2日-2021年8月6日,UTC+8)
1.7月2日10:00放提交入口,每天提供5次代码运行机会,并提供运行日志。7月2日10:00起分别在10:00、14:00、20:00、22:00、24:00更新一次排行榜,按照得分(截止当天的历史最优成绩)从高到底排序。
2.8月6日10:00关闭代码评测入口,8月6日22:00产生最后排行,最好成绩排名前11名将受邀答辩。
参赛对象
面向全社会开放,高等院校、科研单位、互联网企业等人员均可报名参赛。
注:活动主办方拥有最终解释权;大赛主办和技术支持单位如有机会接触赛题背景业务、产品、数据的员工,则自动退出比赛,放弃参赛资格。
奖项设置
冠军:1支队伍,每支队伍奖金捌万,颁发获奖证书。
亚军:2支队伍,每支队伍奖金叁万,颁发获奖证书。
季军:4支队伍,每支队伍奖金壹万,颁发获奖证书。
优胜奖:4支队伍,每支队伍奖金伍仟,颁发获奖证书。
(上述奖项以总决赛答辩的最终名次决定)
参与奖:初赛TOP50队伍的选手将获得大赛限量版纪念T恤一件,每队获得一件。
极客奖:复赛最终排名入围TOP20所在队伍的选手将获得阿里云数据库产品事业部优先推荐名额。
粮票奖励:本场比赛拉新总奖金池50000张粮票,粮票计算规则为10:1,每邀请成功1人,推荐人可获得的粮票数量20张。使用粮票可兑换大赛独家定制周边。
赛题说明
选手需要设计实现 quantile 分析函数,导入指定的数据,并回答若干次 quantile 查询。
quantile(column, p) 函数定义
column: 查询列。p: 百分比,范围 [0, 1]。
函数返回:将列的所有值排序后,返回第 N * p 个值。如果 N * p 不为整数,则向上取整。
样例:
column = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # column 为整型,有 10个 元素
quantile(column, 0.5) = 5
quantile(column, 0.8) = 8
quantile(column, 0.25) = 3
quantile(column, 0) = 0
quantile(column, 1) = 10参赛流程说明
1.选手需要在 code.aliyun.com 上 fork demo 项目,地址详见下方。
2.设置自己的项目为 private。
3.赋予 analyticdb_support 权限,需要 reporter。
enter image description here
4.实现 load 和 quantile 接口。load 接口会先被调用,负责加载测试数据(将提供选手一块高性能磁盘存储处理好的数据);quantile 接口在 load 后调用,负责处理查询,参见 demo。
5.提交git格式地址:git@code.aliyun.com:xxxx/xxxx.git (必须是git格式)。
6.等待测评结果。测试数据说明
TPC(TransactionProcessing Performance Council)在数据库和大数据领域是做测试的事实标准。本次比赛测试数据参考 TPC-H 数据集合,选取其中部分表的部分列进行查询。
格式如下:
每个文件名表示 table 名,第一行是列名,第二行开始是列的数据。
enter image description here初赛说明与评测逻辑
可用资源 4核 4G
测试数据:只有一张表 lineitem,只有两列 L_ORDERKEY (bigint), L_PARTKEY (bigint),数据量3亿行
初赛会单线程查询 10 次
查询结果正确的前提下,耗时越低排名越高
详细环境数据,demo 请参见:https://code.aliyun.com/analytic_db/2021-tianchi-contest-1
复赛说明与评测逻辑
复赛在初赛的基础上增加持久化和高并发要求可用资源 8核 8G
测试数据:多张表,多列,会涉及到 整型和浮点列,数据量10亿行
复赛会用多个线程并发查询若干次
复赛查询会分两轮,先并发查询一轮,然后kill掉进程,然后重启,再并发查询一轮
查询结果正确的前提下,耗时越低排名越高
详细环境数据,,demo 请参见:https://code.aliyun.com/analytic_db/2021-tianchi-contest-2
赛题注意事项与参考资料
1.语言限定Java
只能使用 JDK 8 标准库
2.违规说明请勿将自己比赛的代码仓库公开,在比赛期间
不得通过 hard code 形式,直接将查询答案固化在代码中
任何恶意行为都会取消参赛资格
3.参赛方法说明在天池平台完成报名流程
按照示例代码工程的约束完成迁移程序的编写
在天池提交成绩的入口,提交自己的代码
等待评测结果
4.排名规则
在正确性验证通过的情况下,按耗时排名
5.作弊程序判定规则
- 不能通过hard code形式,记录任何测试数据的值在代码中,会视为hack代码
- 选手的程序不能只对一份数据能跑,换一份数据不能跑过的程序都视为hack代码
- 比赛结束会对前10名选手的代码做重判,确保选手代码可以在多份数据上跑通(只验正确性)。重判使用选手最优提交的代码版本,以及一份新的测试数据。
- 如果选手最优提交的代码版本不存在了,视为无效成绩。