一种基于FPGA的内存OLAP查询优化方法技术

技术编号:13569607 阅读:90 留言:0更新日期:2016-08-21 11:58
本发明专利技术涉及一种基于FPGA的内存OLAP查询优化方法,其步骤:构建面向内存‑闪存的数据仓库异构存储模型;基于异构存储模型面向CPU‑FPGA异构处理器的查询优化:通过子查询生成一个分组投影向量;对分组投影向量进行字典表压缩;按投影字典表将分组投影更新为基于字典表编码的分组投影向量;分组投影向量与事实表外键进行连接操作,生成用于度量列聚集计算的度量向量;基于度量向量的索引聚集计算;基于异构存储模型面向CPU、FPGA异构计算平台的查询优化:FPGA与CPU共享访问相同的内存地址空间;FPGA为PCI‑E加速卡配置时,使用FPGA加速连接性能、FPGA通过PCI‑E通道直接访问闪存卡进行数据处理;当FPGA集成到闪存中时,通过FPGA加速闪存卡的数据访问及聚集计算性能。

【技术实现步骤摘要】

本专利技术涉及一种数据库领域中的内存OLAP查询方法,特别是关于一种基于FPGA的内存OLAP查询优化方法
技术介绍
FPGA是专用集成电路(ASIC)领域中的一种半定制电路,FPGA是可编程器件,FPGA可做全定制或半定制ASIC电路。FPGA具有更高集成密度、更大容量、更低功耗的特点,目前被一些数据库厂商用作硬件级的加速器使用。下一代数据中心将大量引入加速器技术参与各种应用的计算,提高数据中心的性能功耗比及计算实时性。在未来处理器的发展中也显现了将FPGA集成到CPU的一体化异构计算架构趋势,提高处理器的能耗效率和并行计算性能。如图1所示,当前与未来FPGA应用可以分为三种类型:一、FPGA集成在主板或CPU芯片内,CPU与FPGA访问相同的内存地址空间,CPU与FPGA在计算任务上进行划分,FPGA承担适合其计算特点的简单、高并行数据计算任务,CPU负责复杂数据管理、处理任务与复杂数据类型及数据结构上的计算,CPU与FPGA共享内存带宽,具有相同的内存访问性能,需要通过负载优化配置发挥CPU与FPGA各自的性能并形成流水并行处理;二、使用基于PCI-E的FPGA加速卡,FPGA有自己的局部内存,通过PCI-E通道访问内存,相对于CPU有较大的内存访问延迟,需要优化FPGA卡上内存存储效率及本地计算效率,加速查询处理中数据集较小的计算密集型负载;三、将FPGA集成到大容量闪存中,通过FPGA核心及内存提供在闪存存储设备上的数据处理能力,将一些在大量数据上进行计算并输出较小结果或稀疏的索引访问操作下推到最底端的数据存储设备层,消除以页面为单位的粗粒度数据访问中无效数据传输的带宽消耗,优化闪存数据传输性能。FPGA在应用中存在多种形态,因此针对FPGA的查询优化技术需要具有较好的适应性,需要查询计算模型能够动态地适应不同的FPGA计算平台硬件特征,实现计算与FPGA数据处理特征的匹配。而当前数据库广泛采用的迭代处理模型是一种强耦合的流水处理模型,当面对异构的计算资源,如CPU、GPU、Xeon Phi、FPGA,以及异构的存储资源,如DRAM、NVRAM、Flash等,在访问延迟较大的异构计算单元及存储单元之间的迭代处理产生极大的数据访问与计算延迟和较高的数据迁移代价。因此,需要针对FPGA可能的硬件配置优化查询处理算法设计,使查询处理算法数据结构与处理方法与FPGA的硬件计算特性相适应。
技术实现思路
针对上述问题,本专利技术的目的是提供一种基于FPGA的内存OLAP查询优化方法,该方法优化数据库在内存和闪存层次的存储策略,将传统基于迭代处理模型的查询处理过程解耦合,OLAP查询处理过程分解为若干独立的计算过程,各个计算过程通过数据进行驱动,优化各个计算过程之间传递的数据集大小,从而使OLAP查询的各个计算过程能够独立地应用于不同的FPGA计算模式。同时,该方法有效地将OLAP查询任务分解为弱耦合的阶段处理模式并分配给CPU和FPGA处理,并发查询在CPU和FPGA上的处理阶段可以流水地并行执行,提高并发查询的处理效率,提高内存OLAP查询处理性能和降低计算功耗。为实现上述目的,本专利技术采取以下技术方案:一种基于FPGA的内存OLAP查询优化方法,其特征在于,该方法包括以下步骤:步骤一、构建面向内存-闪存的数据仓库异构存储模型:数据仓库全部的表持久性地存储于大容量闪存,其中数据量最大的事实表度量属性存储于PCI-E闪存卡,事实表外键列常驻于内存,而较小的维表常驻于内存或存储于闪存;步骤二、基于异构存储模型面向CPU-FPGA异构处理器的内存OLAP查询优化方法:(1)将SQL查询命令分解为应用于各个维表上的SPG子SQL命令,按WHERE条件投影出当前维表中GROUP BY子句对应的分组属性,不满足选择条件输出空值,满足条件则输出分组属性值,通过子查询生成一个分组投影向量;其中,SPG分别表示选择、投影、分组;(2)对分组投影向量进行字典表压缩,为不同的分组属性建立字典表并分配字典表编码,当分组属性包含多个属性时,以属性组为单位进行字典表压缩;(3)按投影字典表将分组投影更新为基于字典表编码的分组投影向量;(4)分组投影向量与事实表外键进行连接操作,生成用于度量列聚集计算的度量向量;(5)基于度量向量的索引聚集计算;5.1)当多维数组低于CPU的L3Cache Slice,使用多维数组作为OLAP查询的分组聚集器,按度量向量中非空位置访问相应的度量属性值,映射到度量向量单元中数组地址对应的多维数组单元进行聚集计算;5.2)当多维数组高于CPU的L3 Cache Slice并且较为稀疏时,采用哈希分组聚集计算方法,即使用度量向量中各维表分组的多维地址作为哈希键值在度量列上进行哈希分组聚集计算。所述步骤二(4)中,在执行连接操作时,采用如下连接方法:4.1)当维表使用代理键,即连续的自然数列1,2,3…作为主键时,事实表外键值直接映射为分组投影向量的偏移地址,以外键地址映射代替连接操作;4.2)当维表不使用代理键时,根据FPGA的应用模式使用两种策略:4.2.1)当CPU与FPGA共享内存地址空间时,分组投影向量转换为哈希表,事实表外键列与维哈希表执行常规的哈希连接操作;4.2.2)当FPGA为PCI-E加速卡时,FPGA有独立的设备内存,按FPGA内存容量加速事实表外键水平分片上的OLAP查询处理性能;为维表增加一个代理键列,加载到FPGA内存的事实表外键列分片通过与维表连接键和代理键子表的连接操作将外键列更新为代理外键列,实现外键值与分组投影向量的直接地址映射关系;4.2.3)将内存外键列全部更新为代理外键列,支持内存外键列与分组投影向量的直接地址映射关系;4.3)OLAP操作中事实表与维表的连接操作。所述OLAP操作中事实表与维表的连接操作:4.3.1)采用事实表外键与维表分组投影向量之间地址映射操作时,按各维表分组属性字典表成员的数量构建多维数组,事实表外键列映射的维表分组投影向量中的字典表编码用作多维数组的维坐标,通过外键列与各维表分组投影向量的地址映射访问构建当前事实表记录在多维数组中的单元地址,然后将其转换为一维数组地址存储于度量向量中;4.3.2)当使用哈希连接操作时,分组属性为字典表压缩编码,按多维数组相同的方式将各维表分组压缩编码转换为多维数组地址格式,然后转换为一维数组地址格式存储于度量向量中。一种基于FPGA的内存OLAP查询优化方法,其特征在于,该方法包括以下步骤:步骤一、构建面向内存-闪存的数据仓库异构存储模型:数据仓库全部的表持久性地存储于大容量闪存,其中数据量最大的事实表度量属性存储于PCI-E闪存卡,事实表外键列常驻于内存,而较小的维表常驻于内存或存储于闪存;步骤二、基于异构存储模型面向CPU、FPGA异构计算平台的内存OLAP查询优化方法:(1)当FPGA集成到CPU内部或主板上而与CPU共享访问相同的内存地址空间时:1.1)维表处理阶段涉及复杂的数据类型及内存数据库管理系统功能,由CPU处理,生成维表分组字典表及维表分组投影向量;1.2)事实表外键列与维表分组投影向量之间的计算由CPU或FPGA执行,当FGPA执行哈希连接代价较高时由CPU执行或本文档来自技高网
...

