【“互联网 +”大赛华为云赛道】GaussDB 命题攻略:支持三种开发语言,轻松完成数据库缓冲池
摘要:第七届中国国际“互联网+”大学生创新创业大赛火热报名中,为了帮助参赛者更好了解赛题设计思路和命题方向,华为云产业命题赛道举行了线上直播解读,华为云数据库资深架构师苏斌在直播间详细解读了 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,PostgreSQLpage 为 8K。
Data manager:数据管理器,用于管理数据的读取和写入。
Meta manager:元数据管理器,用于管理 page 在内存中的信息。
答题指南
8 月 31 日报名结束后(在互联网+大赛官网和华为云平台均需报名),提交作品入口正式对外开放,请参考赛事组提供的DEMO,该 DEMO 包含评测程序及简单 Buffer Pool 实现,请在此基础上完成 Buffer Pool 的代码编写与编译,并在平台上传参赛作品,获取评测分数与结果。赛题组针对 C++语言提供了 log4cxx 日志组件,详情参见赛题组 DEMO,Java/Python 等语言请使用常用的日志组件。作品运行反馈界面同时也提供日志下载,同时请避免打印过多的日志。
为了充分保证比赛的公平性,参赛选手不得使用第三方存储引擎库(如 RocksDB、LevelDB、LMDB 等),在其之上封装接口用来参赛;不得依赖第三方动态库,以免导致程序在评测环境不能运行;参赛程序初始化需在 3 分钟内完成,关闭需在 10 分钟内完成,测试需在 30 分钟内完成。
什么样的作品容易拿高分?
如果想完成高质量作品在大赛中“一骑绝尘”,那么你可能还需要了解比赛的评分逻辑,每个作品的测评分为两个阶段,包括正确性评测和性能评测。
正确性评测阶段,评测程序会进行纯读和读写混合测试。测试系统会随机对所有数据页面进行访问,访问包括读和写。
a. 对读取的页面,会对该页面进行正确性验证,页面验证不通过测试将结束,且测试不得分。
b. 对写入的页面,该页面可能在后续被再次访问,并进行正确性验证;同时当评测程序完成运行测试后,将发送信号关闭参赛程序,参赛程序需持久化尚未持久化的页面数据,评测程序将进行页面正确性验证。如果验证不通过,测试将结束,且测试不得分。
只有通过正确性评测阶段,才会进入性能评测阶段。性能评测的评测模型会有多种,评测参数参考如下:
在正确性验证通过的情况下,对每个不同评测模型的测试阶段整体计时,如果该阶段的正确检测全部通过,则成绩有效,根据总用时从低到高进行排名(用时越短排名越靠前)。评测程序将根据评测模型对参赛程序进行测试,计时从发送第一个请求开始,最后一个请求完成结束,最终计时为各项测试模型的测试阶段耗时之和。
最后再次提醒大家,本次“互联网+”大赛 GaussDB 赛道的时间安排:报名和时间截止到 8 月 31 日,初/复赛截止 9 月 30 日,预计 10 月中下旬举行全国总决赛。点击链接进入大赛页面报名:戳它报名。想要了解更多赛题详解,欢迎观看 GaussDB 命题解读直播回顾:回顾链接。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/7df0007a88f4e8ce0a29902b5】。文章转载请联系作者。
评论