关于GPU数据库的未来

作者:李如豹 博士,Rateup CTO


1. 介绍:什么是GPU数据库?

在过去十年里,GPU数据库已经成为数据库产品中的一个分支,并且解决了很多大规模数据密集型应用客户的关键问题。然而,虽然GPU数据库频繁出现在各种报道新闻中,但是业界对于GPU数据库的定义、GPU数据库的发展历史以及GPU数据库所能解决的本质应用需求仍然不了解。有鉴于此,本文尝试回答这些问题,并对GPU数据库的发展现状和将来预期进行讨论。


1.1 GPU数据库的定义

GPU数据库是个经常用的术语,但其本质指的是 “利用GPU设备处理某些数据处理功能的数据库管理系统” ,这些功能所涉及的范围可能很广,例如从某些特殊函数的处理到完整的查询引擎(或者其它数据库组件)。因为数据库管理系统的一个特性是允许用户添加自定义的函数来扩展数据库的功能,因此存在不同的场景关于GPU是如何被接入到数据库系统中的,这包括:场景(1)数据库管理系统本身不提供对GPU设备的任何管理和使用,但数据库管理系统提供扩展函数功能允许用户在其自定义函数内使用GPU设备的处理能力来完成某些操作;(2)数据库管理系统的某些内置功能被直接实现在GPU设备上,并且数据库管理系统直接管理底层的GPU设备,但是否其允许上层应用或者其它扩展函数使用或者访问GPU设备均可。

我们所定义的GPU数据库概念包含上述两种情况——只要数据库系统的某个功能使用了GPU设备,那么该数据库系统都可以称之为GPU数据库。最常见的GPU数据库形态(当前主流形态)是利用GPU设备来执行SQL查询,但对于不同产品而言,一个完整SQL查询所涉及的多个算子中,哪些被放置在GPU上执行并不确定;并且这种任务调度的方式完全可以在查询运行动态中完成。需要指出的是,理论上而言GPU并不仅限于执行查询处理,很多学术研究工作也指出在GPU上执行key/value查询和事务处理的可能性,因此当必要时,我们应该区分广义上的GPU数据库可能性和主流产品中的具体形态。根据目前工业界进展,我们所探讨的GPU数据库都是指的是利用GPU来加速查询处理的数据库系统。


1.2 GPU数据库的发展历史

从2003年到现在,GPU数据库这一产品形态或者数据库形态已经走过了18年!已知最早的学术研究工作是2003年的一篇SIGMOD论文: “Hardware Acceleration for Spatial Selections and Joins” 。该工作在通用GPU出现之前首次探讨了如何利用GPU硬件的rendering和searching能力来解决复杂计算几何算法的性能问题。该论文中所述技术方案出现在Nvidia CUDA生态系统之前,属于早期探索复杂数据库运算同底层硬件匹配的核心问题所在。在2010年之后,随着各种新应用的兴起,GPU数据库慢慢发展起来。对GPU数据库的学术研究开发了很多原型系统,例如GDB、GPUDB、Ocelot等,其目的是研究各种数据库并行算法,系统架构以及各种优化技术。工业界的GPU数据库包括了两类,一类是从PostgreSQL等传统开源CPU数据库上扩展而来的系统,例如日本的HeteroDB和英国的Brytlyt数据库;另一类是从头为GPU开发的全新数据库,例如美国的Kinetica和OmniSci,中国的RateupDB,以及以色列的SQream等。


1.3 GPU数据库所解决的工业需求

随着人类社会进入所谓的数据驱动时代,各种新应用需求层出不穷,其背后根本驱动原因是由于遍地普及的终端(例如手机)所带来的各种新经济模式,例如典型的移动计算带来的各种应用需求。这些需求往往超越了传统关系型数据库所提供和优化的数据处理能力,而需要新型数据库。我们总结有如下三种需求:

  1. 对实时业务价值的需求:这是最重要的业务需求,其目标是在各种及时更新的数据集上利用各种计算分析来获取瞬时的业务价值。一个典型的场景是实时车辆位置管理所带来的一系列业务应用,其典型代表是Uber内部使用的AresDB方案和USPS里面使用的Kinetica方案。对于一个运营几百万载客车辆的出行服务公司来说,实时的路线规划和偏航率分析不仅能够降低运营成本,改进客户体验,并且是实时恶意行为检测和犯罪提前预警的重要手段。

  1. 对极端计算能力的需求:当前存在对非结构化数据爆炸性的分析需求,而这些分析必须依赖于极端强大的计算能力,特别是这些数据的大规模增长和CPU有限算力之间的矛盾使得很多分析不能有效开展。典型的例子包括图数据分析、DNA序列分析,空间数据分析、3D结构分析等。尽管传统数据库在处理这些数据时存在性能问题,例如“Oracle Spatial and Graph”,各种行业的用户仍然首选一个数据库平台来执行这些分析,这是因为用户最需要数据库的简单接口以分离上层应用和底层系统。

  1. 对全面数据平台的需求:随着实时分析、智能分析、扩展分析的重要性日渐突出,传统企业内部多套数据库集成的方案越来越不能满足核心需求,特别是多套库之间所带来的业务延迟、协调管理以及维护开销等随着业务规模的增长越来越严重。例如,把大量数据从数据库提取出来送到一个智能分析平台里进行智能分析严重违背了用户对实时智能分析的需求。传统数据库系统通过加入各种扩展来尝试解决这些问题,例如Teradata Vantage,然而由于CPU的算力有限,很多复杂分析只能借助于其它非数据库内置的模块,例如TensorFlow。由于这些模块本身并不被数据库系统管理,因此存在各种数据格式转换以及资源调度冲突等问题。


