大综述。TODO:概括到每个论文 DONE
AI用于数据分类,交互/DB用于数据管理。很容易结合。
AI4DB
传统DB设计基于经验,要求手动调优(tune konb)与维护(maintain)。
基于学习的DB配置
旋钮调优(调参)
主要有四类:
- 基于搜索的调优
- BestConfig:给定一个工作负载,从历史数据中找到相似的工作负载,返回与特定优化目标(场景)匹配的数据库配置参数值。
给定n个旋钮,将每个旋钮的取值范围划分为k个区间。形成$k^n$个子空间。每次迭代,BestConfig从当前空间中随机选择k个样本,并选出性能最优样本记为$C_1$。
下一轮迭代,从$C_1$临近的有节空间中采样。这样来逐步缩小搜索空间,得到一个优化旋钮组合。
局限性:以随机采样+局部搜索,有限时间内无法找到全局最优。并且需要遍历整个搜索空间。
- 传统ML调优
- OtterTune:利用高斯过程(GP)进行参数推荐,通过历史工作负载模板匹配和特征筛选(因子分析+K-means)实现自动化调优。
给定训练数据(W, W0, C0, R),其中W为工作负载,W0为相似模板,C0是W0的推荐配置,C00是GP模型生成的新配置,R表示C0与C00的性能差异。模型通过最小化C0与C00的差异进行训练。
- 深度学习调优
CDBtune核心挑战在于设计DRL的五个模块:
- 环境:云数据库实例、
- 状态:实例的内部指标、
- 代理:调优模型,包含两个神经网络:
Actor:输入状态指标,输出参数配置(动作);
Critic:输入动作和状态指标,预测奖励,用于优化Actor; - 动作:参数调整。
- 奖励:性能变化
Qtune升级:
- 双状态深度强化学习(DS-DRL):同时嵌入工作负载特征(外部指标)和数据库状态(内部指标),支持细粒度调优;
- 查询聚类与集群级调优:根据查询的“最佳”参数配置聚类,同一集群内查询共享配置,适应动态负载变化。
- 强化学习调优
专注于优化特定参数。
- IBTune:为单个数据库实例的缓冲池(Buffer Pool)大小调优设计。训练一个成对神经网络,输入当前实例与目标实例,输出预测响应时间。
- RelM:多层次内存分配调优。引导式贝叶斯优化计算性能指标。深度确定性策略梯度调优。
索引顾问系统
定义:索引收益$benefit(q,c)$,q:工作负载中的查询,c:每列的索引大小。空间预算B。
调优:总收益最大,总索引大小小于B.
挑战:假设索引:字典中虚拟索引信息,用查询优化器估算使用索引前后执行成本差。
- 离线索引选择
DBA生成代表性工作负载,静态分析后生成固定索引。
AutoAdmin:为查询生成候选索引集合,选择每条查询的最优方案。汇总Top-k方案,用贪心逐渐加直到B。
DB2 Advisor:建模为背包问题,动态规划求解。
在线索引选择
传统派:软索引自治,COLT。和离线差不多。
半自动:WFIT:实时动态分析负载,依赖DBA判断是否对特定列建立索引,并反馈。
ml:ITLCS,学习分类器系统LCS,生成列级索引规则,遗传算法淘汰无效规则。
dl:输入负载特征,列特征。基于马尔科夫决策过程,输出索引创建/删除动作。
视图顾问系统
核心任务:候选试图生成,选择。
候选视图生成方法:
- 基于频繁子查询的识别:启发式算法分解查询,生成多查询执行计划。通过成本模型评估复用潜力,寻找全局最优。
- 子查询泛化与改写:合并相似视图、扩展视图功能、调整查询条件范围。
视图选择:NP难问题
- 离线优化(ILP,BIGSUBS) :整数线性规划。视图效用/存储占用,用类似遗传算法的变异操作筛选候选视图。
- 在线框架CLOUDVIEWS:候选生成:查询计划图分解为高频子图,建模成背包问题选择top-k。
- Rl
- 视图驱逐:信用模型:信用=未来效用+重建成本。存储不足时,驱逐信用最低,类似lru.
SQL重写器
低效查询->等价、执行效率更高(push down……)
传统派:预定义规则集。
机器学习增强(强化学习):
- 将SQL建模重写为多步决策,每步用agent评估成本,选择成本最低的并反馈更新策略。
- 规则生成LSTM:输入查询模式、编编译器特性等特征。输出适配新场景改写规则。
基于学习的DB优化
基数/成本 评估
传统方法的局限性:无法捕获多列相关性,稀疏查询失效,复杂连接误差。
- 监督学习方法:
- 混合模型mixture model:park等通过混合模型拟合谓词选择率。不支持复杂操作符。
- 全连接神经网络FNN:Ortiz,Dutt。难捕捉连接相关性。
- CNN:Kipf:多集合端到端学习连接技术,分解为表/连接/谓词。Neo:结合CNN与词嵌入编码查询计划。父节点难以复用子节点编码。
- RNN:Ortiz:RNN处理左深计划树。Sun:树状LSTM编码子计划。依赖词嵌入编码,在线延迟高。
- 无监督:
- 核密度估计KDE:Heimel等通过KDE轻量你和数据分布。不支持多表。
- 自回归密度模型:自回归模型刻画联合分布,渐进采样处理倾斜数据。高维数据扩展性差。
改进:
- 复杂查询:
- 两步法(dl预测结果唯一率,唯一率与重复结果相乘,扩展传统技术估计)。
- 动态env:在线增量/联邦学习。
- 多目标:轻量化模型/知识蒸馏/硬件感知优化。
连接顺序选择
- 离线:
- 数据库统计信息+历史执行,反馈优化。执行后对比实际成本与估值。
- 状态独热编码(表存在性+操作选择)。使用MLP评估,DQN实现rl。
- 连接树深度向量与查询特征向量,近端策略优化PPO生成顺序
- 树lstm,两阶段训练(基于成本-结合延迟反馈)。
- 在线:
- Eddy:查询拆成算子,动态路由元组执行(策略:低成本+低选择率)。泛化有限。
- EddyRL:路由问题转化为RL(状态:元组进度,动作:算子选择,奖励:执行时间),最小化成本。
- SkinnerDB:UCT(博弈树搜索)算法,累计遗憾最小化,时间分片合并结果后反馈。
- 端到端优化器
未来方向:轻量化,自适应混合,跨库迁移泛化。
基于学习的DB设计
学习型索引/数据结构设计
- B+树替代
- 学习型B+树:将索引视为模型,用累计分布函数CDF预测键的位置。
- FItting:tree:通过预留空间支持插入,提供严格误差边界。
- ALex-index:分散预留空间,直接插入预测位置。
- 工作负载感知
- Doraemon:通过复制高频查询优化模型训练,重用预训练模型适应相似数据分布。
- 二级索引
- Hermit:TRS树捕捉列相关性,用线性回归映射目标。
- 哈希:CDF近似哈希,均匀分布键。
- 布隆过滤器:
- 三层三明治:传统bloom(首层过滤)+神经网络(减少误报)+传统bloom(保证没有假阴性)
- 多维数据:字符集RNN降维,KL散度优化分类阈值
- 动态更新支持:少样本学习。
- 空间与高维数据索引
- 空间索引:ZM:z-order曲线映射高维至一维,神经网络拟合分布预测位置。
- 高维最邻近搜索NNS:深度学习哈希,端到端监督CNN,结合相似性与比特率损失最小化hash冲突。平衡图分区:KaHIP分区KNN图,神经网络预测分区概率。
- 键值存储设计
- 自动优化架构:基础组件(ptr、area)构建设计空间,学习型成本模型(梯度下降……)自动选择最优结构。
学习型事务管理
- 预测:QB5000:
- 预处理:记录查询特征(语法树,到达率),聚合相同模板的查询
- 聚类模块:改进的DBSCAN按到达率相似性对查询模板聚类。
- 预测器:六种模型(ARIMA,LSTM)预测集群内查询的到达率模式,适应动态负载。
- 调度:
- 冲突概率建模:监督学习分类,二分类(输入事务特征向量对,输出中止标签。)dataset:事物提交/中止日志。特征表示:事务向量化。
- 动态队列分配:最大吞吐优化,可接受中止率下,高冲突概率事务对安排至并发执行位置。
基于学习的DB监测
健康监控DHM
- 根因诊断:
- 离线:提取历史慢查询,基于CPU使用率、TPS等聚类,人工根因标注。
- 在线:匹配新慢查询至现有集群,未命中则创建新集群请求人工标注。
- 主动监控:P-STore:结合负载预测与弹性监控,动态调整监控频率。
活动检测DAM
- 传统:trigger全量记录活动,高存储与通信开销。
- ml:多臂老虎机:高风险活动选择建模为决策问题,平衡利用(已知高风险策略)/探索(新策略发现),训练最优策略。
活动追踪:聚焦高风险/安全审计。
性能预测
- 传统:仅关注io,忽略资源竞争/操作符交互。
- ml:
- 端到端优化:建模并发查询父子操作符交互与并行计划,预测延迟。
- 图嵌入:建图:v操作符,e数据传递/资源竞争。使用GCN。
基于学习的DB安全
敏感数据发现
- 基于访问频率评分:高频访问记录视为敏感。
- 拉普拉斯噪声:保护隐私,向评分添加独立拉普拉斯噪声,递归采样k个未被选中模式,调整噪声率拟合真实分布。选择噪声扰动后频率最高模式。
访问控制
- 基于目的的动态控制:
- 学习合法访问目的,根据操作类型和数据内容动态生成访问策略。
- 监督学习识别合法请求。
SQL注入
- 分类树:
- query中提取token,构建分类树预测风险等级。
- 依赖历史攻击日志,泛化有限。
- 模糊神经网络FNN:
- 模糊规则+神经网络:提取攻击模式
- 解决小样本问题。
DB4AI
声明式语言模型
混合语言模型
BIGQueryML
- 任务拆分:请求拆为AI操作+DB操作,分别执行。
- 数据迁移:ETL管道频繁传输数据。
统一语言模型
MADLib
- 原生矩阵计算:稀疏矩阵库,线性代数运算。
- AI操作符抽象:封装数据采样、模型定义、训练与推理为SQL函数。
- 迭代训练:虚拟表+试图动态更新param.
拖拽式界面
- 虚拟表:数据映射为交互式界面,支持公式、透视表等
- 自动sql转换:操作转换为sql,触发db内ml
数据治理
数据发现
- 传统:基于规则扩展表属性/数据集级别管理(存储模式/来源信息)
- 知识图谱:Aurum:企业知识图谱(EKG):超图建模。灵活查询支持:语义/模式/数据血缘的复杂查询。
数据清洗
- 任务导向ActiveClean:迭代式
- 采样器:梯度变化估计选择高价值剧本。
- 清洗器:人工或规则修复脏数据
- 更新期:增量更新模型参数,减少全量计算开销。
数据标注
- 专家标注:高精度成本昂贵。
- 众包平台:低成本质量差,需要设计冗余和校验机制。
- 远程监督:知识库生成若标签,平衡成本效果。
数据沿袭
- 后向追溯:定位输出结果的源头输入(debug)
- 前向影响:追踪输入的所有衍生输出(脏数据隔离)。
- 惰性方法:按需执行沿袭查询,无存储开销,计算延迟高。
- 急切线性捕捉:构建沿袭图谱加速查询,存储路径信息,空间换时间。
- 细粒度系统:轻量索引嵌入db内核,低开销实时捕获数据血缘。
模型训练
特征选择
- 传统:暴力枚举特征子集
- ml:
- 批量处理+物化:缓存中间结果,减少重复计算。
- 主动学习:基于模型反馈动态选择高价值特征子集,评估最优。
模型选择
传统:网格搜索,经典模型超参数
神经架构搜索NAS:自动设计网格结构(层数/连接方式)+超参数(学习率/正则化)
- 吞吐量优化:并行策略:任务并行/参数服务器(分布式参数更新)/模型跳跃。
- 数据库集成:数据分布+存储优化 实现加速。
模型管理
分类:GUI,命令行
- 版本控制:超参数/数据集/代码版本
- 性能分析:不同模型的精度/速度。
- 协作分享:团队内。
硬件加速
- 数据库集成框架:
- DAnA:strider机制绕过CPU,直接从buffer pool读取数据,加速特征工程与训练。
- ColumnML:列式存储优化,FPGA实时加密,分区随机坐标下降SCD提升广义线性模型训练速度。
模型推理加速
算子支持
- 原生扩展:sysML:
- 矩阵操作优化:矩阵运算编译成底层聚合算子组成的DAG,代数重写+算子顺序调整优化执行。
- 并行处理:按列分块,多核并行。
算子选择
- 资源感知优化
- 内存估算选择:估算单块/分块矩阵内存消耗,选择执行时间最短的组合。Spark集成,算子转换为mapreduce。
- 检查点注入:持久化读取后插入检查点,动态移除低效算子
执行加速
- 内存加速:列式存储优化
- 压缩/加密实时处理:使用FPGA在内存中直接解压加密的列数据,减少CPU转换开销。
- 分区随机坐标下降(SCD):提升广义线性模型(GLM)训练效率,增强缓存局部性。
- 分布式加速:任务并行/负载均衡
- 分块路由:大矩阵分发至不同节点并行计算(矩阵乘法链)
- 流水线并行:分布式框架中,重叠数据传输/计算。
未来……
AI4DB
训练数据不足:数据敏感性/覆盖场景少
- 小样本学习,合成数据生成
动态适应性:新数据集/硬件环境/数据库系统/动态数据
- 迁移学习,在线学习
模型收敛性:未收敛导致决策错误
- 融合规则引擎,动态切换模型与规则。
多模态OLAP:传统relational无法满足图/时序/空间数据复杂需求
- GNN,ST模型,数据库算子融合
OLTP优化:高并发事务冲突调度
- RL建模,分布式调度
DB4AI
库内训练:模型存储安全(多租户),动态数据更新(增量训练)
- 加密模型存储,联邦学习
数据库加速ai:索引与物化视图筛选高价值样本
- 基于内容的实例搜索/特征索引
ai优化器:AI算子集成到数据库内核,分布式优化
- AI算子下推,代价估计模型
容错学习:分布式训练中节点故障导致任务失败
- 事务日志回滚,检查点容灾。
混合系统Hybrid
关系模型+张量模型:CPU擅长关系操作,AI擅长张量计算
- 统一数据模型(标量/向量/张量)、异构调度
混合推理优化:联合优化SQL与AI预测
- AI push down,AI物化试图
端到端混合:AISQL声明式语言/统一优化器/分布式执行引擎
- 语言:扩展SQL支持AI算子
- 存储:列式存储优化张量数据,支持压缩与加密。
- 执行:CPU+GPU协同。