论文部分内容阅读
互联网时代日益增长的数据量的存储需求和海量数据处理需求导致分布式数据库系统的研究已经成为业界最新的热点问题。分布式数据库拥有优秀的扩展性,可以有效利用多核多机的计算和存储能力。同时,因为近年来内存价格的不断降低,操作系统也可以支持更大的地址空间,研发完全采用内存作为的存储引擎的分布式内存数据库得以实现。然而,由于传统的TCP/IP网络协议栈天然的复杂性,使得内存读取速度和网络传输速度的差距越来越大,网络IO替换磁盘IO成为了分布式内存数据库系统中新的瓶颈,影响了分布式系统的扩展性,制约着分布式内存数据库的性能。随着拥有比TCP/IP网络更高的吞吐量和更低的延迟的远程直接数据存取(RDMA)技术的日益成熟,利用RDMA技术改善分布式内存数据库系统中的网络环境的方式变得越来越流行。本文以实验室自主研发的分布式内存数据库系统Goldfish为背景,采用RDMA网络技术替换查询引擎中传统的TCP/IP网络,设计并实现了基于RDMA的分布式内存数据库查询引擎,提高了分布式查询引擎执行任务时数据传输速度,减少了查询时间。论文主要完成了三个方面的工作:1)研究RDMA网络中各种数据发送和接收模式,分析其主要优缺点,基于RDMA Verbs API,设计并实现了两套基于RDMA的高吞吐或者低延迟的数据发送框架。2)RDMA技术的一项优势是可以避免应用程序和内核态的数据拷贝,是因为RDMA在发送或者接收数据前,需要提前向RDMA网络注册内存作为发送或者接收缓冲区。针对RDMA使用缓冲区的这种方式,设计并实现了一套的缓冲区内存池管理策略,能够快速分配缓冲区。3)设计并实现了基于高吞吐和低延迟的RDMA网络发送框架和缓冲区内存池的分布式内存数据库执行器,能够接受查询优化器下发的执行计划,并保证任务被快速、准确地执行。最后,本文基于RDMA网络发送框架实现了回射服务器,在Mellanox网卡上同采用TCP over InfiniBand作为底层网络的回射服务器进行对比测试。测试结果显示,基于RDMA的回射服务器比明显基于TCP的回射服务器吞吐量更高、延迟更低。同时,采用TCP-H数据集,将基于RDMA实现的Goldfish-RDMA与基于TCP实现的Goldfish-TCP和开源的SparkSQL进行比较,Goldfish-RDMA的查询性能优于Goldfish-TCP和SparkSQL。