一、概述
数据库作为对数据进行集中存储和管理的关键组件,是IT系统的基石。随着IT行业快速发展,数据体量进一步增加,数据库的重要性也愈发突出,其性能、可用性、安全性等方面的水准将很大程度上影响IT系统的完善程度。
人工智能与数据库的结合可以体现在很多方面,一是数据库系统自身的智能化,包括但不限于数据分布技术智能化、库内进行训练和推理操作、数据库自动诊断、容量预判等;二是数据库周边工具的智能化,传统数据库运维管理通常是由数据库管理员(以下简称“DBA”)使用工具或平台进行管理,面对越来越庞大的分布式数据库,DBA常需要耗费大量时间和精力来管理和维护,这个过程不但容易出错,而且错误发生将会给数据库正常运行和性能带来灾难性影响,数据库监控工具、数据库审计系统等周边工具智能化水平将大大影响数据库运维效率和安全性。
智能化程度高的数据库周边工具在提升管理效率、降低错误引入率、减少安全隐患的同时也大大降低了运营成本。
数据库系统智能化是使数据库能够自动执行调优、保护、备份和更新以及其他常规管理任务。数据库系统智能化既包括使数据库能够自动执行标准化的例行任务,如日常维护、扩展、升级和调优等。也包括采用机器学习算法分析大量数据记录,标记数据的异常值和异常的操作模式,帮助企业提高数据库的安全性并防范入侵者。数据库的智能化还可使数据库能够自动监控停机、断电等事故,并对这些事故进行快速响应,这将大大减少平均无故障时间,提升数据库的稳定性。
中国信通院《数据库发展研究报告(2021年)》指出,运用AI技术实现管理自治将是数据库未来发展重要趋势之一。Gartner认为数据库的智能化将是未来趋势,将减少90%数据库运维成本。
二、论文研究背景
学术界和工业界共识的研究重点是将机器学习与数据管理在功能上融合统一,利用机器学习增强系统设计开发。
在学术界,2018年卡内基梅隆大学Lin Ma、Dana Van Aken、Ahmed Hefny等人在数据库顶会SIGMOD发表了一篇论文《Query-based Workload Forecasting for Self-Driving Database Management Systems》,通过介绍自研框架QueryBot 5000探讨数据库在容量负载预测、自动选择最优化工作机制等方面的可行性,该论文也是本文章的解读重点。
在工业界,2019年6月,Oracle推出云上自治数据库Autonomous Database;2020年4月,阿里云发布“自动驾驶”级数据库平台DAS;2021年3月,华为发布了融入AI框架的openGauss2.0版本。其均采用上述思想降低数据库集群的运维管理成本,保障数据库持续稳定、高效运行。
该论文主要阐述数据库工作负载预测的问题。要实现数据库自动驾驶(如选择合适的时机在合适的列上自动创建索引),应该根据将要到来的查询对数据库进行优化,而不是根据过去一段时间的查询状态来优化,所以预测将来一段时间的工作负载十分重要。特别是对于云原生、存算分离的数据库系统来说,准确地预测工作负载,不仅可以为海量工作负载来之前做好准备,也可以在没有工作负载到来时,养精蓄锐,减少成本。
三、QueryBot5000 工作原理
该论文引入的系统名为QueryBot5000,下面逐个介绍该系统的几个重要模块及处理流程,大概流程如图:
上图中的工作流程分成三步:
1. Pre-Processor(预处理)
首先是预处理,预处理器分两步处理每个查询。它首先从查询的SQL字符串中提取所有常量,并用值占位符替换它们。这会将所有查询转换为准备好的语句。这些常数包括:
1)WHERE子句谓词中的值。
2)UPDATE语句中的SET字段。
3)INSERT语句中的值字段。对于批插入,QB5000还会跟踪元组的数量。
然后,预处理器执行附加格式化,以调整间距、大小写和括号的位置。通过使用数据库管理系统(以下简称“DBMS”)中的SQL解析器中的抽象语法树来识别令牌。此步骤的结果是一个通用查询模板。
经过以上步骤,还需要统计一个时间间隔内的各个模板对应的查询个数,然后把小的间隔合并聚集成大的间隔,以节省空间。
然后,预处理器执行最后一步,将具有等效语义特征的模板聚合在一起,以进一步减少QB5000跟踪的唯一模板的数量。该论文使用启发式的方法近似地比较相同语义:访问相同的表,使用相同的谓语,返回相同的映射,那么认定其等价性。
上图为经过预处理等效语义聚合后的模板数量,由原本的上百万条缩减为几千条。
2. Clusterer(聚类)
经过预处理,大量的查询语句被缩减成模板,但是模板庞大的数量依旧会给计算机带来巨大的计算量。为了进一步提高效率,通过聚类将语义近似的模板归并成组,抽取模板特征进行聚类,进一步提高预测的效率。
聚类可以从模板派生出三种类型的特性:1)物理特性,2)逻辑特性,3)历史到达率。该论文使用第三种方法,下面进行简要介绍:
1)物理特性
物理特性是指DBMS在执行查询时使用的资源量和其他运行时指标,例如读取/写入的元组数或查询延迟。其优点是,它们提供了有关单个查询的细粒度和准确信息。但它们取决于DBMS的配置、硬件以及同时运行的其他查询。如果其中任何一项发生变化,那么之前收集的有限元分析都是无用的,框架必须重建其模型。
2)逻辑特性
逻辑特性是指例如它访问的表/列以及查询语法树的属性。与物理特性不同,这些逻辑特性既不依赖于DBMS的配置,也不依赖于工作负载的特性。然而,缺点是因为来自逻辑特征的信息有限,可能会生成没有可识别的工作负载模式的集群,因此预测模型的预测表现较差。
3)历史到达率(即过去到达率的顺序)
历史到达率是指例如现在有过去24小时的记录,以每一小时为间隔统计每个模板的到达率,每个模板都会有连续24个到达率,把它作为模板的特征向量,共24维。cluster center表示集群中模板的平均到达率。尽管每个模板的总容量在任何给定的时间都不同,但它们都遵循相同的循环模式。由于同一集群中的模板显示出相似的到达率模式,因此系统可以为每个集群构建一个单一的预测模型,以捕获其查询的行为。
聚类是要把有相同到达率模式的模板聚在一起形成一个簇(cluster),这个簇的到达率是簇内所有模板到达率的算术平均,在之后进行预测时只使用聚类中心,不再使用原始模板,这样可以大大降低计算量。如下图所示:
聚类算法:
原始的DBSCAN算法通过检查对象与集群的任何核心对象之间的最小距离来评估对象是否属于集群。本文是修正版的DBSCAN算法,它根据模板与集群中心的距离来为集群分配模板,而不仅仅是随机的核心对象。这是因为QB5000使用集群的中心来表示作为该集群成员的模板,并使用该中心构建预测模型。
整个算法分成三个步骤:
1)从还未划分的模板中拿出一个点(template),跟已有簇(cluster)的聚类中心(cluster center)计算相似度(similarity score),如果大于阈值,则划分到相似度最大的该类中;然后用算术平均更新聚类中心;如果和所有的聚类中心的相似度都小于阈值,那么新建一个聚类。
2)聚类中心发生改变后(加入、删除类中的模板会使聚类中心变化,新的到达率也会使其改变),检查簇中的所有点是否还满足阈值条件,如果不满足则去掉该模板,将这个模板用(1)中的方法重新归类。
3)合并聚类中心:如果两个簇的聚类中心的相似度大于阈值,则合并这两个簇。
算法步骤参考图如下:
这是一个在线计算的聚类算法,根据新点的到来,不停地重复上述步骤,直至所有模板分入聚类且所有聚类相似度小于阈值。
聚类剪枝:
聚类确实可以有效的降低需要处理的模板数目,但是由于长尾效应,聚类后的模板依旧很多,形成了很多很小的聚类,该文只选取了5个最大的聚类,它们总共占据了整个负载中95%的查询量。
3. Forecaster(预测)
最后一步就是通过预测模型对cluster语句在未来的出现频率进行预测。预测结果形式是有多少这个组里的语句会在未来什么时候再次被提交查询。
文中介绍了6种不同的预测模型,并从 3 个指标来比较分析它们的不同,如下图所示:
指标介绍:
- Linear:输入输出之间是否有线性关系。
- Memory:模型是否能够综合输入与它从历史数据中保存下的信息来预测未来。
- Kernel:是否使用kernel核函数,使用核函数即支持非线性分析。
文中也简单介绍了这些算法:
- Linear Regression(LR):线性回归算法。
- RNN:循环神经网络算法。
- KR:核函数回归算法。
线性模型当数据中的内在关系简单时能够很好地避免过度拟合,它们需要更少的计算来构建,并且需要更少的训练数据;另一方面,功能更强大的非线性模型更适合学习复杂的数据模式,但是它们确实需要更长的训练时间,因容易过度适应而需要更多的训练数据。
线性模型通常在不久的将来进行预测时表现更好,而非线性模型在预测时间更远时表现更好。怎样扬长避短结合这两种算法是一个问题。一个众所周知的解决方案是使用集成方法(ENSEMBLE),该方法将多个模型组合在一起进行平均预测。其优势与劣势如下:
- 优势:ENSEMBLE混合多种算法模型做平均预测,使用线性模型预测近期,使用LSTM预测较长时间的结果。结合方式是将LR和LSTM的结果取平均。
- 劣势:ENSEMBLE无法预测尖刺现象,如每一年只出现一次的峰值。但是使用KR核回归的方式可以预测这种现象。
将以上两种情况混合(HYBRID):当KR预测结果超过ENSEMBE一定倍数时则使用KR的结果,否则使用EMSEMBLE的结果。
QB5000使用了一种混合预测模型,模型预测范围根据horizon和interval两个指标决定,horizon代表模型能够预测多久,interval代表模型预测的时间粒度(例如每一分钟或每一小时的查询数量),间隔越细预测准确度越高,但存储和计算的开销代价也随之提升。
此外该模型还可以应用于自动创建索引,从而增强吞吐量和降低延迟,文中将该模型应用在MySQL和PostgreSQL上,分别采用AUTO、STATIC和AUTO-LOGICAL三种主要索引选择方式。
三、总结
该论文的主要工作方向是数据库资源预测、自动扩容、性能诊断和建模、移位检测、负载特征化、查询的指标预测等,通过分析查询的逻辑构成减少需要监控的查询数量,利用在线聚类方法对具有相似模式的查询模板进行分组,同时引入一种混合学习方法来预测查询到达率。
与之前别人的研究工作DBSeer不同,该模型不但着眼于当前混合工作负载,还能基于历史数据预测未来负载,实验结果显示QB5000在帮助DBMS实时选择目标负载的最佳索引是有效的。
数据库智能化是未来发展的一个趋势,随着数据量和数据维度的不断扩大,随之而来的则是更多复杂的挑战。数据库如何与人工智能技术更好地结合,未来还有很多种可能。