数据库是IT技术栈中承上启下的关键一层,具有如下特性:
- 向上承托应用开发与运行,是应用生态关键组成之一。
- 向下对接硬件和OS,对数据处理应用屏蔽底层硬件复杂性和兼容性。
数据库系统是IT技术栈中的独立“小王国”,被誉为“软件行业皇冠上的明珠”。它内含了几乎所有的基础软件关键技术,是软件集大成者: OS(进线程调度和内存分配管理)、编程语言(SQL)、编译器(SQL编译和编译执行)、大规模并行计算(分布式SQL执行)、优化技术(优化器)等。数据库是数学理论和软件工程的结晶,其中蕴含了两个NP-Hard的世界级难题(优化理论和事务处理)。数据库领域也因此诞生了4个图灵奖得主。因此,数据库发展趋势与硬件演进紧密相关,并受到应用的驱动。
处理器架构的差异直接影响到数据库的工作效率。不断发展的处理器架构,驱动着数据库不断做出相应的优化。
一、处理器架构对数据库系统带来挑战与机遇
当前业界的计算机处理器分为两大系列: 通用处理器(CPU)和异构加速器。按照其用途又可分为面向数据中心服务器的处理器(如Intel Xeon至强系列CPU)、面向消费者设备的处理器(如Intel Core酷睿系列PC的CPU、高通的Snapdragon系列手机CPU 等)。数据库系统一般运行在数据中心服务器上,因此本文主要简述服务器处理器发展对数据库架构和技术发展方向带来的冲击和影响。
通用处理器家族中有两个最为著名的体系和指令集架构(Instruction Set Architecture,ISA)。
- 源自Intel 8086处理器的x86指令集,它是一种CISC(Complex Instruction Set Computer,复杂指令集计算机)体系结构指令集。
- 源自ARM(Advanced RISC Machine)公司的指令集,它是一种RISC (Reduced Instruction Set Computer,精简指令集计算机)体系结构指令集。
从历史上看,Intel的x86指令集随着Wintel(微软Windows+Intel芯片)联盟在20世纪80年代垄断PC市场而兴起,由于Intel芯片发货量远远大于20世纪八九十年代面向小型计算机市场的RISC芯片,Intel借助市场垄断优势不断更新优化其制造工艺水平和芯片处理能力。20世纪90年代末Intel进入PC服务器市场,借助其规模优势不断侵蚀RISC小型计算机市场空间,到2010年Intel已经成为芯片霸主,垄断了90%以上世界服务器市场空间。
2010年起,ARM 公司通过只聚焦芯片指令集研发、不涉及芯片设计和制造的商业策略,借助Android手机的兴起,重演了Intel在20世纪80年代Wintel联盟垄断桌面机市场的故事。当前ARM 架构芯片每年发货量是Intel x86芯片发货的10倍以上,有丰富的软件和硬件生态。如何基于ARM 架构打造一款数据中心服务器芯片,成为众多芯片设计和制造企业的商业计划。
以美国Calxeda和Applied Micro等为代表的创业公司,利用其贴近硅谷高科技源头优势,纷纷推出基于ARM 架构的服务器芯片,但由于缺乏客户和市场规模,败北收场。
美国芯片巨头高通公司,携Snapdragon手机芯片和技术优势,于2017年宣布进入ARM 服务器芯片市场,并发布了Centriq系列芯片,但同诸多创业公司一样,2018年宣布停止ARM 服务器芯片研发。
虽然在基于ARM 研发服务器芯片方面已有多家公司折戟,但Intel的成功历史仍然具有说服力,随着ARM 架构芯片生态的逐步成熟,其技术竞争力追赶Intel x86,研发投入也在不断积累和摊薄,必将成为可以替代Intel x86的新通用处理器芯片。 ARM 与x86对比如下图所示。
图: ARM与x86对比
华为借助其内部大量使用ARM 芯片积累的技术和产业化优势,于2019年正式对业界发布鲲鹏920系列服务器芯片,其关键指标如下图所示。
图: 鲲鹏920指标
华为鲲鹏芯片的发布路标如下图所示。
图: 鲲鹏芯片发布路标
ARM 处理器与传统x86处理器相比,最大特点是: 处理器核数更多。如鲲鹏920有64核,市场同样定价等级Intel 6148 Golden系列有20核40超线程,而一台服务器通常由2~4 个处理器组成。众多处理器核,对数据库系统带来巨大挑战。根据Stonebraker等人于2014 年在VLDB 发表的论文Staring into the abyss: anevaluation of concurrency control with one thousand cores,传统数据库的事务处理机制无法有效利用数十到上百个核处理能力。
2016年Anastasia Ailamaki等人在DaMon 研讨会上发表论文OLTP on a server-grade ARM : power,throughput and latency comparison,对ARM 服务器芯片上数据库运行进行详尽分析,认为ARM 处理器在功耗上具有优势,但在关键负载业务上,如何保证业务的SLA(Service Level Agreement),ARM 服务器仍有很多改进和优化空间,可能需要软硬件结合提升业务SLA。典型ARM 多核CPU 架构如下图所示。
图:典型ARM 多核CPU 架构
注: hydra是ARM 公司定义的CPU 处理器上总线名称。DIE是集成电路行业术语,是一个处理器封装中的硅芯片。DRAM 是动态随机存取存储器的英文缩写,行业术语。
相信随着鲲鹏服务器在中国等一些国家的市场上逐步规模商用,会推动开源数据库、商业数据库等产品面向鲲鹏芯片进行优化,甚至架构改进。如何有效解决下列问题将是推动数据库研究的关键方向:
-
如何有效地解决鲲鹏跨片内存访问时延对事务处理带来的影响?
-
如何构筑高效的并发控制原语及原子锁?
-
如何降低多核下的CPU缓存未命中(cache miss)率,以减少对整体性能的影响?
-
如何支持百核甚至千核CPU 架构?
-
如何高效利用鲲鹏服务器的特殊硬件,例如POE(核间通信能力)队列?
二、异构处理器高速发展为数据库系统创新提出新方向
2010年起,随着大数据量和大计算量的普及,AI(人工智能)迎来新一轮复兴。谷歌公司在这一轮AI浪潮中扮演了至关重要的角色,谷歌公司收购的DeepMind公司于2014年发布AlphaGo,并在随后的人机竞赛中击败人类,是本轮AI浪潮的标志性事件。谷歌公司认为AI将成为未来的主导性技术,并全力投入相关技术研发,于2016年发布了面向AI的张量处理器(Tensor Processing Unit,TPU),极大地加速了以线性代数计算为中心的现代AI算法。
谷歌公司发布TPU 之后,众多芯片厂家也随之发布面向AI的加速芯片,华为于2019年发布了自研的达芬奇架构的神经网络处理器昇腾系列芯片,其架构如下图所示。
图:昇腾架构
注: BUS表示计算机系统中总线,用于互联芯片上多个子单元,是行业术语。Vector是矢量处理单元,用于将多个同一数据类型封装的数据包一次性处理,如(1,3,10,11)。Cube是矩阵处理单元,用于对矩阵数据结构进行线性代数操作,如点积、加减等。Cache是处理器上的高速缓存。Scalar是标量处理单元,用于对简单数据结构进行计算,如Int 1,Float 0.35等。HBM 是高带宽内存,行业术语。Peripheral/IO 是周边设备总线,用于将处理器和外部存储器等器件互联。FHD Video是高清视频,Image Codec是图像编解码器。
昇腾芯片当前有两个系列,分别为面向推理计算场景的Ascend 310系列和面向训练场景的Ascend 910系列。
昇腾芯片与业界顶尖厂商的AI处理器性能对比如下图所示。
图:昇腾芯片与业界芯片对比
AI处理器芯片的普及,使数据库研究社区和厂商都在思考一个问题: 如何使用AI处理器芯片巨大的算力优势,来帮助数据库系统运行得更快、更强、更好? 如何利用AI芯片来提升数据库的智能性和高效性?
当前主要的研究方向有AI4DB和DB4AI两个。
1. AI4DB(AI for DB)
在传统数据库中,由于使用大量启发式算法,无法针对众多用户实际场景定制化开发,一般通过数据库系统预定义参数组合或可调节参数开关等方式,由DBA 根据经验进行调整。AI算法与传统启发式算法的最大不同在于其可以根据历史数据学习,并根据现状在运行时进行动态调整。因此如何利用AI算法替换启发式算法,解决传统数据库的痛点问题成为研究的热点话题。典型方向有:
- 优化器: 传统代价优化基于采样统计信息进行表连接规划,存在统计信息不准(基数估计问题)、启发式连接规划(连接顺序问题)等老大难问题。
- 参数调优: 数据库有数十甚至上百个可调节参数,其中很多参数是连续值调节空间,依靠人工经验无法找到最优参数组合。
- 动化索引推荐和视图推荐: 数据库有很多张表,表中有很多列,如何自动构建索引和视图来提升数据库的性能是需要考虑的问题。
- 事务智能调度: 事务的并发冲突是OLTP数据库的难点,可以通过AI技术进行智能调度从而提升数据库的并发性。
2. DB4AI(DB for AI)
AI数据处理流程一般可划分为四个阶段: 训练数据管理准备、模型训练、模型管理和推理应用,如下图所示。
图:AI数据处理流程
- 训练数据管理准备工作占据了AI全流程中80%以上时间,数据科学家和软件工程师花费大量精力与数据标注、数据正确性、数据一致性、数据完整性、训练结果可重复性等问题打交道。使用定制化、拼凑型的数据存储解决方案,缺乏高效的AI训练数据管理系统是问题的根源。数据库系统半个世纪的研究成果能有效解决该领域的问题。当前已经有众多公司基于数据库系统启动相关系统的研发,如苹果公司的MLDP系统。
- 当前AI模型训练主要以AI计算框架为主,但其在迭代计算中产生大量相似、冗余的参数、模型等数据,缺乏有效的模型管理,导致模型训练中不断重复计算,模型训练效率大打折扣。如何使用数据管理的方法,如物化视图、多查询优化等技术,对训练中产生的模型数据有效管理、实现存储转换计算、加速AI训练计算成为研究的热点,如马里兰大学的ModelHub等项目。
- 模型推理计算是将训练好的模型部署到应用环境中的过程,如何减少推理计算的开销、降低推理延迟、提升推理的吞吐量是系统开发者关注的重点。当前AI计算框架缺乏针对以上诉求的优化,使用传统数据库优化器的技术优化该过程是研究热点,如伯克利大学的Model-less Inference等。
因此使用数据管理技术对AI流程进行全栈优化是数据库研究者需要考虑的问题。对于企业用户来说,仅仅优化AI流程的效率是远远不够的,因为:
- 当前AI应用仍处于早期阶段,搭建一套AI应用系统不但成本高昂,而且极为复杂,也难以在部署后继续开发业务。如何构筑一套开箱即用、业务领域专家也能轻松使用的AI应用系统是当前企业对AI系统厂商提出的重大挑战。
- 从历史上看,当前的AI应用与20世纪60年代数据库系统诞生之前的情况极为相似。在数据库系统内构筑一套端到端、全流程的AI处理系统,并提供类似SQL一样的声明式开发语言,将是解决企业用户应用AI门槛高难题的正确方向。
综上所述,DB4AI是用数据库技术打造一套端到端全流程AI系统的研究方向,是AI应用平民化的必经之路。
Gauss松鼠会是汇集数据库爱好者和关注者的大本营, 大家共同学习、探索、分享数据库前沿知识和技术, 互助解决问题,共建数据库技术交流圈。