李士福:openGauss 自驾驶数据库内核在 AI 领域的探索和创新
李士福:openGauss 自驾驶数据库内核在 AI 领域的探索和创新
openGauss 2023-04-20 17:59
智能化正在不断颠覆传统生产力。随着数智时代的到来,AI 技术在提升管理效率、降低运维成本等方面发挥着越来越重要的作用。当 DB 与 AI 相结合,数据库产品也变得更加智能化。目前智能数据库技术是业内的研究热点,openGauss 作为国内数据库根技术的重要一支,在这一领域取得了哪些成就?未来有哪些发展规划?
2023 年 4 月 7 日,华为 openGauss 数据库 AI 领域负责人李士福在第十二届『数据技术嘉年华』【数智趋势:智能运维与自治】专题论坛发表了题为《openGauss:自驾驶数据库内核》的演讲。本文将对本次演讲进行回顾。
嘉宾简介
李士福,15 年数据库内核开发经验,2014 年加入华为高斯部,曾在 Teradata 研发中心从事分布式 MPPDB 数据库研发。目前其主要负责 GaussDB(含 openGauss)自治数据库内核的研发工作,包括 DBMind 自治运维系统、DB4AI 库内 AI 引擎和自学型内核;同时作为 openGauss 社区 TC 成员支撑 openGauss 社区拓展。
**一、openGauss 自驾驶内核整体介绍
**
李士福表示,openGauss 自驾驶内核整体上主要包含两个子系统:AI4DB 自治系统和 DB4AI 库内 AI 引擎。
AI4DB 自治系统主要又包含两大部分:一个是 DBMind 自治运维系统,是给用户、主要是 DBA 做自监控、自诊断、自由化和自安全,其主要目标是方便用户做系统的运维诊断,让系统更高效、可靠运行;另一个是把 AI 技术嵌到数据库内核之中,实现智能查询重写、代价估计、行数估计、计划自适应选择、负载自适应调度、自学习索引、缓存自适应淘汰等。
DB4AI 库内 AI 引擎则是指在数据库内置很多 AI 算法,把 AI 能力直接内嵌到数据库中,通过训练和推理 SQL 语法、训练语句执行计划及代价为数据库提供 AI 能力,这样能方便用户使用训练和推理的语句。同时 DB4AI 还可以提供算法 API 接口,供学习型内核组件调用,从而为库内组件加速。
**二、DBMind 运维管理系统架构和应用
**
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
李士福指出,DBMind 整体运维架构主要涵盖四个方面:
数据采集层作为底座,主要负责在数据库运行节点上部署 Agent 采集节点,从而采集数据库指标和 OS 指标,同时还负责执行 AI Service 下发的运维管理命令。
在****数据计算层,数据库外的节点可以在备机部署 AI Service 服务节点,同时有一些存储的引擎,来实现数据计算存储。
自治服务层主要提供三大方面的自治服务:其一是 SQL 诊断调优,包括慢 SQL 诊断、发现以及索引优化等;其二是安全,提供异常行为检测、敏感数据发现;其三是运维,即整个系统的运维诊断,包括参数调优、系统分析诊断等。
最顶层是监控,通过端到端的监控诊断、运维还有优化,实现了从问题发现、问题诊断到问题优化的全流程管控,对用户来说是无感知的。
在 DBMind 自治运维系统层层严密的架构下,其有广泛的应用。李士福透露,DBMind 自治运维系统的应用主要聚焦于三个方面:索引推荐能力、慢 SQL 诊断和建议、多指标关联分析。
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
索引推荐能力是指在数据库内核中内置单条索引的推荐能力,来实现单条索引推荐,从而让用户很容易对一条语句实现索引加速。由于单条索引很难对整个系统有效,因此 openGauss DBMind 额外增加了对整个系统负载的索引推荐,通过对批量 workload 的采集、处理、压缩后再进行单条索引推荐,从而降低索引推荐比例、提升整体效率。
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
慢 SQL 诊断和建议是在 openGauss 中集成的能力之一。在数据库中,openGauss 会识别哪些语句是慢 SQL,然后采集慢 SQL 和它的相关指标特征。同时结合当前系统的运行状况,比如 CPU 使用率和 IO 使用率等指标,把这些信息作为统一的集合进行训练。训练后形成的特征库,可用于与之后遇到的慢 SQL 语句境进行智能匹配,最后把根因结果在界面上展示,同时给出优化建议。
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
多指标关联分析可以帮助我们快速发现问题。我们都知道,采集的指标是多种多样的,一个指标的变动可能联动其他指标也发生变化。目前 openGauss 施行了多种异常检测算法,例如:持续增长、毛刺、周期性等。基于这些检测算法观察环境指标,可以发现指标间的关联关系,从而确定影响关键指标的变化因素有哪些。
三、库内 AI 引擎架构和应用
对 DBMind 整体运维架构进行了详细的介绍后,李士福还分享了库内 AI 引擎架构和应用方面的知识点。
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
DB4AI 库内 AI 引擎架构中,基于优化路径,openGauss 可以展示当前 AI 算子的执行路径,让用户可以查看执行计划。其次是全流程业务管理,除了常见的模型管理,openGauss 数据库还支持通过系统表存储管理模型。此外,还支持数据集管理,在数据更新变化的情况下,不影响当前训练的模型。李士福透露,研发团队还在做模型的漂移,去保证模型的新鲜度;进一步还将结合异构计算能力,将执行算子下推到 GPU 去做稳定训练加速,从而构建起完整的 DB4AI 引擎架构。
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
DB4AI 与不同的应用相结合,能帮助开发者提升工作效率。“在应用上,DB4AI 给用户提供交互式的界面,例如结合 Jupyter 做交互式的分析。因此,我们提供 DB4AI Python 库,结合这个命令可以很容易地在交互界面上给用户展示相关信息。这种可以使用 Python 的方式让用户很容易上手。”李士福说道。
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
目前 DB4AI 也积累了丰富的案例,例如库内 AI 高效训练和推理、模型自适应漂移。通过机器学习算法,完成可解释模型;每个月采 2000 个样板信息完成模型漂移,解决了模型与当前业务不拟合等问题。openGauss 在 DB4AI 方面的应用能极大地节省人力,降低成本。
![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
此外,李士福还就智能优化器架构做了简要介绍。openGauss 数据库的智能优化器主要完成四项任务:智能基数估计、自适应计划选择、智能代价模型、智能计划探索。其中,他重点介绍了智能基数估计、自适应计划选择这两项任务。智能基数估计是指结合 AI 算子对数据做分析和处理,改善了基于神经网络算法的传统方法很难落地的情况;自适应计划选择主要解决的是缓存计划的使用问题。
在演讲尾声,李士福总结指出,AI 与 DB 的结合其实是一个新兴领域,目前 openGauss 在这一领域投入很多。AI 与 DB 相结合能解决当前运维场景效率的问题,还可以提升用户使用价值。后续,华为将持续深耕这一领域,并将研究成果持续应用至社区。
评论