Paper Reading | AI & 数据库融合经典论文回顾

人工智能(AI)和数据库(DB)在过去的50年里得到了广泛的研究,随着数据库近年来的不断发展,数据库开始与人工智能结合,数据库和人工智能(AI)可以相互促进。一方面,AI 可以使数据库更加智能化(AI4DB)。例如,传统的数据库优化技术无法满足大规模数据库实例、各种应用程序和多样化用户的高性能要求,尤其是在云上。幸运的是,基于机器学习的技术可以缓解这个问题。另一方面,数据库技术可以优化AI模型(DB4AI)。例如,人工智能在实际应用中难以部署,因为它要求开发人员编写复杂的代码并训练复杂的模型。数据库技术可以用来降低使用 AI 模型的复杂性,加速 AI 算法并在数据库内部提供 AI 能力。在这篇技术博客中,我们将对清华大学李国良教授团队的综述性论文《Database Meets AI:A Survey》进行详细研读。这篇综述论文从AI4DB和DB4AI两方面展开,全面回顾了工业和学术界关于AI与DB 结合的研究工作。

数据库和人工智能(AI)可以相互促进。一方面,AI 可以使数据库更加智能化(AI4DB)。例如,传统的基于经验的数据库优化技术,如成本估计、连接顺序选择、参数调整、索引和视图选择等,已无法满足大规模数据库实例、多样化应用和用户的高性能需求,尤其是在云环境中。基于学习的技术可以缓解这一问题。另一方面,数据库技术可以优化 AI 模型(DB4AI)。AI 在实际应用中难以部署,因为它要求开发者编写复杂代码并训练复杂的模型。数据库技术可以用来简化 AI 模型的使用,加速 AI 算法,并在数据库内部提供AI功能。论文回顾了 AI4DB 和 DB4AI 方面的现有研究。对于 AI4DB,论文回顾了基于学习的技术,包括配置调整、优化器、索引/视图顾问和安全性。对于 DB4AI,论文回顾了面向 AI 的声明式语言、面向 AI 的数据治理、训练加速和推理加速。最后,论文提出了研究挑战和未来的发展方向。

引言

在这里插入图片描述

AI for DB
传统数据库设计依赖于经验方法和规范,需要数据库管理员(DBAs)手动调整大量参数(称为旋钮或Knobs),以适应不同的工作负载和场景。这种方法在面对云数据库上数以百万计的数据库实例时显得不可扩展。使用机器学习技术可以自动化数据库配置,减少对 DBAs 的依赖,提高数据库性能,并适应不断变化的工作负载。目前基于学习的数据库配置研究可以做如下分类:

• Knob Tuning(参数调整):自动调整数据库参数以适应不同场景,使用机器学习算法探索参数组合空间,推荐高质量的参数值。

• Index/View Advisor(索引/视图顾问):自动推荐和维护索引和视图,以提高查询性能。传统数据库依赖 DBA 来构建和维护索引/视图,而基于学习的方法可以处理大量列/表组合,减少人工干预。

• SQL Rewriter(SQL重写):自动重写 SQL 查询以提高性能。例如,将嵌套查询转换为连接查询,使用深度强化学习选择适当的重写规则并按正确顺序应用。

此外,许多研究工作探索使用机器学习技术来解决数据库查询优化中的一些关键问题,可以分为以下几类:

• 基数/成本估计(Cardinality/Cost Estimation):数据库优化器依赖于成本和基数估计来选择最优的查询执行计划。传统方法在处理多列或多表连接时,由于无法有效捕捉数据之间的相关性,导致估计质量下降。基于深度学习的方法被提出来改善估计质量,通过深度神经网络捕捉数据间的复杂相关性。

• 连接顺序选择(Join Order Selection):对于 SQL 查询,可能存在数百万甚至数十亿种潜在的执行计划,有效地找到一个好的计划非常关键。传统优化器在面对大量表的查询时,由于巨大的计划空间,难以找到好的计划。基于深度强化学习的方法被提出以自动探索并选择优秀的查询计划。

• 端到端优化器(End-to-End Optimizer):一个完整的优化器不仅需要依赖成本和基数估计,还需要考虑索引和视图等因素。基于学习的优化器使用深度神经网络来全面优化 SQL 查询,包括结构和执行计划。

• 学习型索引(Learned Indexes):提出了基于学习模型的索引结构,这些结构旨在减少索引大小并提高索引性能。与传统的B树或哈希索引不同,学习型索引使用机器学习算法来预测数据分布和查询模式。

