GPU不仅能实现数据库的许多功能,而且其强大的计算能力,能实现实时 分析。MapD和Kinetica是这方面比较有名的两家公司。MapD用NVIDIA Tesla K40/K80实现了基于SQL和列式存储的数据库,无需索引,擅长任意多组合的条件查询(Where)、聚合(Groupby)等,实现传统关系型数据库的BI功能,方便用户自由地进行多条件查询。性能优势也很明显(尤其是响应时间)。
比如,MapD将1987-2008年全美国进出港航班的数据扩大10倍后,执行全表扫描的报表任务,如"SELECT ... GROUP BY ...”。一台带有8张Tesla K40显卡的服务器(8核/384G RAM/SSD)比3台服务器(32核/244G RAM/SSD)组成的内存数据库集群快50-100倍(请参见MapD技术白皮书 MapD Technical Whitepaper Summer 2016)。
GPU数据库的另一大特色是可视化渲染和绘制。将OpenGL等的 缓冲区直接映射成GPU CUDA里的显存空间,原地渲染,无需将结果从内存拷到GPU,可以实现高帧频的动画。也可以原地绘制成PNG或视频stream,再发给客户端,大大减少网络传输的数据量。这些优势吸引了很多开发者。
在实时分析上比较有名的一家公司是Kinetica。他们开始时为美国情报机构实时分析250个数据流。现在能用10个节点,基于20万个传感器,为美国邮政服务(USPS)提供15000个并行的实时分析、物流路由计算和调度等。
我国用GPU进行分析和挖掘的用户也越来越多,想深入学习的朋友也不少。最快速的入门办法是重复前人的实验。弗吉尼亚大学的Accelerating SQL Database Operations on a GPU with CUDA里的开发环境和实验,值得借鉴。他们用一张4G显存的NVIDIA Tesla C1060, 在一台低配的服务器上(Xeon X5550(2.66GHz/4核),5G RAM),用5百万行的表做查询和汇总,响应时间30-60毫秒。