联系我们:010-88559646

  老师群

170086145

  学生群

179326524

209318323

215410234

客服电话:010-88559646

A8-高性能分析型连接查询设计与实现

时间:2022-03-24        来 源:中国软件杯

第十一届中国软件杯大赛--A组赛题 

赛题名称:高性能分析型连接查询设计与实现

组类:A组( 本科、研究生、高职)

出题企业武汉达梦数据库股份有限公司

答疑老师:谢老师 xjw@dameng.com(请在邮件标题中标注【中国软件杯】)

答疑QQ群310047867

开发说明下载:开发说明.docx

线上赛题解析直播回放:https://wx.vzan.com/live/tvchat-1299937350?shauid=undefined&vprid=0&v=1652958422357

赛题简介:介绍整个赛题的实现目标、实用价值、涉及技术和整体要求

目标:本赛题要求参赛选手实现一种分布式数据库领域的高性能分析型连接查询算法。

价值:随着数据规模不断增长,分布式数据库已经得到越来越广泛的应用。在分布式环境下,查询性能优化方案与单机环境存在着显著的不同点,如要考虑数据分布策略、通信代价等。TPC-H是事务处理性能委员会(Transaction Processing Performance Council)组织制定的用来模拟决策支持类应用的一个测试集,在学术界和工业界普遍采用它来评价决策支持技术方面应用的性能。本赛题基于TPC-H基准中的Q17业务逻辑简化而来,探索实现分布式数据库中的高性能分析型连接查询算法,有助于提升国内分布式数据库研发人员的数量和技术水平,为国产分布式数据库研发提供技术人才。

通过本赛题,可以让参赛者快速了解分布式数据库的优化原理,并在此基础上综合衡量负载、计算、通信代价,选择合适的设计方案,达到最佳的查询性能。通过本赛题可以考察以下内容:多线程并行计算编程能力、高性能网络编程能力、算法综合优化能力

涉及技术:网络编程、多进程/多线程并行计算

整体要求:基于指定的数据规模、数据集,实现一种分布式数据库领域的高性能连接查询优化算法,完成要求的性能测试,并进行效果演示。

赛题业务场景:描述赛题相关的真实企业业务背景。从真实场景中,适当简化或者提炼出适合比赛的赛题场景

分布式连接是分布式数据库最核心、最基础的特性。本赛题基于TPC-H中测试基准中的一个查询进行简化,TPC-H模拟了一个批发商的零件供应业务,其中Q17基于7年的历史销售数据来分析如果不供应指定类型零件的小额订单,每年会损失多少收入。通过这种分析,可以将注意力集中在大型订单上,从而降低管理成本。该查询需要基于两个表的数据做等值连接,并且对扫描的数据进行过滤。本赛题基于Q17进行了一定的简化,要求将初始数据以行/列式数据结构加载到内存中,然后模拟实现一个分析型查询的业务逻辑,研发成果可以应用于分布式数据库。

基本功能要求

1、在单台服务器上启动参赛者程序,共启动4个实例。

2、4个实例各自加载50万零件数据和大约1500万行订单数据到内存中(每个实例加载不同的部分,记录加载时间)。

3、程序可以指定有效的零件品牌参数,非法的零件品牌报错,对于有效的零件品牌参数,完成如下要求的功能并计算时间:

(1)计算每个零件的销售总量、所有零件的销售总量并得出零件平均销售量

(2)对于满足用户指定的零件品牌的零件,如果该零件销售总量小于(1)中的平均销售量的30%,则认定为非畅销零件;

注意:零件品牌的格式为Brand#MN,其中M、N都是在1-5中任意选择,如Brand#12

(3)计算并输出该品牌的所有非畅销零件的销售总额。

非功能性要求

1、代码正常运行,无bug。

2、实例间通过IP+端口方式进行通信(模拟多个节点),不得采用共享内存方式进行通信。

实现条件:开发环境、实验平台、开发语言、数据库、编译器、涉及硬件等实现条件

1、开发语言:c/c++/java/go任选一种

2、初始数据:参考【测试数据或平台】,每个实例将dbgen.exe生成的文本文件中的数据按一定策略加载到自己定义的数据结构中,要求所有列的数据都在内存中,每个实例加载part.tbl的50万行数据,lineitem.tbl的1500万行左右的数据。

3、硬件环境:自己确定,采用国产软硬件平台优先(建议使用8-16核CPU,8G/16G内存,50G以上磁盘)(基本原则性能分值的60%直接根据执行时间来决定,另外性能相同情况下,采用国产操作系统比非国产操作系统得分高,硬件环境CPU核心数越少得分越高,内存容量越少得分越高,HDD硬盘比SSD硬盘得分高)

