第四届全球数据库大赛,瓜分40万奖金池,只等你来!各赛道TOP10都可获得现金奖励
赛道2【分布式NewSQL性能挑战】,邀您提交评测啦!
大赛简介
2022年第四届全球数据库大赛—PolarDB性能挑战赛,是由阿里云、英特尔联袂主办,阿里云数据库、阿里云天池承办的数据库年度品牌赛事。自2018年以来,“阿里云数据库大赛”已经连续成功举办三届,吸引了国内外数千支队伍和个人参加,参赛者遍布11个国家和地区。
本届大赛采用双赛道机制,聚焦分布式共享内存池、基于索引的多维查询等数据库核心业务场景,参赛者在充分认知英特尔第二代傲腾持久内存(BPS)、IcelakeCPU特质特性的情况下,设计最优的数据结构,探索数据库创新场景最佳实践。
了解大赛更多信息,请点击👇
其中,分布式NewSQL性能挑战赛道,共设奖金20万元人民币。
赛道直播培训
数据库DBer,赛道2【分布式NewSQL性能挑战】的直播培训&答疑来啦!
8月4日(周四)19:00,关注“阿里云数据库“视频号观看赛道直播培训,阿里云数据库高级开发工程师樊杨将为大家带来赛道2的赛题解析。
直播简介
主要针对选手对赛题理解模糊、正确性验证难以排错等问题,讲解赛题数据设计、正确性验证考点、答疑中遇到的常见问题、解题思路、复赛规划等,欢迎大家观看直播并提问,技术专家将实时作答。
赛道背景
索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。使用索引后,数据库系统不必扫描全表,而能直接定位至符合条件的记录,从而加快查询速度。没有合适索引的数据库系统慢似单车,合理使用索引的数据库系统将成为兰博基尼。
在线上电商业务场景中,比较典型的有商品交易、用户登录、查询收货地址等。在登录场景中可以按照用户名、手机号码、邮箱地址等多种登录方式,技术上主要依赖于OLTP数据库的索引,在写入的时候维持数据和索引的一致性,同时查询时基于索引来提供多维查询的诉求。
随着互联网的发展,传统单机数据库已经无法满足新时代海量数据和超高并发的特性,分布式NewSQL数据库应运而生。在分布式场景下,索引数据和主表数据可能不会分布于相同存储节点,因此实现高性能强一致的全局二级索引非常有挑战。
云原生数据库PolarDB的分布式版本PolarDB-X基于TSO事务实现了强一致的全局二级索引,可以在分布式场景下提供高性能的数据多维查询修改能力,同时团队对于索引也有深入研究并取得了丰厚成果:PolarDB-X的SQLAdvisor利用基于代价的优化器提供索引推荐功能、PolarDB-X中的各索引介绍等,更多精彩内容可以关注PolarDB-X的同名知乎账号以及开源仓库。
赛题介绍
参赛阶段,选手需要实现简化版的分布式NewSQL引擎,我们提供8C、32GRAM、126GAEP、256GSSD的运行机器,如何充分利用AEP特性将成为获胜关键。
初赛:实现单机版KV存储引擎,支持write、read、init、deinit等接口。
复赛:
提供4台相应机型,实现分布式KV存储引擎
支持write、read、init、deinit等接口,并实现节点间通信
解题思路
1.数据结构
考虑实现复杂度,数据结构可以选用哈希表并参照常见哈希表实现。例如:首先利用libpmem打开AEP文件,进行容量预分配,再将整块空间分块,大部分块作为哈希桶,少部分块作为备用桶。写入时,将索引键进行哈希运算,根据运算结果将数据打散到各个桶,当一个桶写满,可以申请备用桶,后续相应数据写入该备用桶。读取时,根据哈希运算结果遍历相应的桶。每个分桶需进行元数据管理,可以在桶的头部存储以下信息:桶中已存储的tuple数量、已申请的备用桶的编号等。
每个索引的存储用一个上述哈希表实现。
2.索引一致性的保证
赛题条件下仅写一次且不存在数据修改,因此仅需要保证写入数据的持久性和以及数据和索引的一致性。持久性可以通过AEP的持久化操作或者写WAL完成。而索引一致性则需要考虑以下场景:写入过程中,索引1已写入,索引2未写入,此时因外部原因,引擎崩溃并重启,此时读同一tuple,存在走索引1读到,而走索引2却读不到的情况,数据出现不一致。
因此,我们需要采取措施以保证索引一致性。一种简单的思路是各条记录用1bit作为标记位,初始为0,全部内容写入完成并持久化后,该bit更新并持久化为1,再返回写入成功的信息。读取时,通过检查该位来判断该条数据是否在所有索引中都已写入成功,如否则需丢弃相关数据。
3.故障恢复
程序崩溃后被重新拉起,此时engine需要具备故障恢复能力。这意味着正常运行过程中,engine管理数据所需的元数据(比如可以使用的备用桶集合等)需要进行持久化,以便在故障恢复时恢复现场。此外,对于故障前的读写工作需要进行特殊处理,未完整写的数据,需要进行清理。
4.分布式集群优化
复赛将引入多节点的分布式集群,选手可以自行选择节点间RPC通信的协议和框架,届时测评程序会进行更复杂的跨节点数据读写或混合读写等操作。合理设计数据分布、缓存、预读等机制将对最终性能测试的成绩带来明显提升。
5.更多优化
完成一系列通用设计和实现后,为了获得更好的成绩,可以根据本次比赛的特点进行进一步优化。本届大赛赛道二的一大特色是使用了英特尔®傲腾™持久内存,其以创新的内存技术重新定义了传统存储架构,将高性价比的大容量内存与数据持久性巧妙地结合在一起,以合理的价格提供大型持久内存层级。
参赛选手通过学习该新硬件的特性和使用方法,可以利用行业标准的持久内存编程模式,构建性能更强劲的存储引擎。此外,读写分离(仅初赛有该特征)等比赛限定特征也是优化程序的方向。
报名方式
瓜分40万元奖金池,两大赛道任意选择,点击“阅读原文”马上报名参赛:【大赛专题页】第四届全球数据库大赛—PolarDB性能挑战赛
【赛道2】分布式NewSQL性能挑战
【赛道1】云原生共享内存数据库性能优化
奖项设置
分布式NewSQL性能优化赛道共设奖金20万元人民币
冠军:1支队伍,每支队伍奖金6万元人民币,颁发获奖证书。
亚军:2支队伍,每支队伍奖金3万元人民币,颁发获奖证书。
季军:3支队伍,每支队伍奖金2万元人民币,颁发获奖证书。
优胜奖:4支队伍,每支队伍奖金5千元人民币,颁发获奖证书。
(上述奖项以总决赛答辩的最终名次决定)
参与奖:初赛TOP50队伍的选手将获得大赛限量版纪念T恤一件,数量按照各队伍选手人数发放。
极客奖:复赛最终排名入围TOP20所在队伍的选手将获得阿里云数据库产品事业部优先推荐招聘名额。
注:同一选手只能获得一个参赛奖,多赛道入围前10排行榜的选手,按最高排行所在赛道计入名次,其余赛道该选手所在团队名次作废,获奖资格顺延。
(例:A选手在赛道1获得第一名,与B选手组队在赛道2获得第二名,则按赛道1名次发放奖品,赛道2名次作废,获奖资格向下顺延一位。)
奖项设置
- 即日起–7月29日,前60名报名【云原生共享内存数据库性能优化】赛道、提交有效代码并成功出分的参赛队伍,均可获赠“天池定制款笔记本一件”或“阿里云数据库定制款帆布包一个”,先到先得!
- 即日起–8月22日,【云原生共享内存数据库性能优化】赛道初赛排行榜成绩前40位(需成功出分),且在赛道论坛发布高分心得文章的选手,均可获赠天池/阿里云数据库限量版订制电脑包一个!
- 邀请小伙伴报名,亦可赢取精美礼品:
报名期间(即日起-8月17日)成功邀请其他选手参赛即成为程序员鼓励师。鼓励师点击“报名参赛”下方“邀请参赛”生成个人专属海报,每拉新一个选手,可获得天池150粮票,粮票可在天池礼品库兑换天池纪念品。
- 另有早鸟礼遇,详见:
https://developer.aliyun.com/adc/series/tianchi/polardb
注:
- 排行榜score显示99999999.00,表示没有成绩,不符合成功出分条件。本大赛规程的最终解释权归本届大赛组织委员会所有
- 高分心得文章,文字篇幅不可低于500字
- 满足以上获奖条件的队伍,请加入【天池大赛】2022数据库大赛选手Q&A群,联系群主“七幕”
还未报名或没提交代码的小伙伴抓紧上车啦!