openGauss-AI特性指南AI4DB-数据库自治运维
openGauss AI特性指南:AI4DB: 数据库自治运维
人工智能技术最早可以追溯到上世纪50年代,甚至比数据库系统的发展历史还要悠久。但是,由于各种各样客观因素的制约,在很长的一段时间内,人工智能技术并没有得到大规模的应用,甚至还经历了几次明显的低谷期。到了近些年,随着信息技术的进一步发展,从前限制人工智能发展的因素已经逐渐减弱,所谓的ABC(AI、Big data、Cloud computing)技术也随之而诞生。
AI与数据库结合是近些年的行业研究热点,openGauss较早地参与了该领域的探索,并取得了阶段性的成果。AI特性子模块名为DBMind,相对数据库其他功能更为独立,大致可分为AI4DB和DB4AI两个部分。
- AI4DB就是指用人工智能技术优化数据库的性能,从而获得更好地执行表现;也可以通过人工智能的手段实现自治、免运维等。主要包括自调优、自诊断、自安全、自运维、自愈等子领域;
- DB4AI就是指打通数据库到人工智能应用的端到端流程,通过数据库来驱动AI任务,统一人工智能技术栈,达到开箱即用、高性能、节约成本等目的。例如通过SQL-like语句实现推荐系统、图像检索、时序预测等功能,充分发挥数据库的高并行、列存储等优势,既可以避免数据和碎片化存储的代价,又可以避免因信息泄漏造成的安全风险;
本章节所涉及的功能独立存在于数据库安装目录($ GAUSSHOME )的bin/dbmind目录中,各个子功能存在于dbmind的子目录components中。提供gs_dbmind命令行供用户调用。与此同时,对于数据库内置AI的功能(如DB4AI),以SQL语法和系统函数的形式呈现。
AI4DB: 数据库自治运维
如上文所述,AI4DB主要用于对数据库进行自治运维和管理,从而帮助数据库运维人员减少运维工作量。在实现上,DBMind的AI4DB框架具有监控和服务化的性质,同时也提供即时AI工具包,提供开箱即用的AI运维功能(如索引推荐)。AI4DB的监控平台以开源的Prometheus为主,DBMind提供监控数据生产者exporter, 可与Prometheus平台完成对接。DBMind的AI4DB服务架构如下图所示:
图 1 DBMind AI4DB服务架构
图中各关键组件说明:
- DBMind Service: DBMind后台服务,可用于定期离线计算,包括慢SQL根因分析、时序预测等;
- Prometheus-server: Prometheus 监控指标存储的服务器;
- metadatabase: DBMind在离线计算结束后,将计算结果存储在此处,支持openGauss、SQLite等数据库;
- client: 用户读取DBMind离线计算结果的客户端,目前仅实现命令行客户端;若采用openGauss等数据库存储计算DBMind计算结果,则用户可以自行配置Grafana等可视化工具对该结果进行可视化;
- openGauss-exporter: 用户从openGauss数据库节点上采集监控指标,供DBMind服务进行计算;
- node-exporter: Prometheus官方提供的exporter, 可用于监控该节点的系统指标,如CPU和内存使用情况;
- reprocessing-exporter: 用于对Prometheus采集到的指标进行二次加工处理,例如计算CPU使用率等。
环境配置
DBMind外置AI功能需要运行在Python 3.6版本及以上,需要的第三方依赖包记录在AI功能根目录($ GAUSSHOME /bin/dbmind)的requirements.txt文件中(包括requirements-x86.txt与requirements-arrch64.txt,用户可根据自己平台类型选择)中,可以通过pip install命令安装依赖,如:
pip install requirements-x86.txt
如果用户没有安装齐全所需的依赖,则当用户执行gs_dbmind命令时,会再次提醒用户安装第三方依赖。需要注意,该文件提供了DBMind所需的第三方依赖,若用户环境存在第三方包冲突等情况,可由用户根据实际情况进行处理。