测试数据或平台:提供给参赛者的测试环境和测试数据

测试数据生成程序以及TPC benchmark文档 下载:TPC介绍.zip

使用TPC-H官方提供的数据生成程序dbgen生成比例因子为10的part表和lineitem表的文本数据,命令如下(注意区分大小写):

.dbgen.exe -s 10 -T P

.dbgen.exe -s 10 -T L

上述命令生成part.tbl和lineitem.tbl这两个文本文件,文本文件总大小约为8G左右,其中part.tbl包括200万行零件数据,lineitem.tbl包含接近6000万条订单数据。

part表对应的列信息如下:

P_PARTKEY:零件号,唯一,整数类型 

P_NAME:零件名称,唯一,字符串长度不超过55字节 

P_MFGR:制造商名称,字符串长度不超过25字节

P_BRAND:零件品牌,字符串长度不超过10字节

P_TYPE:零件类型, 字符串长度不超过25字节

P_SIZE:零件尺寸,整数 

P_CONTAINER:容器名称,字符串长度不超过10字节

P_RETAILPRICE:零件价格,浮点数

P_COMMENT:备注,字符串长度不超过23字节

lineitem表对应的列信息如下:

L_ORDERKEY:订单号,整数 

L_PARTKEY:零件号,整数,引用part表的P_PARTKEY 

L_SUPPKEY:供应商号,整数

L_LINENUMBER:订单细目号,整数 

L_QUANTITY:零件数量,整数

L_EXTENDEDPRICE:零件价格,浮点数

L_DISCOUNT:零件折扣,浮点数,本课题不考虑折扣

L_TAX:税率,浮点数,本课题不考虑税

L_RETURNFLAG:订单退回标志,字符串,1字节 

L_LINESTATUS:订单状态,字符串,1字节

L_SHIPDATE:发货日期,日期类型

L_COMMITDATE:提交日期,日期类型

L_RECEIPTDATE:接收日期,日期类型

L_SHIPINSTRUCT:发货指令,字符串不超过25字节

L_SHIPMODE:发货方式,字符串不超过10字节

L_COMMENT:备注,字符串不超过44字节

开发所需设备及设备指标需求说明

自己确定,采用国产软硬件平台优先(建议使用8-16核CPU,8G/16G内存,50G以上磁盘)(对于性能部分的分值,基本原则是性能分值的60%直接根据执行时间来决定,另外性能相同情况下,采用国产操作系统比非国产操作系统得分高,硬件环境CPU核心数越少得分越高,内存容量越少得分越高,HDD硬盘比SSD硬盘得分高)

文档及其他要求

需要输出概要设计和详细设计文档,代码注释恰当

各评分项及大致占比

1.功能实现完整、结果正确(30%)

2.代码格式清晰、注释恰当、设计文档算法描述清晰(30%)

3.数据加载性能(20%)

4.查询性能(20%)

初赛作品提交要求

1.源文件

2.可执行文件

3.相关设计文档

4.演示视频(5分钟之内)

(演示视频中要包含获取操作系统版本信息、CPU信息、内存信息和磁盘信息的操作步骤;启动4个实例后,在任意一个实例的控制台界面输入load表示开始加载数据,然后在各控制台界面显示各实例自己加载的2个表的各自的数据量和数据加载的时间;然后输入select,表示开始执行查询,Brand#MN总共有25种情况,程序自动依次从Brand#11开始到Brand#55结束,显示这25种情况下的查询结果和消耗的查询时间,最后显示出总的执行时间)

【参赛团队作品中团队自主开发部分的软件作品著作权归参赛团队所有,其中具有市场应用及拓展的优秀作品,出题企业具有优先权,可以优先合作开发或者优先购买。另如基于该作品的任何合作升级开发、市场拓展等活动,以及在这一过程中所获得的任何商业费用,出题企业应与参赛团队协商解决。】



主办单位

工业和信息化部

教育部

江苏省人民政府

承办单位

中国电子信息产业发展研究院

江苏省工业和信息化厅

江苏省教育厅

教育部高等学校计算机类专业教学指导委员会

信息技术新工科产学研联盟

南京航空航天大学

执行单位

中国信息化周报

中国(南京)软件谷

江苏软件产业人才发展基金会

南京市软件和信息服务集群发展促进机构

关于我们

客服电话:010-88559646

邮编:100048

联系地址:北京市海淀区紫竹院路66号赛迪大厦18层

网站备案/许可证号:京ICP备05039896号-10     京公网安备 11010802020860号