摘要:七届中国国际“互联网+”大学生创新创业大赛火热报名中,为了帮助参赛者更好了解赛题设计思路和命题方向,华为云产业命题赛道举行了线上直播解读,华为云数据库资深架构师苏斌在直播间详细解读了GaussDB命题赛道攻略,通过剖析数据库关键技术和赛题考点,助力参赛选手轻松拿高分。
目前,第七届中国国际“互联网+”大学生创新创业大赛火热报名中,为了帮助参赛者更好了解赛题设计思路和命题方向,华为云产业命题赛道举行了线上直播解读,华为云数据库资深架构师苏斌在直播间详细解读了GaussDB命题赛道攻略,通过剖析数据库关键技术和赛题考点,助力参赛选手轻松拿高分。
数据库是什么?谈及数据库,可能有很多小伙伴不太了解,简单来说,数据库是存取和管理数据的软件(在生活中可以形象的类比为“大仓库”、“电子文件柜”等等)。当今世界是一个信息爆炸的时代,充斥着大量数据,我们的衣食住行,生活的方方面面都与数据有了不可分割的关系。
为了满足各种类型的数据特点与爆炸式的数据增长与存储管理压力,社会催生了多种类型数据库的蓬勃发展,很多关键的数据库新技术,例如分布式、云原生等也应运而生。这类数据库相比传统数据库性能更强,可靠性更强,扩展性更强,容量更大,有了这类数据库,数据读取/存储速度更快了,时延更低了,应对故障场景更从容了,面对大流量洪峰再也不怕了……
说到云原生分布式数据库的典型代表,华为云GaussDB(for MySQL)必须榜上有名。作为华为云GaussDB数据库的当家花旦,GaussDB(for MySQL) 100%兼容MySQL语法,是华为最新一代高性能企业级分布式关系型数据库。它基于华为最新一代DFV分布式存储,采用计算存储分离架构,最高支持128TB的海量存储,可实现超百万级QPS吞吐,支持跨AZ部署,数据0丢失,既拥有商业数据库的性能和可靠性,又具备开源数据库的灵活性。
为了让开发者深入了解数据库技术,并用相关技术解决企业实际业务问题,本届“互联网+”大赛的产业命题赛道·华为云GaussDB命题推出了相关题目:基于GaussDB(for MySQL)实现高性能、高扩展性的bufferpool(缓冲池)。
赛题解读:抢先掌握bufferpool(缓冲池)原理及技术,应战更从容数据库系统一般都会有一个Buffer Pool(缓冲池),用于将一些频繁访问的热点数据从磁盘读到缓存中,避免我们在数据库中读取或者写入数据时对慢速磁盘设备进行频繁访问,从而加快数据的访问速度,提升数据库的性能。
本赛道赛题就是希望选手能借鉴并参考GaussDB(for MySQL)的设计理念和思路,实现一个高性能、高扩展性的Buffer Pool。比赛分为三个阶段,1)实现一个基本功能的Buffer Pool, 能够缓存固定大小(16K)的一些热点数据,需要保证从缓存中读取和写入数据的正确性。2)在保证正确性的前提下,使用LRU、LFU和LRU-K等淘汰算法及其变种,提升Buffer Pool 的命中率,从而提高热点数据访问速度。3)在云化场景下,为了提高资源利用率,会多种数据库共用同一存储资源池,每种数据库有不同的page size(页面大小), Buffer Pool需要有高扩展性,能够支持同时缓存各种page size(page size 固定为8KB、16KB、32KB和2MB)的数据。
这里科普下赛题中的相关概念:
Page:Page是数据库中磁盘和内存交换的基本单位,也是数据库管理磁盘空间的基本单位。比如MySQL中默认的page大小为16K,PostgreSQL page为8K。
Data manager:数据管理器,用于管理数据的读取和写入。
Meta manager:元数据管理器,用于管理page在内存中的信息。
答题指南8月31日报名结束后(在互联网+大赛官网和华为云平台均需报名),提交作品入口正式对外开放,请参考赛事组提供的DEMO,该DEMO包含评测程序及简单Buffer Pool实现,请在此基础上完成Buffer Pool的代码编写与编译,并在平台上传参赛作品,获取评测分数与结果。赛题组针对C++语言提供了log4cxx日志组件,详情参见赛题组DEMO,Java/Python等语言请使用常用的日志组件。作品运行反馈界面同时也提供日志下载,同时请避免打印过多的日志。