论文部分内容阅读
随着数据规模的爆炸性增长,人类创造了分布式计算系统,实现结构化数据的处理,即联机分析处理。已有的分布式计算系统,如分布式内存数据库,普遍采用批处理方式处理海量数据,同时使用更适合批处理计算的存储格式存储数据,即列式存储。同时内存数据库使用更大的内存空间弥补传统数据库的磁盘“I/O墙”问题。为了进一步提升计算能力,已有的批处理方式的“内存墙”问题需要被解决。使用编译技术动态生成计算任务的可执行代码的方法,能进一步提升分布式内存数据库中单机和系统总体的计算能力,也对计划生成和执行提出了新的要求。该方法一方面能使用运行时信息生成精简和高效的可执行代码,提升代码局部性;另一方面能融合多个计算任务减少内存数据读写,提升数据局部性。后者也适应于非易失性内存这一新的存储介质。本文基于分布式列式内存数据库,研究通过动态生成执行代码的技术提升计算效率的方法及对应的计划生成和执行方法。主要工作如下:1.研究、设计和实现了基于大规模分布式内存列式数据库的编译执行框架。该框架将计算任务的执行计划图转换为底层的计算原语(算子),并能将多个计算原语的处理融入同一个函数的可执行代码中。该框架支持自定义其他计算原语以在生成代码中添加特定的计算功能;2.设计并实现了基于编译执行的数据库执行框架以及各一套计算原语。该执行框架负责任务的接收和执行调度,以及对生成代码的管理。其在接收分布的执行计划后,利用基础的计算原语将其编译为可执行代码执行;3.研究在分布式环境下的执行计划节点的融合的策略。该策略将相关计算功能融合提升数据局部性进而提升相邻执行计划节点的执行速度。最后,本文对执行框架和编译执行框架组成的系统进行功能和性能测试。测试表明编译执行技术生成的代码具有明显更快的执行速度,同时融合后的执行计划节点的生成代码通过减少内存数据传输明显减少了执行时间。