《基于机器学习的数据库技术综述》
李国良、周煊赫等著,发表于《计算机学报》,2020-11-5.
传统数据库技术往往依赖于启发式算法或者人工干预,例如数据库参数调优、故障诊断、索引推荐等。然而在大数据时代,数据库实例越来越多、场景越来越复杂、数据量越来越大, 导致传统数据库技术难以满足大数据的需求。
机器学习技术因其较强的学习能力,逐渐在数据库领域展现潜力和应用前景, 为数据库优化技术带来了新的机遇。但是由于传统机器学习模型相对简单(如线性感知器、回归模型等),往往只能从单一的层次描述学习过程,严重限制了其应用场景和优化能力。随着算法的改进、计算能力的提升、大数据的变革,深度学习和强化学习为数据库优化技术带来了更大的优化空间。
本论文首先给出一个高效、高可靠、高可用、自适应性强的数据库系统需要涵盖的方面,包括数据库运维、数据存储、查询优化等。其次,讨论机器学习算法与数据库技术结合过程中可能面临的挑战,包括训练数据少、训练时间长、泛化能力有限、适应性差四个方面。然后, 综述数据库技术与机器学习结合的现状以及具体技术。 其中, 重点介绍数据库自动调参、查询基数估计、查询计划选择、索引和视图自动选择五个方向。最后,从八个方面展望机器学习将给数据库带来的革命性突破。
整体上,文章综述了数据库技术的研究情况以及与机器学习技术结合的前景, 并对未来机器学习与数据库关键技术的融合方式给出进一步展望。
在该部分,作者主要提出了数据库的8个可以通过机器学习介入、完成或改善的方面:
数据库运维:指为保证数据库稳定工作而开展的性能监控、 配置优化、 故障处理等服务。
数据存储:涉及到数据的组织、存储和管理方式,仅从软件和架构两个角度总结,这方面的研究主要包括存储模型和数据扩容两个方面。
优化器与执行器:优化器主要负责为查询语句生成相应的执行计划,执行器则根据选择的计划实际进行各类物理操作。这方面的研究工作主要包括基数估计、计划选择和分布式协同机制三个方面。
查询优化:查询优化主要是关于 SQL 层面上的优化工作,旨在写出执行友好的 SQL 语句。这方面工作主要有SQL 重写、索引推荐和自然语言查询三个方向。
数据库负载管理:数据库负载管理对于数据库的执行效率和系统资源的合理配置有很重要的意义,它主要包括负载分析、负载调度和负载预测与生成三个方面。
数据库安全与隐私:数据库安全的基本目标是利用信息安全和密码学技术,实现数据库数据的保密性、完整性和可用性保护,拒绝非授权的访问,保证数据库系统的运行安全。主要包括智能数据隐藏、智能审计、安全漏洞自检测等方面。
数据库自管理:主要指自动检测和修复数据库中的各类软件、硬件和架构问题。其基本目标是从管理层面提高数据库的稳定性。当前主要有自诊断、自修复和可视化管理工具三个方面。
数据库支持机器学习:将各个数据库方法乃至于整个数据库各自打包成组件仓库,由机器学习方法提供一套决策机制,统一根据负载和数据类型决定调用方法。包括机器学习作为用户定义函数(UDF)、机器学习作为物化视图、自动机器学习等。
机器学习技术给数据库发展带来新的机遇。但是,由于机器学习算法对训练数据和时间有较高要求, 而且数据库技术本身存在诸多问题。本部分作者探讨了二者在结合中出现的一些问题和挑战:
高质量的训练数据少:机器学习算法多对训练数据有较高的要求,主要体现在训练样本质量、训练样本数目和训练样本多样性三个方面。
训练时间过长:也即机器学习算法本身所需的较高的训练时间成本开销。现实场景下,系统在面临面临用户需求、上线压力时,往往倾向于选择简单的分类器,并很难有足够长的空闲时间等待模型收敛。因而数据库系统对机器学习算法的选择有两个方面的要求,一是模型与业务场景适配,二是结合梯度下降、迁移学习等提高训练效率的算法。
算法适应能力不足:当前数据库系统,面对多样的硬件环境、用户负载和用户需求,对机器学习算法的适应能力提出了更高的要求。
机器学习模型与数据库技术的匹配:数据库优化技术涉及到环境配置、查询优化和缓存机制等诸多方面, 发展至今仍然有很多亟待解决的复杂问题。如数据库系统参数的最优配置、状态空间的最优计划等。