本文对清华大学李国良教授团队论文《Database Meets AI:A Survey》进行解读,全文共4040字,预计阅读需要10至15分钟
一、概述
随着数据库近年来的不断发展,数据库开始与各项新兴技术结合,如人工智能、区块链、密态计算等。本篇论文所涉及的是数据库与人工智能结合的探索,二者的结合是一种双赢,数据库和人工智能都能从这次结合中受益:一方面,人工智能可以使数据库更加智能化(AI4DB)。传统的经验数据库优化技术难以满足大规模数据库实例、各种应用程序和多样化用户的高性能要求,尤其是在云上。而幸运的是,人工智能基于学习的技术可以缓解这个问题。另一方面,数据库技术可以优化AI模型(DB4AI)。例如,人工智能很难在实际应用中部署,因为它需要开发人员编写复杂的代码和训练复杂的模型。数据库技术可用于降低使用人工智能模型的复杂性,加速人工智能算法,并在数据库中提供人工智能功能。下图所示,为论文关于两种模型的主要研究内容:对于AI4DB,文章研究了基于学习的配置调优、优化器、索引/视图顾问和安全性方面的技术;对于DB4AI,文章研究了面向AI的声明性语言、面向AI的数据治理、训练加速和推理加速。
二、AI4DB
传统的数据库设计基于经验方法和规范,需要人工参与(例如DBA)来调整和维护数据库。人工智能技术被用来缓解这些限制,下图所示为机器学习能为数据库带来的一些技术突破:
我们从上图中选取一些AI优化DB的现有技术进行介绍:
1)基于学习的数据库配置
(1) 旋钮调节
数据库旋钮的数量庞大且关系复杂。DBA通常擅长于特定的数据库,并且需要相对较长的时间。显然,DBA无法扩展到云数据库上的数百万个数据库实例。但是通过基于学习的技术自动调整旋钮,可以探索更多旋钮组合空间并推荐高质量旋钮值,从而获得比DBA更好的结果。
(2) 索引/视图顾问
数据库索引和视图对于实现高性能非常重要。然而,传统数据库高度依赖DBA来构建和维护索引和视图。由于存在大量列/表组合,因此推荐和构建适当的索引/视图的成本很高。最近,有一些基于学习的工作可以自动推荐和维护索引和视图。
(3) SQL重写器
许多SQL程序员无法编写高质量的SQL,因此需要重写SQL查询以提高性能。例如,嵌套查询会被重写为连接查询来使一些SQL优化可用。现有方法采用基于规则的策略,使用一些预定义的规则重写SQL查询。然而,这些基于规则的方法依赖于高质量的规则,这些规则过多。因此,深度强化学习可用于明智地选择适当的规则,并以良好的顺序应用规则。
2)基于学习的数据库优化
(1)基数/成本估算
数据库选择优化策略需要依靠成本和技术估计,但传统技术无法有效捕获不同列/表之间的相关性,因此无法提供高质量的估计。这时候通过使用深度神经网络捕捉相关性来估计成本和基数,从而获得更好的结果。
(2)连接顺序选择。
一个SQL查询可能有数百万甚至数十亿个可能的计划,高效地找到一个好的计划非常重要。传统的优化器并不能在数以万计的表里找到合适的连接顺序,因为探索巨大的计划空间成本相当高,这时我们可以利用深度强化学习去自动选择好的计划。
(3)端到端优化器。
一个成熟的优化器不仅要有好的代价估计和连接顺序,而且还需要考虑索引和视图,并且设计端到端优化器是很重要的。因此可以通过使用深度神经网络优化SQL查询。
3)基于学习的数据库设计
(1)学习索引。不仅可以减少索引大小,还可以提高索引性能。
(2)学习数据结构设计。不同的数据结构可能适用于不同的环境,很难为每个场景设计合适的结构。哈佛大学的论文阐述了一种旨在为不同的数据结构创建一个数据推理的引擎,用于推荐和设计数据结构。
(3)基于学习的事务管理。传统的事务管理技术侧重于事务协议,而人工智能技术能够从现有的数据模式中学习,有效地预测未来的工作负载趋势,并通过平衡冲突率和并发性有效地调度它们,从而实现预测并安排事务。
4)基于学习的数据库监控
数据库监控可以捕获数据库运行时指标,如读/写延迟、CPU/内存使用情况,从而在出现异常时提醒数据库管理员。然而,传统的监视方法依赖于数据库管理员来监视大多数数据库活动并报告问题,效率较为低下。而通过基于机器学习的技术来优化数据库监控,可以较为高效地确定何时以及如何监控哪些数据库指标。
5)基于学习的数据库安全
传统的数据库安全技术依赖于用户定义的规则,但无法自动检测未知的安全漏洞。通过基于AI的算法来自动识别发现敏感数据,监视数据库活动并检测漏洞,通过自动估计不同的数据访问操作来避免数据泄漏,通过深入学习挖掘用户行为和识别并避免SQL注入攻击。
三、DB4AI
人工智能在当今逐渐普及用于解决许多现实问题,但由于人工智能现存系统复制性较差,很难被普通用户使用。为了解决这个问题,数据库技术可以用来降低人工智能的使用门槛,如下图所示:
下面基于上图中部分内容进行介绍:
1)声明式查询范例
SQL相对容易使用并在数据库系统中广为接受。然而,与其他高级机器学习语言相比,SQL相较于其它高级机器学习语言缺少一些复杂的处理模式(例如,迭代训练)。但是,SQL可以被延伸至以支持AI模型,可以通过设计用户友好的工具在SQL语句中支持AI模型。
2)数据治理
数据质量对于机器学习非常重要,数据治理可以提高数据质量,包括数据发现、数据清理、数据集成、数据标记和数据血缘。
(1)数据发现。基于学习的数据发现增强了查找相关数据的能力,能够自动且有效发现海量数据之间的关系。
(2)数据清理。脏数据或不一致数据会严重影响训练效果。数据清洗和数据集成技术可以对脏数据和未持久化数据进行检测和清理修复,并集成多个数据源的数据,以生成高质量数据。
(3)数据标签。借助领域专家、众包和知识库,可以适当利用人力或现有知识为ML算法标记大量训练数据。
(4)数据血缘。数据血缘描绘了输入和输出之间的关系,对于确保ML模型正常工作很重要。通过连接和图映射等数据库技术,可以跟踪数据前后关系。
3)模型训练
模型训练旨在训练一个用于在线推理的好模型,是一个耗时且复杂的过程,因此需要特征选择、模型选择、模型管理和硬件加速这些优化技术。
(1)特征选择。需要从大量可能的特征中选择合适的特征。通过批处理模型、物化模型等技术来解决选择和评估非常耗时这一问题。
(2)模型选择。需要从大量可能的模型中选择合适的模型(和参数值)。通过一些并行技术来加速这一步,包括任务并行、批量同步并行、参数服务器和模型并行计算。
(3)模型管理。由于模型训练是一个反复试验的过程,需要维护许多已经尝试过的模型和参数,因此有必要设计一个模型管理系统来跟踪、存储和搜索ML模型。本文采用基于GUI的和基于命令的模型管理系统。
(4)硬件加速。硬件如GPU和FPGA也被用来加速模型训练。硬件加速技术被应用在行存储和列存储数据库中。
4)模型推理。
模型推理旨在使用经过训练的模型有效地推断结果,数据库中的优化技术包括算子支持、算子选择和执行加速。
(1)算子支持。ML模型可能包含不同类型的算子,它们具有不同的优化要求。因此,提出了一些数据库内技术来支持AI算子,包括标量运算、张量运算和张量分区。
(2)算子选择。相同的ML模型转换为不同的物理算子可能会带来显著的性能差异。因此在数据库中,算子选择可以估计资源消耗并做出正确的调度。
(3)执行加速。加速推理提高效率。一方面,内存数据库将模型数据压缩到内存中进行内存优化。另一方面,分布式数据库通过将任务发送到不同节点提高整体效率。
四、挑战
1)利用人工智能技术优化数据库仍然存在一些挑战。
(1)大规模、高质量、多样化的训练数据获取困难。例如,在数据库旋钮调优中,训练样本需要基于DBA经验获得,因此很难获取非常大数量的样本。此外,为了构建有效的模型,训练数据需要涵盖不同场景、不同硬件环境和不同工作负载,因此迫切需要一个新的方法用小型的训练数据集去获得高质量模型。
(2)适应性是一个巨大的挑战。如何使数据集上经过训练的模型适应其他数据集?如何使硬件环境中经过训练的模型适应其他硬件环境?如何使经过训练的数据库模型适应其他数据库?如何使经过训练的模型支持动态数据更新?
(3)数据治理。学习模型能否收敛至关重要,如果模型不能被收敛,需要用其它方式规避延迟和不准确的决策。例如,在旋钮调优中,如果模型不收敛,就不能利用模型提供在线旋钮建议。
(4)OLAP学习。传统OLAP任务聚焦关系型数据分析,然而大数据时代,图数据、时序数据、空间数据层出不穷,需要新的数据分析技术去分析这些多模数据。
(5)OLTP学习。事务模型和调度对OLTP系统很重要,因为不同事务间可能存在冲突。利用学习技术优化OLTP查询是很有希望的,例如一致性快照等。
2)利用数据库优化AI模型也存在部分挑战
(1) 库内训练方面。在数据库中支持人工智能训练是一项挑战,包括模型存储、模型更新和并行训练。首先,在多租户可以训练和使用模型时,库内存储模型的安全和隐私问题是一个挑战;其次,数据动态更新时区更新模型也是一大挑战。
(2) 利用数据库技术加速AI训练。目前大多数研究都集中在人工智能算法的有效性上,而对算法的效率关注不多,需要利用数据库技术提高算法的表现性能。
(3) AI优化器。当前研究主要利用用户定义函数(UDF)来支持AI模型,但这些模型没有得到有效优化。需要将AI模型作为算子在库内执行,同时还需要为每个算子设计物理算子,最重要的是,需要将AI算子下推并预估cost/cardinality值,AI优化器应支持优化AI训练和推理,此外,对于分布式环境下AI算子的有效支持也非常重要。
(4) 容错学习。现有的学习模式训练不考虑容错度。一个分布式训练执行中穿一个进程崩溃,整个任务就会失败,需要将现有的容错技术以提高库内训练的健壮性。为了确保在可预测和不可预测的灾难下的业务连续性,数据库系统必须保证容错和灾难恢复能力。
五、总结
该论文综述了AI4DB和DB4AI的最新技术。前者侧重于利用人工智能技术解决计算复杂度高的数据处理问题,例如旋钮调整、成本估算、连接顺序选择、索引顾问和视图顾问。后者侧重于使用数据库技术来降低使用人工智能的复杂性和加速人工智能模型,例如,声明式AI,以及加速AI训练和推理。数据库和人工智能都能从对方那里获得各方面的提升,数据库与人工智能结合势必成为未来二者发展的一大趋势。