当前位置:主页 > 科技论文 > 软件论文 >

面向列式内存数据库的代码生成技术

发布时间:2022-10-20 09:01
  在飞速发展的信息时代,对于各类信息的存储、查询需求越来越大,尤其是当现实社会的各类信息都被转化成电子信息存放和表示时。对于数据的存储、加工、查询的需求越来越高。数据库是数据处理的中坚力量,如何提高查询性能是数据库设计与实现的重要议题。数据库拥有复杂的类型体系和解释执行的计算方式,带来许多冗余计算,这导致其执行效率较低,无法充分利用硬件特性;而传统编译器又只能在执行前生成代码,无法消除数据库带来的不确定性。如果在执行时使用数据库的动态信息和用户查询请求中的信息,去掉不需要的冗余指令,优化代码逻辑,将进一步提高执行效率。本文讨论了在分布式列式内存数据库中,使用即时编译器作为工具,根据数据库中的算子逻辑和动态执行信息,生成更优执行代码的技术。本文没有采用将整个查询分析树转化成执行函数的做法,因为在分布式环境下,列式存储的引擎将打破这样转化带来的优势,而只在单个算子内部进行代码生成。本文采用Impala数据引擎封装的即时编译库作为底层支撑组件,在分布式内存数据库Goldfish中,实现了排序、分组两个算子和表达式计算部分的编译执行,并提出了基于元组数目进行自适应代码生成的方法。文章详细介绍了数... 

【文章页数】:102 页

【学位级别】:硕士

【文章目录】:
摘要
abstract
第一章 绪论
    1.1 研究工作的背景与意义
    1.2 代码生成技术的国内外研究历史与现状
    1.3 本文的主要贡献与创新
    1.4 本论文的结构安排
第二章 相关技术和理论基础
    2.1 分布式内存数据库引擎简述
    2.2 即时编译技术(JIT)的原理
    2.3 编译器的优化策略
        2.3.1 循环相关优化
        2.3.2 内联相关优化
    2.4 LLVM编译器框架简介
        2.4.1 LLVM编译器的架构
        2.4.2 LLVM编译器的即时编译技术
        2.4.3 LLVM编译器的中间语言
    2.5 即时编译引擎的使用
        2.5.1 LLVM JIT引擎的使用流程
        2.5.2 即时编译支撑组件简介
    2.6 CPU特性与代码生成
        2.6.1 高速缓存
        2.6.2 分支预测技术
    2.7 函数调用过程
    2.8 数据库中的代码生成技术
        2.8.1 算子融合
        2.8.2 算子内代码生成
    2.9 本章小结
第三章 分布式数据库系统概述与总体架构
    3.1 系统背景及整体架构
        3.1.1 系统背景
        3.1.2 系统整体架构
    3.2 查询引擎的架构
    3.3 代码生成部分的基本结构
    3.4 本章小结
第四章 分布式内存数据库中的代码生成方案设计
    4.1 代码生成模块设计概述
    4.2 分布式代码生成方案选择
        4.2.1 分布式内存数据库中的算子融合
        4.2.2 分布式内存数据库中的动态代码生成
    4.3 算子内代码生成的方案设计
        4.3.1 代码生成使用时机
        4.3.2 分布式环境中的算子内代码生成策略
        4.3.3 排序算子中的代码生成方案
        4.3.4 分组算子中的代码生成方案
        4.3.5 聚合算子中的代码生成方案
        4.3.6 物化算子中的代码生成方案
    4.4 本章小结
第五章 分布式内存数据库中的代码生成实现方案
    5.1 裁剪动态编译库
        5.1.1 核心类的裁剪和修改
        5.1.2 元组描述结构的修改和裁剪
        5.1.3 内存数据库中的代码生成流程
    5.2 中间数据结构实现
    5.3 排序算子的代码生成实现
        5.3.1 整体流程
        5.3.2 中间数据初始化
        5.3.3 物化元组代码的生成方案
        5.3.4 元组比较代码的生成方案
        5.3.5 排序算子提取行号的实现方案
    5.4 分组算子的代码生成实现
        5.4.1 整体流程
        5.4.2 拼接字符串的函数代码生成方案
    5.5 聚合算子的代码生成实现
        5.5.1 整体流程
        5.5.2 表达式计算输入输出接口
        5.5.3 生成表达式计算函数的实现方案
    5.6 物化算子的代码生成实现
        5.6.1 分布式执行流程及代码生成时机
        5.6.2 确定行号集合
        5.6.3 组装数据
    5.7 本章小结
第六章 测试与分析
    6.1 功能测试
        6.1.1 测试目标及方案
        6.1.2 排序算子的功能测试
        6.1.3 分组算子的功能测试
        6.1.4 聚合算子的功能测试
    6.2 性能测试
        6.2.1 测试目标及方案
        6.2.2 排序算子的性能测试
        6.2.3 分组算子的性能测试
        6.2.4 聚合算子的性能测试
    6.3 系统整体测试
        6.3.1 测试环境
        6.3.2 测试步骤
        6.3.3 排序功能的测试结果
        6.3.4 聚合和分组功能的测试结果
    6.4 本章小结
第七章 总结与展望
致谢
参考文献


【参考文献】:
硕士论文
[1]基于MongoDB的排水设施监管养护系统的应用研究[D]. 刘仪轩.东华大学 2020



本文编号:3694175

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3694175.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户236ff***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com