导语:得益于调度单元是通用的SQL语句,SuperSQL能够做到与特定计算引擎解耦,也正因为此原因,SuperSQL只需专注在最优执行计划生成,并根据SQL具体类型选择最佳的计算引擎。
天穹SuperSQL是腾讯自研的跨数据源、跨数据中心、跨计算引擎的大数据SQL引擎,能够满足位于不同数据中心、不同类型数据源的数据联合分析/即时查询的需求。在腾讯整个天穹大数据图谱中,负责连接端与存储。
数据源无论是关系型数据库、NoSQL还是大数据系统;数据存储无论是跨集群还是跨数据中心;数据计算无论是报表生成、分析挖掘还是交互式查询…SuperSQL作为统一的SQL引擎,都能够提供统一的异构数据管理和联邦分析入口。
本文将专注于SuperSQL的计算实现,详解SuperSQL为何要实现跨计算引擎、如何实现计算引擎解耦,以及计算对接的未来工作。
01 计算引擎在SuperSQL中的位置
SuperSQL的核心设计思路是“漂移计算“,就是将单一SQL中涉及不同DC数据源的子计算部分(子查询SQL),尽可能下推给对应的数据源本地执行;计算引擎完成不同数据源子查询中间结果的联接与合并。因为计算引擎仅从各个数据源获取子查询下推后的中间结果,其相比原始数据表的数据量通常小很多,这就能够节省DC间有限的网络带宽资源。
SuperSQL的技术架构图如下,逻辑上可以分为三部分:(1)客户端:对外提供多种标准接口;(2)Server:决定最优执行计划(计算下推、DC间计算路由等)(3)计算引擎:计算核心。
在SuperSQL整体的架构中,计算引擎是计算核心。计算引擎负责从数据源或者其他集群的计算引擎(当涉及跨DC时)拉取下推计算完成的结果,完成数据汇总计算。计算引擎的执行效率和稳定性会直接影响SQL结果的返回。
02 为何要实现跨计算引擎?
SuperSQL设计之初面临两个选择,一是将SQL优化、计算下推等逻辑耦合到特定计算系统上(例如SparkSQL),二是将SQL优化、计算下推等逻辑与计算解耦