Oracle的新一代数据库是真正的Self-Driving么?

Oracle的新一代数据库是真正的Self-Driving么?

本文为Andrew Pavlo教授博客《What is a Self-Driving Database Management System?》的笔记。

笔者注:本文对Oracle 2017OpenWorld提出的Self-Driving DBMS进行了有理有据的讨论,质疑Oracle提出的数据库并非是真正的Self-Driving,非常值得认真读一下。

2017年的Oracle OpenWorld上,Oracle宣布其下一代数据库将是Self-Driving的数据库,直接引燃了整个数据库业界~本文对这一轰动业界的事件进行解读,揭露Self-Driving的谜之面纱。

CMU数据库大佬Andy Pavlo针对Oracle的Self-Driving数据库发表了自己的看法

From what I can tell from watching their marketing videos, talking with people in the know, and reading [early evaluations](oracle-base.com/blog/ta), it looks that Oracle's self-driving offering uses their existing deployment and tuning tools that they developed in the previous two decades.

也就是说,从Oracle目前公开的这些资料来看,Oracle的self-driving数据库依然是现有的云数据库DBMS配合了一系列的self-tuning工具 ,只不过终端用户不再需要手工去运行这些工具了。以自动编排为例,当DB服务不能够满足SLA的要求时,这些工具会基于一些规则和启发式条件来触发自动扩容。

(注:SLA是用来衡量指标是否符合要求,例如rt必须小于5ms。)

从Andy Pavlo的评价中可以看出,Oracle的2018版本self-drivingDBMS将会与IBM在2008年DB2的proof-of-concept概念比较类似,IBM系统也采用将DB2现有工具封装到外部控制器或者检测器的方式,当系统不满足外部资源约束条件时,这些工具将会被触发,然后作出相应的调整。这种工作方式依然需要一个DBA专家来选择调优措施,以及适时地重启DBMS。可能Oracle的DBMS可能更复杂些,但是这两个系统依然是事后触发式的智能,因为他们都不具备预测未来情况的功能。

Oracle声称他们的自治数据中心能够进行自动的查询调参与优化。这是Oracle新的自适应查询优化功能,它的实现原理为:DBMS在发现某个查询的实际数据与其估计的数据不匹配时,会生成一个新的执行计划。这个方法是两个功能的集合:(1)IBM的LEO工具,DBMS可以在查询执行时利用观测到的统计信息修改优化器。(2)INGERS的自适应查询过程技术。然而,Oracle并不是第一个同时支持这两种功能的系统,微软在SQL Server2017时也支持了该特性。

Andy Pavlo同时质疑Oracle的自治DBMS是否能够自动的为慢查询建立新的索引,这很像是Oracle现有工具中的数据库设计工具,而不是机器学习技术。利用机器学习或者增强学习做查询优化正是Andy实验室正在研究的方向,而微软研究院与伯克利同样有对这个方向进行研究。

综上,Andy认为Oracle的自治数据库并不是一个真正意义上的self-drivingDBMS,而是一个触发式系统。该系统只会根据目前的系统状况以及过去的历史信息操作,不能执行长周期的计划。Oracle会从一个数据中心整体角度利用预测模型来编排资源,而不会根据个人特定业务的workload模式去调整资源。


推荐阅读

编辑于 2018-05-05 00:03