赛题解析 | 第四届全球数据库大赛赛道2:分布式NewSQL性能挑战

简介: 第四届全球数据库大赛—PolarDB性能挑战赛,瓜分40万奖金池,只等你来!各赛道TOP10都可获得现金奖励

第四届全球数据库大赛,瓜分40万奖金池,只等你来!各赛道TOP10都可获得现金奖励

赛道2【分布式NewSQL性能挑战】,邀您提交评测啦!


大赛简介

2022年第四届全球数据库大赛—PolarDB性能挑战赛,是由阿里云、英特尔联袂主办,阿里云数据库、阿里云天池承办的数据库年度品牌赛事。自2018年以来,“阿里云数据库大赛”已经连续成功举办三届,吸引了国内外数千支队伍和个人参加,参赛者遍布11个国家和地区。


本届大赛采用双赛道机制,聚焦分布式共享内存池、基于索引的多维查询等数据库核心业务场景,参赛者在充分认知英特尔第二代傲腾持久内存(BPS)、IcelakeCPU特质特性的情况下,设计最优的数据结构,探索数据库创新场景最佳实践。


了解大赛更多信息,请点击👇

image.png

其中,分布式NewSQL性能挑战赛道,共设奖金20万元人民币。


赛道直播培训

数据库DBer,赛道2【分布式NewSQL性能挑战】的直播培训&答疑来啦!


8月4日(周四)19:00,关注“阿里云数据库“视频号观看赛道直播培训,阿里云数据库高级开发工程师樊杨将为大家带来赛道2的赛题解析。


直播简介

主要针对选手对赛题理解模糊、正确性验证难以排错等问题,讲解赛题数据设计、正确性验证考点、答疑中遇到的常见问题、解题思路、复赛规划等,欢迎大家观看直播并提问,技术专家将实时作答。

樊杨 视频号周四直播海报.jpg


赛道背景

索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。使用索引后,数据库系统不必扫描全表,而能直接定位至符合条件的记录,从而加快查询速度。没有合适索引的数据库系统慢似单车,合理使用索引的数据库系统将成为兰博基尼。


在线上电商业务场景中,比较典型的有商品交易、用户登录、查询收货地址等。在登录场景中可以按照用户名、手机号码、邮箱地址等多种登录方式,技术上主要依赖于OLTP数据库的索引,在写入的时候维持数据和索引的一致性,同时查询时基于索引来提供多维查询的诉求。


随着互联网的发展,传统单机数据库已经无法满足新时代海量数据和超高并发的特性,分布式NewSQL数据库应运而生。在分布式场景下,索引数据和主表数据可能不会分布于相同存储节点,因此实现高性能强一致的全局二级索引非常有挑战。


云原生数据库PolarDB的分布式版本PolarDB-X基于TSO事务实现了强一致的全局二级索引,可以在分布式场景下提供高性能的数据多维查询修改能力,同时团队对于索引也有深入研究并取得了丰厚成果:PolarDB-X的SQLAdvisor利用基于代价的优化器提供索引推荐功能、PolarDB-X中的各索引介绍等,更多精彩内容可以关注PolarDB-X的同名知乎账号以及开源仓库。


赛题介绍

参赛阶段,选手需要实现简化版的分布式NewSQL引擎,我们提供8C、32GRAM、126GAEP、256GSSD的运行机器,如何充分利用AEP特性将成为获胜关键。


初赛:实现单机版KV存储引擎,支持write、read、init、deinit等接口。

image.png

复赛:

提供4台相应机型,实现分布式KV存储引擎

支持write、read、init、deinit等接口,并实现节点间通信


image.png


解题思路

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名次作废,获奖资格向下顺延一位。)


奖项设置

  1. 即日起–7月29日,前60名报名【云原生共享内存数据库性能优化】赛道、提交有效代码并成功出分的参赛队伍,均可获赠“天池定制款笔记本一件”或“阿里云数据库定制款帆布包一个”,先到先得!


  1. 即日起–8月22日,【云原生共享内存数据库性能优化】赛道初赛排行榜成绩前40位(需成功出分),且在赛道论坛发布高分心得文章的选手,均可获赠天池/阿里云数据库限量版订制电脑包一个!


  1. 邀请小伙伴报名,亦可赢取精美礼品:
    报名期间(即日起-8月17日)成功邀请其他选手参赛即成为程序员鼓励师。鼓励师点击“报名参赛”下方“邀请参赛”生成个人专属海报,每拉新一个选手,可获得天池150粮票,粮票可在天池礼品库兑换天池纪念品。


  1. 另有早鸟礼遇,详见:
    https://developer.aliyun.com/adc/series/tianchi/polardb

image.png

image.png

注:

  • 排行榜score显示99999999.00,表示没有成绩,不符合成功出分条件。本大赛规程的最终解释权归本届大赛组织委员会所有
  • 高分心得文章,文字篇幅不可低于500字
  • 满足以上获奖条件的队伍,请加入【天池大赛】2022数据库大赛选手Q&A群,联系群主“七幕”

还未报名或没提交代码的小伙伴抓紧上车啦!

相关文章
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
709 158
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
843 156
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
878 161
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
509 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
893 0
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
存储 缓存 NoSQL
【📕分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
本文解析 Redisson 如何通过 Redis 实现分布式信号量(RSemaphore)与倒数闩(RCountDownLatch),利用 Lua 脚本与原子操作保障分布式环境下的同步控制,帮助开发者更好地理解其原理与应用。
959 6
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
900 2
|
存储 缓存 NoSQL
Redis核心数据结构与分布式锁实现详解
Redis 是高性能键值数据库,支持多种数据结构,如字符串、列表、集合、哈希、有序集合等,广泛用于缓存、消息队列和实时数据处理。本文详解其核心数据结构及分布式锁实现,帮助开发者提升系统性能与并发控制能力。
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
2141 0
分布式爬虫框架Scrapy-Redis实战指南

推荐镜像

更多
  • DNS