【技术保护点】
一种基于FPGA的内存OLAP查询优化方法,其特征在于,该方法包括以下步骤:步骤一、构建面向内存‑闪存的数据仓库异构存储模型:数据仓库全部的表持久性地存储于大容量闪存,其中数据量最大的事实表度量属性存储于PCI‑E闪存卡,事实表外键列常驻于内存,而较小的维表常驻于内存或存储于闪存;步骤二、基于异构存储模型面向CPU‑FPGA异构处理器的内存OLAP查询优化方法:(1)将SQL查询命令分解为应用于各个维表上的SPG子SQL命令,按WHERE条件投影出当前维表中GROUP BY子句对应的分组属性,不满足选择条件输出空值,满足条件则输出分组属性值,通过子查询生成一个分组投影向量;其中,SPG分别表示选择、投影、分组;(2)对分组投影向量进行字典表压缩,为不同的分组属性建立字典表并分配字典表编码,当分组属性包含多个属性时,以属性组为单位进行字典表压缩;(3)按投影字典表将分组投影更新为基于字典表编码的分组投影向量;(4)分组投影向量与事实表外键进行连接操作,生成用于度量列聚集计算的度量向量;(5)基于度量向量的索引聚集计算;5.1)当多维数组低于CPU的L3Cache Slice,使用多维数组作为OLAP查询的分组聚集器,按度量向量中非空位置访问相应的度量属性值,映射到度量向量单元中数组地址对应的多维数组单元进行聚集计算;5.2)当多维数组高于CPU的L3Cache Slice并且较为稀疏时,采用哈希分组聚集计算方法,即使用度量向量中各维表分组的多维地址作为哈希键值在度量列上进行哈希分组聚集计算。...