2 GPU数据库的现状


2.1应用落地之绝对刚需


2.1.1案例分析

由于内存数据库具有比基于磁盘的数据库更高的查询响应速度和并发度,其被广泛应用于银行、证券交易所和在线购物等数据量庞大并且实时性要求高的商业领域。索引能够有效降低数据的搜索空间、提高内存数据库的查询效率,然而当前它却受到性能和效率的挑战。 基于图形处理器的通用计算(GPGPU)在多个领域具有重要的研究价值和应用前景,也是当前研究的热点。目前图形处理器(GPU)上索引技术的研究已有一定的相关成果,然而这些研究成果存在着诸如:并行算法未充分利用硬件的资源、并行度不高,算法缺乏可扩展性且不能解决索引数据的更新等问题。因此,本文以如何充分利用 GPU 的硬件资源、最大限度地提高内存数据库索引的操作性能为主要研究内容,在相关研究的基础上,本文主要做了以下工作: 1. 对目前内存数据库索引技术的研究成果进行总结归纳,并且对 GPU 的硬件特点和编程技术做了相关综述。 2. 提出一种基于 GPU T-树索引的并行计算方案,该方案通过分析 T-树的节点间的父子关系,在 GPU 上实现对 T-树的最大并行度构建。设计在 GPU 上 T-树索引数据可任意伸缩的动态数组,解决 GPU 上尚无动态分配显存空间的问题;通过对各种构建 T-树方案的理论和实验分析,提出的并行建树方案较传统的建树方案,在操作效率和空间利用率上均有明显的性能优势。为解决 CUDA 程序数据传输的瓶颈问题,通过页锁定内存的方式提高 CPU 和 GPU 间的数据传输速率;为适应未来硬件发展的需求,对算法的可扩展性进行相关研究;为验证方案的正确性,提出基于 GPU T-树的遍历算法; 为验证提出的并行方案的有效性,进行相关的实验论证。 3. 为加速多维数据的操作性能,提出一种基于 GPU 多维线性哈希索引的并行处理方案。该方案通过对传统哈希索引数据结构的扩展,利用 2 层的数据结构可实现哈希表在 GPU 上的任意收缩,从而解决多维数据在 GPU 上无法有效更新的问题。在哈希表的记录并行批量插入算法中,采用并行分裂哈希桶的方式可加速哈希表分裂的处理 速度,从而提高了插入的效率;设计一个灵活的溢出桶管理机制,可提高多维哈希索引在 GPU 上的存储空间利用率;对提出的记录并行批量插入方案进行算法时间和空间复杂度的分析,并与传统的 CPU 算法进行相关对比;在各种硬件平台上对多维线性哈希索引记录的并行批量插入、批量删除和查询的操作性能进行相关的实验论证。 4. 提出一种基于 GPU 缓存敏感 CSB+-树索引的无锁并行处理方案,该方案通过对传统的 CSB+-树的结构改进,可实现 CSB+-树的索引数据在 GPU 上动态更新。在 GPU上提出基于树层和基于节点索引键 CSB+-树两种并行构建算法,其中后者可实现对CSB+-树的最大并行度构建;通过在 CSB+-树的内部节点添加填充位的方式,可减少GPU 线程块里的线程分支数,从而提高 CSB+-树的查询性能;通过对 CSB+-树的查询算法使用共享存储器的可行性分析,指出传统的缓存敏感技术的思想在复杂的 GPU 内存框架中并不适合使用。为验证提出的并行方案的有效性,在多个硬件平台上进行相关的实验论证。 5.在 GPU 平台上提出一种 BD-树索引的并行计算方案,该方案通过修改传统 BD-树的哈希函数,可实现对 BD-树索引的并行处理。通过对传统 BD-树的数据结构改进,可实现 BD-树索引数据在 GPU 上的更新操作;通过分析 BD-树的树形结构,可实现基于内部节点键的并行度方式构建 BD-树;通过增加额外的空间开销,减少 GPU 原子函数的调用次数,可显著提高 BD-树哈希表的数据插入效率;对 BD-树并行构建算法进行空间复杂度的分析,与传统的构建算法相比,提出算法的空间利用率明显得到提高。同样,为验证提出方案的有效性,进行相关的实验论证。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值