大规模分布式内存列式数据库编译执行框架
发布时间:2021-01-13 17:13
随着数据规模的爆炸性增长,人类创造了分布式计算系统,实现结构化数据的处理,即联机分析处理。已有的分布式计算系统,如分布式内存数据库,普遍采用批处理方式处理海量数据,同时使用更适合批处理计算的存储格式存储数据,即列式存储。同时内存数据库使用更大的内存空间弥补传统数据库的磁盘“I/O墙”问题。为了进一步提升计算能力,已有的批处理方式的“内存墙”问题需要被解决。使用编译技术动态生成计算任务的可执行代码的方法,能进一步提升分布式内存数据库中单机和系统总体的计算能力,也对计划生成和执行提出了新的要求。该方法一方面能使用运行时信息生成精简和高效的可执行代码,提升代码局部性;另一方面能融合多个计算任务减少内存数据读写,提升数据局部性。后者也适应于非易失性内存这一新的存储介质。本文基于分布式列式内存数据库,研究通过动态生成执行代码的技术提升计算效率的方法及对应的计划生成和执行方法。主要工作如下:1.研究、设计和实现了基于大规模分布式内存列式数据库的编译执行框架。该框架将计算任务的执行计划图转换为底层的计算原语(算子),并能将多个计算原语的处理融入同一个函数的可执行代码中。该框架支持自定义其他计算原语以...
【文章来源】:电子科技大学四川省 211工程院校 985工程院校 教育部直属院校
【文章页数】:94 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
第一章 绪论
1.1 研究背景与意义
1.2 国内外研究历史及现状
1.3 本文的主要贡献和创新
1.4 本论文的结构安排
第二章 理论基础及相关技术
2.1 数据库执行模型
2.1.1 火山模型
2.1.2 物化模型
2.1.3 向量化模型
2.1.4 拉取模型和推送模型
2.2 编译执行方式与执行计划中数据流式执行
2.2.1 编译执行
2.2.2 执行计划中的Pipeline
2.3 编译技术
2.3.1 编译相关概念与程序执行方式
2.3.2 GCC与 C/C++
2.3.3 LLVM
2.4 本章小结
第三章 分布式内存列式数据库编译执行框架的总体设计
3.1 分布式内存数据库架构
3.2 应用场景与设计目标
3.3 系统总体架构和模块设计
3.3.1 执行引擎总体架构和系统执行流程
3.3.2 执行引擎内部架构
3.3.3 编译模块
3.3.4 代码复用和管理器模块
3.3.5 数据存储模型和概念
3.4 编译执行下的执行计划优化
3.4.1 表达式的生成
3.4.2 执行计划及其执行机分配
3.4.3 多列数据读取和筛选的融合
3.4.4 Join节点的融合
3.4.5 Group、Aggregation节点的融合
3.5 各节点算子代码生成方法
3.5.1 Pipeline代码生成方法
3.5.2 Scan节点和Filt节点代码生成方案
3.5.3 Join节点的代码生成方案
3.5.4 Sort节点的代码生成方案
3.5.5 Group节点的代码生成方案
3.5.6 Aggregation节点的代码生成方案
3.5.7 算术计算Algo节点的代码生成方案
3.6 代码参数化和匹配方法
3.6.1 代码参数化方法
3.6.2 代码匹配技术
3.7 本章小结
第四章 分布式内存列式数据库编译执行框架的详细设计与实现
4.1 整体任务执行流程实现
4.1.1 编译执行的整体任务处理流程的实现
4.1.2 线程池框架的实现
4.1.3 网络库和消息驱动流程的实现
4.2 LLVM库的封装实现
4.2.1 LLVM库基础对象和功能
4.2.2 基本对象的封装实现
4.2.3 控制语句的封装实现
4.2.4 函数构造的封装实现
4.3 编译执行相关数据结构的实现
4.3.1 生成代码的执行参数
4.3.2 中间数据结构
4.4 算子和生成代码的实现
4.4.1 代码生成、编译与执行流程
4.4.2 节点的编译过程
4.4.3 Scan算子的实现
4.4.4 Filt算子的实现
4.4.5 Join算子的实现
4.4.6 Group算子的实现
4.4.7 Aggregation算子的实现
4.4.8 Algo算子和Output算子的实现
4.4.9 代码管理器
4.5 本章小结
第五章 系统测试与分析
5.1 测试环境
5.2 功能测试
5.3 性能测试
5.3.1 Filt节点算子测试
5.3.2 Join节点算子测试
5.3.3 Group节点测试
5.3.4 Sort节点算子测试
5.3.5 Filt和 Join
5.3.6 Join与 Group
5.4 本章小结
第六章 总结与展望
致谢
参考文献
攻读硕士期间取得的研究成果
【参考文献】:
期刊论文
[1]OceanBase关系数据库架构[J]. 阳振坤. 华东师范大学学报(自然科学版). 2014(05)
[2]基于EPOLL的单进程事件驱动通信服务器设计与分析[J]. 段翰聪,卢显良,宋杰. 计算机应用. 2004(10)
本文编号:2975254
【文章来源】:电子科技大学四川省 211工程院校 985工程院校 教育部直属院校
【文章页数】:94 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
第一章 绪论
1.1 研究背景与意义
1.2 国内外研究历史及现状
1.3 本文的主要贡献和创新
1.4 本论文的结构安排
第二章 理论基础及相关技术
2.1 数据库执行模型
2.1.1 火山模型
2.1.2 物化模型
2.1.3 向量化模型
2.1.4 拉取模型和推送模型
2.2 编译执行方式与执行计划中数据流式执行
2.2.1 编译执行
2.2.2 执行计划中的Pipeline
2.3 编译技术
2.3.1 编译相关概念与程序执行方式
2.3.2 GCC与 C/C++
2.3.3 LLVM
2.4 本章小结
第三章 分布式内存列式数据库编译执行框架的总体设计
3.1 分布式内存数据库架构
3.2 应用场景与设计目标
3.3 系统总体架构和模块设计
3.3.1 执行引擎总体架构和系统执行流程
3.3.2 执行引擎内部架构
3.3.3 编译模块
3.3.4 代码复用和管理器模块
3.3.5 数据存储模型和概念
3.4 编译执行下的执行计划优化
3.4.1 表达式的生成
3.4.2 执行计划及其执行机分配
3.4.3 多列数据读取和筛选的融合
3.4.4 Join节点的融合
3.4.5 Group、Aggregation节点的融合
3.5 各节点算子代码生成方法
3.5.1 Pipeline代码生成方法
3.5.2 Scan节点和Filt节点代码生成方案
3.5.3 Join节点的代码生成方案
3.5.4 Sort节点的代码生成方案
3.5.5 Group节点的代码生成方案
3.5.6 Aggregation节点的代码生成方案
3.5.7 算术计算Algo节点的代码生成方案
3.6 代码参数化和匹配方法
3.6.1 代码参数化方法
3.6.2 代码匹配技术
3.7 本章小结
第四章 分布式内存列式数据库编译执行框架的详细设计与实现
4.1 整体任务执行流程实现
4.1.1 编译执行的整体任务处理流程的实现
4.1.2 线程池框架的实现
4.1.3 网络库和消息驱动流程的实现
4.2 LLVM库的封装实现
4.2.1 LLVM库基础对象和功能
4.2.2 基本对象的封装实现
4.2.3 控制语句的封装实现
4.2.4 函数构造的封装实现
4.3 编译执行相关数据结构的实现
4.3.1 生成代码的执行参数
4.3.2 中间数据结构
4.4 算子和生成代码的实现
4.4.1 代码生成、编译与执行流程
4.4.2 节点的编译过程
4.4.3 Scan算子的实现
4.4.4 Filt算子的实现
4.4.5 Join算子的实现
4.4.6 Group算子的实现
4.4.7 Aggregation算子的实现
4.4.8 Algo算子和Output算子的实现
4.4.9 代码管理器
4.5 本章小结
第五章 系统测试与分析
5.1 测试环境
5.2 功能测试
5.3 性能测试
5.3.1 Filt节点算子测试
5.3.2 Join节点算子测试
5.3.3 Group节点测试
5.3.4 Sort节点算子测试
5.3.5 Filt和 Join
5.3.6 Join与 Group
5.4 本章小结
第六章 总结与展望
致谢
参考文献
攻读硕士期间取得的研究成果
【参考文献】:
期刊论文
[1]OceanBase关系数据库架构[J]. 阳振坤. 华东师范大学学报(自然科学版). 2014(05)
[2]基于EPOLL的单进程事件驱动通信服务器设计与分析[J]. 段翰聪,卢显良,宋杰. 计算机应用. 2004(10)
本文编号:2975254
本文链接:https://www.wllwen.com/kejilunwen/shengwushengchang/2975254.html
最近更新
教材专著