【技术特征摘要】
1.一种基于FPGA的内存OLAP查询优化方法,其特征在于,该方法包括以下步骤:步骤一、构建面向内存-闪存的数据仓库异构存储模型:数据仓库全部的表持久性地存储于大容量闪存,其中数据量最大的事实表度量属性存储于PCI-E闪存卡,事实表外键列常驻于内存,而较小的维表常驻于内存或存储于闪存;步骤二、基于异构存储模型面向CPU-FPGA异构处理器的内存OLAP查询优化方法:(1)将SQL查询命令分解为应用于各个维表上的SPG子SQL命令,按WHERE条件投影出当前维表中GROUP BY子句对应的分组属性,不满足选择条件输出空值,满足条件则输出分组属性值,通过子查询生成一个分组投影向量;其中,SPG分别表示选择、投影、分组;(2)对分组投影向量进行字典表压缩,为不同的分组属性建立字典表并分配字典表编码,当分组属性包含多个属性时,以属性组为单位进行字典表压缩;(3)按投影字典表将分组投影更新为基于字典表编码的分组投影向量;(4)分组投影向量与事实表外键进行连接操作,生成用于度量列聚集计算的度量向量;(5)基于度量向量的索引聚集计算;5.1)当多维数组低于CPU的L3Cache Slice,使用多维数组作为OLAP查询的分组聚集器,按度量向量中非空位置访问相应的度量属性值,映射到度量向量单元中数组地址对应的多维数组单元进行聚集计算;5.2)当多维数组高于CPU的L3Cache Slice并且较为稀疏时,采用哈希分组聚集计算方法,即使用度量向量中各维表分组的多维地址作为哈希键值在度量列上进行哈希分组聚集计算。2.如权利要求1所述的一种基于FPGA的内存OLAP查询优化方法,其特征在于:所述步骤二(4)中,在执行连接操作时,采用如下连接方法:4.1)当维表使用代理键,即连续的自然数列1,2,3…作为主键时,事实表外键值直接映射为分组投影向量的偏移地址,以外键地址映射代替连接操作;4.2)当维表不使用代理键时,根据FPGA的应用模式使用两种策略:4.2.1)当CPU与FPGA共享内存地址空间时,分组投影向量转换为哈希表,事实表外键列与维哈希表执行常规的哈希连接操作;4.2.2)当FPGA为PCI-E加速卡时,FPGA有独立的设备内存,按FPGA内存容 量加速事实表外键水平分片上的OLAP查询处理性能;为维表增加一个代理键列,加载到FPGA内存的事实表外键列分片通过与维表连接键和代理键子表的连接操作将外键列更新为代理外键列,实现外键值与分组投影向量的直接地址映射关系;4.2.3)将内存外键列全部更新为代理外键列,支持内存外键列与分组投影向量的直接地址映射关系;4.3)OLAP操作中事实表与维表的连接操作。3.如权利要求2所述的一种基于FPGA的内存OLAP查询优化方法,其特征在于:所述OLAP操作中事实表与维表的连接操作:4.3.1)采用事实表外键与维表分组投影向量之间地址映射操作时,按各维表分组属性字典表成员的数量构建多维数组,事实表外键列映射的维表分组投影向量中的字典表编码用作多维数组的维坐标,通过外键列与各维表分组投影向量的地址映射访问构建当前事实表记录在多维数组中的单元地址,然后将其转换为一维数组地址存储于度量向量中;4.3.2)当使用哈希连接操作时,分组属性为字典表压缩编码,按多维数组相同的方式将各维表分组压缩编码转换为多维数组地址格式,然后转换为一维数组地址格式存储于度量向量中。4.一种基于FPGA的内存OLAP查询优化方法,其特征在于,该方法包括以下步骤:步骤一、构建面向内存-闪存的数据仓库异构存储模型:数据仓库全部的表持久性地存储于大容量闪存,其中数据量最大的事实表度量属性存储于PCI-E闪存卡,事实表外键列常驻于内存,而较小的维表常驻于内存或存储于闪存;步骤二、基于异构存储模型面向CPU、FPGA异构计算平台的内存OLAP查询优化方法:(1)当FPGA集成到CPU内部或主板上而与CPU共享访问相同的内存地址空间时:1.1)维表处理阶段涉及复杂的数据类型及内存数据库管理系统功能,由CPU处理,生成维表分组字典表及维表分组投影向量;1.2)事实表外键列与维表分组投影向量之间的计算由CPU或FPGA执行,当FGPA执行哈希连接代价较高时由CPU执行或者通过维表代理键更新内存中的事实表外键,由FPGA执行基于地址映射的连接操作;1.3)基于度量...

【专利技术属性】
技术研发人员:张延松张宇柴云鹏周烜王珊
申请(专利权)人:中国人民大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1