• 学习型数据结构设计(Learned Data Structure Design):不同的数据结构可能适用于不同的环境,例如不同的硬件或不同的读写应用场景。提出了数据结构炼金术(Data Structure Alchemy),旨在创建一个数据推理引擎,用于推荐和设计适应不同场景的数据结构。

• 学习型事务管理(Learning-Based Transaction Management):传统事务管理技术侧重于事务协议,例如OCC(乐观并发控制)、PCC(悲观并发控制)、MVCC(多版本并发控制)、2PC(两阶段提交)。学习型技术尝试通过分析现有数据模式来预测和调度事务,通过平衡冲突率和并发性来有效管理事务。

• 自设计数据库技术(Self-Design Techniques):传统数据库设计依赖于数据库架构师的经验和知识,但这些人为设计可能无法覆盖所有可能的设计空间。学习型自设计技术通过自动化的方式探索更多的设计可能性,以适应不断变化的数据和查询模式。

DB for AI
尽管人工智能(AI)能够解决许多现实世界的问题,但目前并没有广泛部署的AI系统能够像数据库管理系统(DBMS)那样在不同领域中被普遍使用。现有的AI系统复制性差,普通用户难以使用。为了解决这个问题,可以使用数据库技术来降低使用AI的障碍。

1.AI 模型的声明式查询
SQL 在数据库系统中相对容易使用,并被广泛接受。研究者们提出将 SQL 扩展以支持 AI 模型。这意味着可以在 SQL 中直接使用 AI 算法,而无需编写复杂的代码。幸运的是,SQL 可以扩展到支持 AI 模型,我们还可以设计用户友好的工具来支持 SQL 语句中的 AI 模型。

2.数据治理
数据质量对于机器学习至关重要。高质量的数据可以显著提高模型的训练效果和预测准确性。数据治理包括一系列流程和实践,用于提高数据质量。这包括数据发现、数据清洗、数据整合、数据标注和数据血统。其中,基于学习的数据发现提高了查找相关数据的能力,有效地在大量数据源中找到相关数据。肮脏或不一致的数据会严重影响训练表现,数据清理和集成技术可以检测和修复脏数据,并集成来自多个来源的数据,生成高质量的数据。数据标注通过专家知识或众包方式为ML算法标记大量的训练数据。数据血统则通过追踪数据流动和转换,确保了模型的可靠性和可解释性。通过连接和图形映射等数据库技术,可以向和向前跟踪数据关系。

3.模型训练
模型训练的目的是训练一个好的模型,并将其用于在线推理。模型训练是机器学习中的核心环节,它涉及到从大量数据中学习并构建一个能够进行准确预测的模型。这个过程包括多个关键步骤,如特征选择、模型选择、模型管理和硬件加速。特征选择的目的是筛选出对模型性能有显著影响的特征,以提高模型的准确性和效率。模型选择则是从众多可能的模型中找到最合适的模型架构和参数配置。模型管理关注于如何跟踪、存储和搜索大量的机器学习模型,以便于迭代开发和知识共享。硬件加速则是通过使用 GPU、FPGA 等硬件资源来提高模型训练的速度。数据库技术在模型训练中扮演着重要角色。例如,数据库可以提供高效的数据存储和索引机制,加速数据的访问和处理。此外,数据库系统内建的并行处理和分布式计算能力可以用来加速模型的训练过程。数据库还可以用来管理训练过程中的各种元数据,包括特征、模型参数和训练结果等。

4.模型推理
模型推理的目的是利用训练好的模型有效地推断结果,而数据库内的优化技术包括操作符支持、操作符选择和执行加速。与传统数据库操作符(如过滤、连接、排序)不同,AI 模型涉及更复杂的操作符类型,包括标量、向量、矩阵和张量操作。数据库系统可以原生支持这些操作符,并优化它们的执行。此外,同一个机器学习模型可以转换为不同的物理操作符。数据库优化器可以高效地估计执行成本并原生地优化操作符选择,而不需要依赖硬件如 GPU 进行操作符选择。与模型训练不同,模型推理需要选择机器学习模型并执行前向传播来对不同问题进行预测。推理加速旨在提高执行效率。内存数据库压缩内存内的样本/模型数据,并进行内存优化。分布式数据库通过向不同的节点发布任务来提高执行效率。

