首页 / 新闻

12.

31

2015

【干货】业界最强的SQL引擎Transwarp Inceptor为什么这么快?秘密武器Holodesk大揭秘

技术博客

 

在Transwarp Inceptor中,如果在十几亿条记录的Holodesk表上对两个维度做聚合求sum的SQL,能得到秒级的返回。如果这张表以ORC存储,相同的SQL需要花的时间则需要几分钟以上。Holodesk到底是什么?为什么它能让SQL查询获得如此大的性能提升?今天我们就来解开Holodesk的神秘面纱。

 

Holodesk是星环科技为大数据场景下的数据集市设计的利器。数据集市(Data Mart)是从数据仓库(Data Warehouse)中根据需求抽离出的子集,它面向着特定的专业团体,反映了一定的商业性能或者系统功能的特点。数据集市中的记录彼此之间存在一定的特点共性,不同的数据集市之间既可以表现出差异性也可以表现关联性,可以满足不同特定群体的需求。如果说数据仓库对应了一个公司的完整数据的集合,那么数据市场则是将数据按照部门的归类结果,数据集市所属的部门可根据需要,使用、控制或者增加其中的内容。数据仓库的用户往往需要在数据集合中寻找对自己有用的信息,然而在信息量极大的数据库中执行这样的操作是很困难的,因为里面所含的内容往往关系不易理清且具有大量无关信息。创建数据集市的好处是方便用户对于大量数据的使用与分析。数据集市存储着为特定用户事先计算好的数据,使得对特定数据的查询变得更容易,提升了语句查询响应效率,减少了用户的等待时长。另外,数据集市的内容是对历史的快照,对其中数据的分析,可以促使相关业务职能的部门做出更合理的决策和制定更稳妥的战略规划。

 

Holodesk作为Transwarp Inceptor中的分布式列式存储组件,其通过将数据表建在内存或者SSD上来提高分析查询性能,同时提供以下关键功能特性来满足企业级高速分析需求。

 

 
 
Holodesk是用于应对海量数据OLAP高性能分析查询难题的一款产品,它着力于交互式分析中即时查询效率的提高以及扩展性与稳定性。它的构成组件以及架构方式如图Figure 2.1所示。
 
 

Figure 2.1 Holodesk的构成组件以及架构

 

Holodesk本身属于存储层,对SQL语句的执行需要交给Inceptor计算引擎,Inceptor主要由两类节点组成:主节点Inceptor Server,以及计算节点Executor。SQL语句由Inceptor Server解析执行,生成执行计划,最终RDD的变换执行过程组成Transwarp Spark DAG,RDD中不同的partition合理的分配给不同的计算节点Executor,每个partition对应于一个计算子任务,由Executor执行具体的计算处理。逻辑如Figure 2.2所示。

 

Figure 2.2 Inceptor Server与Holodesk

 

用户可以直接通过在Inceptor中用SQL语句建以Holodesk存储的表来利用Holodesk的多种功能特性。在建表时,用户可以选择将数据缓存在SSD还是在RAM中。下面是两个例子:

 

1. 建一张位于RAM名为holodeskEmployee 的holodesk空表,包含有五列字段:“ID”,“Region”,“Sex”,“Department”,“Salary”。将cache设置为RAM:

 

2. 建一张名为holodeskEmployee的Holodesk表,同时从一张已有的Inceptor表Employee导入数据,将cache设置为SSD:

 

Holodesk表建成后,用户便可以在Inceptor中利用Holodesk的特性以及星环科技开发的优化工具获得极高的查询效率。

 

在星环,我们用TPC-DS大数据测试基准进行了一系列性能测试。TPC-DS中的store_sales表有40亿条左右的记录,我们将其建为一张Holodesk表。在对store_sales表运行复杂SQL时我们通过建CUBE进行了优化。下面是对store_sales表执行的OLAP场景中一些有代表性的操作:

 

在测试中,使用Holodesk表和使用TXT表执行这些操作分别所花时间如下所示:

 

不难看出,Holodesk表相对TXT表,查询性能得到了非常显著的提高,在这8个查询,中,性能提升在几十倍至几百倍。

 

想了解如何在Inceptor中用Holodesk特性达到如此显著的性能提升吗?请继续关注星环科技公众号,我们将在未来的文章中详细剖析Holodesk SQL优化案例。