开发者学堂课程【第八届大学生创新创业大赛阿里命题阿里云数据库赛题解析:互联网+大赛-阿里云数据库赛题解析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1023/detail/15094
互联网+大赛-阿里云数据库赛题解析
内容介绍:
一、阿里云数据库介绍
二、赛题内容
本节课会介绍第八届中国国际“互联网+”大学生创新创业大赛中阿里云数据库相关赛题进行解析。
一、阿里云数据库介绍
1、阿里云数据库的整体情况,数据库长久以来都是一个非常有生命力的研究方向。
早在上世纪80年代就产生了非常著名的商业化的数据库产品,随着技术的进步,数据库在大数据量更丰富的数据模型,更加多样化的应用场景等方面都取得了长足的进展,随着云计算技术的出现,给数据库带来了新的挑战和机遇,云计算的本质就是资源的高效池化和解偶,云计算使得数据库向着一站式全链路的处理平台在演进,整个数据库技术目前已经涵盖了数据的生产,处理,存储和消费完整的数据生命周期。
2、从技术架构上来看,数据库也从单体架构不断的向着云原生分布式的架构演进,在中间态的分布式架构的演进路线上出现了两种形态,一种就是共享存储架构,还有一种是分布式数据库的架构,云计算架构使得分布式数据库的扩展能力不受限制,云原生的资源解偶池化技术是实现分布式数据库的弹性能力的一个关键。
3、阿里云数据库一直以来都致力于作为云原声分布式数据库的一个全球的领导者,随着 Gartner2021 年的最新报告,阿里云数据库已经进入了 Gartner 领导者象限,他是唯一进入领导者象限的一个中国厂商,阿里云数据库主要在五个研究商方向上重点发力,包括云原生分布式,智能化,物联网多模,安全可信和在离线一体化等。
4、图是整个阿里云数据库的产品图,最底层的阿里云丰富的数据库产品,涵盖了整个数据处理的生命周期,包括数据的生产和集成,数据的实时处理数据的分析和发现,数据的开发和管理等,它是一个真正的一站式的全链路的数据处理平台。在整个阿里云数据库之上,还有一系列的解决方案来满足大量的云上客户,满足极具挑战性的应用场景。
5、阿里云数据库除了在云上有非常丰富的产品之外,阿里云数据库也一直致力于为开源社区来做贡献,数据库有 mysql 和 pg 两大开源社区,阿里云对应的也有两款非常重要的开源产品,分别是 polardb-x,主要兼容 myaql,还有一个开源产品是 polardb for postgresql,主要面向 pg 的开源生态。
二、赛题内容
1、本次赛题跟阿里云数据部有关的赛题一共是八个,主要涉及到 PolarDB-X,PolarDB,AnalyticDB,NoSQL 四个重点方向,本次命题是面向所有的在校学生,基于阿里云数据库的产品和开源代码,提供八个功能性的命题,通过大赛希望能够为学生创造产业的实践机会,同时也能推动学生了解云原生数据库相关的一个技术原理参与整个数据库生态的构建。
2、第一道题是想要搭建一个 PolarDB-X 混沌测试系统,PolarDB-X 是一个阿里云自主研发的云分布式数据库,目前已经开源,它支持海量数据的存储,超高规模的并发,大表的瓶颈以及复杂的计算效率等,PolarDB-X 作为一个分布式数据库,稳定性和容错是分布式数据库的一个最基本的要求,赛题就是希望能够打造一个针对PolarDB-X 的混沌测试的系统,整个命题的内容有两点,希望基于 PolarDB-X operator 和 chaos mesh 构建面向分布式数据库的一个混沌测试框架,框架的目标就是要做到能够发现潜在的问题,并且能够快速修复,同时能够帮助验证PolarDB-X 的稳定性与容错能力,具体的要求主要有五个方面,第一个是混沌测试系统要能够定义分布式数据库的一个稳态,同时在稳态的一个基础上,能够支持多种故障的一个自动化的注入,同时要能够支持自动化的稳态验证以及故障实验的动态编排,其中最重要的一点就是要能够支持超大规模的集群。
3、第二题依然是围绕着 PolarDB-X 展开,希望能够搭建一个面向 PolarDB-X 的问题诊断与定位系统,整个命题的要求是对 PolarDB-X 做持续性能采集的分析,也就是开发一个 profiling 采集存储和指定时间范围内的数据库运行的相关数据,并最终把采集到的数据以一种可视化的方式把它展示出来,例如采集 cpu 的使用情况。也会给出网上的一些资源,大家可以基于资源,比如 async-profiler,profiling 开源的项目构建的问题诊断与定位系统,希望问题诊断与定位系统能够采集包括 cpu,内存以及存储等各种计算资源的使用情况。
4、
5、第三个题是面向 polardb for mysql 的云原生关系数据库,polardb for mysql是阿里云自研的一款云原生数据库,主要是面对超大规模数据量,超高规模并发的应用场景,既然是面向超大规模数据量,其实索引就是 polardb 里面非常重要的一个组件,索引的构建技术的先进与否,它是决定数据库性能的关键,随着互联网和大数据技术的一个发展,会发现数据库里面需要处理的数据量的规模发生数量级的增长,很多数据库在面对大表创建索引的时候,它往往都耗时非常长,甚至要几个小时甚至几天,这么长的创建索引的时间,对于一些在线应用是没有办法容忍的,因为在索引创建的时间内,很多需要依赖于索引 dml 的操作都没有办法能够加速的执行,所以希望通过研究一种快速的并行的创建索引的技术,加速面向大数据索索引的创建过程,也是命题的大的背景命题,命题内容就是希望能够设计一个并行创建的索引的方案,同时基于方案要实现索引创建的 demo,要求在索引创建的实现上,希望使用 C 或者 C++实现,最终需要实现 demo,并且能够提交相关的设计文档和测试用例等。
6、第四题和第五题,主要是面向 polardb for postgresql 开源的分布式数据库,它包括两个题目,一个是指序列号的生成,一个是指性能调优,polardb for pg 是一款自研的云原生数据库产品,目前已经开源了,它最主要的特点就是100%兼容PG,在架构上,它采用的是一种 shared-storage 存储计算分离的架构,它具备极致弹性,毫秒级延迟和 htap 的能力,长久以来对分布式数据库的最大的技术挑战,怎么能够为分布式数据库提供跟单机完全一样的体验,所以这次两个赛题也是围绕着这个方向进行设计。
数据库序列号的生成,如果用过 postgresql,对 sequence 应该会非常熟悉,在单机情况下 sequence 实现比较简单,但是在分布式数据库的场景下,如何实现一个sequence 其实还是有相当多的技术挑战。赛题就是希望能够基于 polardb for pg实现 sequence 的基本功能,包括支持 nextval,setval,currval,lastval 以及 ddl 基本的接口,同时对于 sequence 的个性,需要它满足全局一致性的要求,比如要支持严格的有序性,通过 cache 以及批量分配的方式提升 sequence 处理性能。
PolarDB for PostgreSQLFil5titk : https://github.com/ApsaraDB/PolarDB-for· -PostgreSQL/tree/distributed
链接是 polardb for pg 的开源地址,可以登进去查看看相关的资料,第五个赛题是针对 polardb for pg 性能调优的需求,希望能够针对 polardb for pg 设计并开发函数级别的性能的 profiler,它能够采集 PG 运行期间的相关的数据,同时它要需要优化采集时的资源消耗并且能够把对系统的影响降到最小,对于采集到的结果希望能够以 csv 的文件,或者是直接存储到数据库表中,同时要提供相应的脚本和查询语句帮助用户获得数据库运行的基本的情况,如果能把数据以图形化的方式展示出来,会作为这道题目的加分项。
6、面向云数据仓库 analytidb 做设计,analytidb 是阿里云开发的数仓,它主要面向的场景是超大规模的数据量复杂分析以及实时分析,随着数据量的膨胀包括互联网应用的需求不断的提高,对于结构化数据和非结构化数据的混合分析的能力,是目前研究的热点,赛题最关键的点就是希望设计向量化的引擎支撑结构化数据和非结构化数据的融合分析。
7、在车联网场景下对摄像头捕获的车辆图片做分析是非常重要的场景,对车辆图片分析就是很典型的结构化数据和非结构化数据混合分析的场景,结构化的数据包括一些时间地点信息,非结构化数据主要是车辆的型号,车辆的颜色等,如果希望能够在特定的时间,特定的地点找到对应的某一种品牌或者某一类车型或者某一种颜色的汽车行驶记录,就是非常典型的结构化和非结构化数据的联合分析。本次的命题也是会提供一个数据集,数据集的大小有 10g,在数据集里面主要是行车的信息,每一条记录包括三个四个字段,前三个是结构化字段,第四个是车辆的特征信息,也就是向量化的字段,希望能够针对数据集,参赛者能够实现接口,接口要能够支持对数据集的增删改查的操作,其中检索希望能够针对车辆特征,也就是针对最后一个字段做近邻的分析,能够找到128维的特征数据,让它的 l2 距离越小,越相近,作为检索的标准,考核标准会聚焦在五个上面,包括数据的导入时间,查询的正确率以及查询的时间消耗等,同时还会检验程序实现的鲁棒性,包括删除数据,在剩余数据集上参赛选手接口实现的表现,希望在以上各个步骤中参赛选手实现的接口,它的平均正确率至少需要达到95%。
8、第七个赛题主要是面向的云原生多模数据库 lindorm,多模数据库是一种面向互联网,物联网,车联网以及工业互联网设计的一款超融合数据库,它主要的特点是支持非常多的数据模型,包括宽表模型,时序,文本,对象,流等,并且多样化的数据模型会提供统一的访问和融合的处理,多模数据库应用场景非常多,在日志监控,账单,广告,社交等各方面都有非常丰富的应用场景,也是阿里巴巴核心业务提供支撑的数据库。本次针对多模数据库的命题,主要是希望能够基于多模数据库构建创新性的物联网应用,答题的要求,因为是多模数据库,所以希望参赛选手在实现应用的时候,至少要使用两种以上的数据模型来解决真实的场景需求,关于lindorm 的相关学籍资料都是在 ppt 上的链接里面,大家可以查看资料了解lindorm 具体的处理能力。
9、最后一道题是针对内存数据库展开,内存数据库最有名的是 redis,阿里云推出Tair 数据库,
阿里云自研的数据库,tair 具有三大特征,100%和 redis 兼容,超高性能,同时也能够在 redis 基础之上提供持久存储的能力,支持更丰富的数据模型,除了 kv 之外会支持图数据库的模型,关于内存数据库的赛题还是希望能够对内存的容量做极致的优化,基于一个特定的开源版给参赛者提供初始化的参赛环境,希望参赛选手在初始化的参赛环境里面最大化的提升内存的使用率,通过不断的优化数据结构,压缩算法等,使得内存中缓存更多的数据,
同时也会对性能的稳定性做要求,就是希望在访问不在内存中的数据的时候,带来性能的抖动,也就是 redis 产生的压测,希望它尽可能的小,第四个答题要求给出赛题非常明确的评分的要求,满足特定性能和稳定性的要求下能够使得存储的数据量越多,分数越高。
10、最后会通过阿里云的技术知识社区为参赛者提供学习的资料和技术知识,主要涉及到四个方面,包括命题的解读,学习资料,场景的动手体验和赛前训练营等。