来源:https://www.sohu.com/a/231121104_610509
一、数据库管理技术正在向AI方向发展

由于DBMS的发展越来越快,功能越来越多,需要优化的参数内容也相对更多,而各个公司的应用场景不同,对数据库的要求也各有特点。传统DBMS对管理人员要求专业性高,成本也很高,DBMS可以处理大量的数据和复杂的负载工作,但是却难以管理,因为它们具有数百个配置选项,用于控制诸如用于缓存的内存量以及将数据写入存储器等因素。

基于这些原因,一些DBMS与AI的结合相继出现,例如Oracle提出的自治数据库的概念,以及“OtterTune”,OtterTune是亚马逊和卡内基梅隆大学一起开发的机器学习自动化调整DBMS的系统,并公布起设计论文和开源项目,重点解决DBMS长期存在的一些问题:

1、对管理人员专业性要求高;

2、管理成本高;

3、无法实现配置资源最优化等一系列问题。

据了解,OtterTune可以自动为DBMS的配置选项找到最好的设置方法。

OtterTune目标是使任何人都更容易部署数据库管理系统,即使是那些在数据库管理方面没有任何专业知识的人也可以使用它。

OtterTune与其他DBMS配置工具不同,因为它利用从先前的DBMS部署调整中学到知识。大大减少了调整新的DBMS部署所需的时间和资源。

为此,OtterTune维护了从以前的调优会话收集的调优数据库。它使用此数据构建机器学习(ML)模型,以捕获DBMS如何响应不同的配置。OtterTune使用这些模型来指导新应用程序的实验,推荐改进目标参数的设置(例如,减少延迟或提高吞吐量)。

AI与DBMS的结合目前已经开始尝试,随着技术的发展,未来应该会变的更加成熟,然而,我并不以为,AI的出现会让DBA失业,DBA的工作对于数据库的管理依然非常必要,并且各类AI工具的研发和使用通常也是由经验丰富的DBA来完成。

例如,我在工作中也曾经通过客户服务器的硬件配置及业务场景来自动生成大数据系统的配置文件,这在某种意义上也是一种AI的实现,而这个工具的实现是基于DBA平时对系统参数调整的经验才实现的。

因此,我认为作为DBA应该积极的拥抱技术的变化,尝试用各种手段来简化和优化数据库管理的工作,让AI等技术成为一个未来的DBA所必备的知识。

二、经历了NoSQL,NewSQL时代正在到来,融合OLTP和OLAP的HTAP发展迅速。

过去几年,起源于Google三大基础设施论文(GFS,Mapreduce和Bigtable),诞生了开源的Hadoop系统,通常用作公司对于海量非结构化数据和结构化数据的存储及分析,得益于开源社区的贡献和各大互联网公司的应用,Hadoop生态系统迅速发展,已经成为了OLAP方面对海量数据处理的事实标准,尽管Hadoop生态系统已经日趋成熟并被业界广泛认可,然而作为一个离线数据分析系统,Hadoop无法实时对数据的分析提供结果,因此通常用作业务数据库之外构建一个新的数据仓库,并且通常仅提供OLAP也就是数据分析方面的支撑,这就要求在传统的数据库和Hadoop之间构建一套ETL系统,用作两者之间数据的导入导出,这就使得数据库和数据仓库的管理更加的复杂。 Hadoop系统作为一个庞大的开源系统,往往需要很多组件才能满足业务的需求,所以我通常认为基于Hadoop构建数据仓库满足OLAP的需求目前仍存很多不足,而NoSQL数据库的不断发展,也为很多大数据量业务的发展带来了福音。 例如可以通过Hbase来管理近千亿的url数据,并且NoSQL数据库通常是可以动态扩容并且支持容错,但是NoSQL系统的缺点也非常的明显,例如应用场景相对简单,通常无法兼容传统的sql语句,多表关联以及事物等需求也通常无法满足。对于开发人员还需要重新学习NoSQL的API和使用方式,带来了额外的代价。

基于上述原因,出现了融合OLTP和OLAP的一种提法HTAP,意味着可以通过一个数据库系统同时满足事务性需求和分析型需求,而最具代表性的就是Google的Spanner+F1的论文,产生了一批NewSQL系统。

例如CockroachDB和国内PingCAP团队开发的TiDB,以TiDB为例,TiDB采用Raft实现分布式协议,并且完全兼容MySQL的客户端,这对笔者本人也非常有吸引力,即可以用熟悉的MySQL的接口,又不需要对数据库进行分库分表,既实现了分布式,又减轻了用户的学习成本,对于企业来讲,可以通过构建一套分布式数据库系统,同时满足事务性和分析型需求,减轻系统复杂性的同时也提高了效率。

在这里向TiDB团队致敬,在数据库领域作出了世界级的开源项目,可以说是具备里程碑的意义。HTAP将成为未来的数据库的主流发展趋势。

三、 时序数据库正在崛起

物联网发展势头迅猛,互联网和传统公司也争相布局,随着物联网的发展,传感器等产生了大量的数据,而这些数据往往都是时间顺序,在其他一些应用场景,例如金融领域的,股票交易,汇率等以及Devops的监控数据,都是属于时序数据。

基于这些场景产生了时序数据库的概念,时序数据库可以对时间属性进行特殊的索引,实现数据的快速查询以及更高的压缩,例如InfluxDB项目,InfluxDB是一个使用Go语言开发的分布式时序、时间和指标数据库,无需外部依赖。特别适合处理和分析资源监控数据。

笔者在物联网项目已经尝试使用了InfluxDB,用于存储大型中央空调设备产生的数据,目前项目已经稳定运行半年,与传统DBMS相比,InflluxDB的存储空间减少了近70%,存储和查询效率也有大幅度提升,并且通过InfluxDB集成的聚合函数和连续查询功能,可以自动生成数据的日报表、月报表、年报表,极大减轻了开发成本和系统复杂度。

同样,国内由陶建辉领衔的涛思数据(TAOS Data)团队也正在做时序数据库产品TDengine,目前已经开放测试,希望更多的国内团队做出属于我们自己的优秀数据库产品。