AI for DB
基于学习的数据库配置
基于学习的数据库配置旨在利用机器学习技术来自动化数据库配置,例如,旋钮调优、索引推荐、视图推荐以及 SQL 重写。下面将主要对旋钮调节、索引推荐和 SQL 重写等相关重要工作进行阐述。

1.旋钮调节
数据库旋钮的数量庞大且关系复杂。DBA 通常擅长于特定的数据库,并且需要相对较长的时间。显然,DBA 无法扩展到云数据库上的数百万个数据库实例。但是通过基于学习的技术自动调整旋钮,可以探索更多旋钮组合空间并推荐高质量旋钮值,从而获得比 DBA 更好的结果。如表1所示,论文将现有的旋钮调优技术分为四类,包括基于搜索的调优、传统的基于 ML 的调优、基于深度学习的调优和基于强化学习的调优。

在这里插入图片描述

论文首先介绍了基于搜索的调优:为了减少人力,《BestConfig: Tapping the performance potential of systems via automatic configuration tuning》提出了一种递归绑定和搜索优化方法BestConfig,给定一个查询工作负载,从历史数据中找到类似的工作负载,并返回相应的旋钮值。具体来说,给定 n 个旋钮,BestConfig 将每个旋钮的值范围划分为 k 个区间,这些旋钮区间形成一个具有 k 的 n 次方个子空间的离散空间(有界空间)。

然后,在每次迭代中,BestConfig从有界空间中随机选择 k 个样本,并从所选择的k个样本中选择性能最好的样本,记为 C1。在下一次迭代中,它只从接近 C1 的有界空间中获取样本。这样,最佳配置迭代地减小有界空间,最终得到一个很好的旋钮组合。然而,这种基于搜索的方法有几个局限性。首先,它是启发式的,可能在有限的时间内找到最优的旋钮值。其次,它不能实现高性能,因为它需要搜索整个空间。

《Automatic database management system tuning through large-scale machine learning》提出了一个基于机器学习的数据库调整系统 OtterTune。OtterTune 使用高斯过程(GP)为不同的工作负载推荐合适的旋钮。首先,它选择一些查询模板,每个查询模板包含一个查询工作负载及其相应的合适旋钮值。其次,它提取数据库的内部状态(例如,读取/写入的页面数,查询缓存的利用率)来反映工作负载特征。从内部状态特征中,OtterTune 使用因子分析过滤不相关的特征,然后使用简单的无监督学习方法(例如,K均值)选择与调整问题最相关的K个特征。OtterTune 使用这些 K 个特征来描绘工作负载的特征。第三,它使用这些选定的特征将当前工作负载映射到最相似的模板。OtterTune 直接推荐这个模板的旋钮配置作为最优配置。并且它还将查询工作负载输入到 GP 模型中,以学习新配置并更新模型。

正式地说,它的模型训练如下。给定训练数据(W,W0,C0,R),其中 W 是工作负载,W0 是 W 的相似工作负载模板,C0 是 W0 推荐的配置,C00 是 GP 模型推荐的配置,R 是 C0 和 C00 之间的性能差异。它通过最小化 C0 和 C00 之间的差异来训练模型。该方法具有良好的泛化能力,能够适应不同的数据库环境,并有效利用历史任务中学习到的经验。此外,它可以有效利用从历史任务中学到的经验,并将这些经验应用于未来的推理和训练。但该方法也存在一些局限性,包括依赖于复杂的流水线架构、需要大量高质量样本进行训练,以及在处理高维和连续空间的参数调整时存在困难。

一些研究试图通过强化学习来解决旋钮调节问题,《An end-to-end automatic cloud database tuning system using deep reinforcement learning》提出了一个基于深度强化学习(DRL)的数据库调整系统 CDBTune,该系统通过与数据库环境的持续交互来优化参数调整。CDBTune 将数据库调整问题映射为强化学习框架中的五个模块:环境(云数据库实例)、状态(实例的内部指标)、代理(调优模型)、动作(参数调整)、奖励(调整后性能变化)。

CDBTune 采用神经网络(Actor)作为调优策略,输入状态指标并输出参数值。同时,使用另一个神经网络(Critic)来调整 Actor,输出奖励值。在调优过程中,Agent 根据数据库实例的状态输出调优动作,应用到数据库实例上,执行工作负载,根据性能变化获得奖励,并用以更新 Critic 和 Actor。CDBTune 能够处理在线工作负载,通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值