本篇文章为大家讲解AI原生数据库和其他类型数据库的发展历程。
近年来,随着AI(人工智能)技术的成熟和发展,AI与数据库的结合越来越紧密。为了提高数据库系统的智能化程度,使数据库系统能够更加智能地运行、维护、管理,不断有研究者采用人工智能方法来解决数据库管理、优化等问题。
2019年初,谷歌联合麻省理工学院、布朗大学的研究人员共同推出了新型数据库系统SageDB,并撰写了一篇论文详述SageDB的设计原理和性能表现。论文中提出学习模型可以渗透到数据库系统的各个方面,提供了一种构建数据库系统的全新方法。清华大学利用AI技术来支持数据库的自调优、基于AI的代价估计器、基于AI的优化器、基于AI的物化视图技术以及库内AI推理技术。
2019年5月,华为公司发布了全球首款AI原生(AI-Native)数据库——GaussDB,该数据库实现了两大革命性突破:
(1) 该数据库首次将人工智能技术融入分布式数据库的全生命周期,实现自运维、自管理、自调优、故障自诊断和自愈。
(2) 该数据库通过异构计算创新框架充分发挥x86、ARM、GPU、NPU 多种算力优势。
GaussDB的出现,标志着数据库产业将全面进入人工智能时代。虽然AI原生数据库具有很多优势,但是AI原生数据库处于起步阶段,面临很多挑战,需要研究者投入更多的精力进行开发和研究。
除了上面介绍的比较有影响力的数据库外,在数据库领域还存在着许多其他类型的数据库。
在大多数系统中,实时处理数据一直都是十分迫切的需求。实时数据处理最早的尝试在20世纪80年代末,有人提出了活动数据模型,该类模型能够实时捕获数据变化并更新数据,在很多关系数据库中得到了使用,但由于其语法过于复杂,往往会导致计算代价过高。在20世纪90年代到21世纪初期间,出现了多种用于管理数据流的系统(Data Stream Management System,DSMS)。典型的实时数据库有Apache Storm、PipelineDB、Heron和谷歌的Dataflow等。
前面介绍的数据库都是运用在服务器、集群、云计算平台等计算资源上的,“体积”庞大,以“客户端/服务端”的形式提供数据存储和管理服务。为了克服“客户端/服务端”模型因为通信带来的开销,降低延迟时间,提出了终端数据库的概念。
SQLite是一款轻型的由C语言编写的,遵守ACID特性的关系数据库管理系统。它的设计是嵌入式的,因此资源占用非常低,目前已经在很多嵌入式产品中使用。
LevelDB是谷歌公司实现的一个非常高效的键值数据库,目前的版本能够支持10亿级别的数据量。尽管LevelDB是单进程的服务,但是它的性能非常高,这主要归功于它的良好的设计。
终端数据库主要是为了应对性能的数据访问需求出现的,结构简单,性能高,往往只适合在单机上使用。
为了解决企业数据集成问题,1988年,IBM 公司的研究员Barry Devlin和PaulMurphy创造性地提出了一个新的概念———数据仓库(Data Warehouse)。数据仓库是决策支持系统和联机分析应用系统的结构化数据环境。之后,众多厂商开始构建实验性的数据仓库。1991年,数据仓库之父比尔·恩门(Bill Inmon)在出版的Building the Data Warehouse 一书中提出的关于数据仓库的定义被广泛接受,使得数据仓库真正开始应用,其功能是将联机事务处理(OLTP)长期累积的大量数据,经过抽取、转换、集成和清洗等操作后得到的一组具有主题的、面向分析的数据。比较著名的数据仓库产品有IBM 公司的InfoSphere Warehouse,微软公司的Microsoft SQL Server Fast Track以及天睿公司的Teradata等。数据仓库容量大,能够进行分析决策和数据挖掘,但是,数据仓库中的数据难以更新,缺乏规范,往往都是面向某一应用,具有一定的局限性。
企业在生产过程中会产生、接收和存储大量的数据,而这些数据通常难以被其他应用程序直接利用,面临着这些数据应该以何种方式进行存储和分析数据的挑战,数据难以被共享和利用也容易导致数据孤岛的产生。为了解决这些问题,Pentaho公司的创始人兼首席技术官詹姆斯·狄克逊于2011年提出了数据湖的概念。简单来说,数据湖就是一个以比较自然的方式存储企业的原始数据的数据仓库或者系统,它能以各种模式和结构形式方便地配置数据,通常是对象块或文件。数据湖不但能存储传统类型数据,也能存储其他类型的数据,并且能基于这些数据做处理与分析工作,产生最终输出供各类程序消费。目前,成熟的数据湖并不多,亚马逊公司AWS Lake Formation服务,可以在几天内轻松建立安全的数据湖,松下、Accenture等公司都借助亚马逊公司的这一服务搭建自己的数据湖。近年来,虽然数据湖逐渐得到重视,但是数据湖缺乏数据治理和元数据管理,对原始数据的可用性也有一些过分夸大。
为了提高数据库的性能和可用性,研究者提出利用并行处理的方法,通过多个处理节点并行执行数据库任务,提高整个数据库系统的性能和可用性。目前并行数据库主要分成两类: 一类是传统的大规模并行处理(Massively Parallel Processing,MPP)关系数据库,比如Greenplum、Vertica等; 另一类是借鉴了MPP并行数据库的设计思想的SQL on Hadoop类的方案,比如Impala、HAWQ、SparkSQL等。
然而,并行数据库系统也有一些难以克服的缺点。例如,该类数据库的数据迁移代价通常比较昂贵、没有较好的弹性,灵活性较低,这影响到了并行数据库的弹性以及实用性。此外,该类数据库的另一个问题就是容错性较差。如果在查询过程中节点发生故障,那么整个查询通常都要重新执行。
大数据的处理往往需要依赖专门设计的硬件和软件,目前,已经有很多企业开发出了多种大数据分析工具。
MapReduce是由谷歌公司研发的一种面向大规模数据处理的并行计算框架。简单来说,MapReduce基于并行计算的思想,将一个大计算量的任务和数据分解给若干个Mapper同时进行处理和计算,最后由Reducer负责汇总Mapper的处理结果。随着MapReduce在众多大数据任务中取得成功,它已经为大数据并行处理带来了巨大的革命性影响,同时也是大数据时代的流行计算框架之一。
Hadoop是Apache公司设计开发的一个能够对海量数据进行快速分布式分析处理的软件框架。它能基于简单的编程模型将海量数据分发到计算集群中,以便进行分布式计算。
Storm 也是Apache公司研发的一款实时计算系统,该系统可以强化数据流的处理效果和性能,也可以用于在线机器学习、分布式PRC(Remote Procedure Call)和持续处理等大数据分析相关的场景。Apache公司的Spark是专为大规模数据处理而设计的快速通用的计算引擎,可用它来完成各种各样的运算,包括SQL查询、文本处理、机器学习等。
RapidMiner能够提供一个集成开发环境进行数据挖掘、机器学习和文本挖掘等工作。
迄 今为止,已经有很多优秀的大数据分析工具投入使用,并形成了良好的生态,极大地推动了数据科学的进步。
到目前为止,随着计算机应用领域的不断发展,数据库技术与计算机网络技术、人工智能技术和并行计算技术等相互渗透、互相结合,成为当前数据库技术发展的主要特征之一,呈现了下一代数据库的潜在发展方向。例如,传统的OLAP(联机分析处理)技术主要面向关系数据,然而其他类型的数据(例如,图数据和时空数据等)也有越来越多的应用场景。因此,如何分析这些多模态的数据也是OLAP面临的挑战之一。特别是企业从BI(商业智能)到AI的转型,继续设计下一代OLAP系统来实现智能化分析。
首 先,如何将人工智能技术与数据库技术相结合是未来的一个发展趋势之一。传统的数据库优化主要依赖于有经验的数据库管理员进行查询优化,然而在当今的大数据时代,数据和业务变得越来越复杂,仅仅靠数据库管理员的经验进行数据库优化显然是不能适应复杂的数据和业务的变化。因而如何利用人工智能技术(例如强化学习技术)来进行数据库的自动优化是重要的发展趋势,同时也是一项挑战。
其次,诸如一些非易失性存储器(Non-Volatile Memory,NVM)等新型介质的出现也为数据库的设计和优化提供了一些新的思路。
最后,数据安全和隐私是未来需要解决的重要问题,需要研究全密态数据库来提升数据库的安全性。此外区块链因为其分布式、去中心化和信息不可篡改等特性也越来越受到关注,从某种角度来说,区块链是一个去中心化的数据库,但是其对数据的查找和数据格式化处理方面有天生的不足。因此,在以区块链作为数据存储层的基础上,研究如何将数据库技术与区块链结合起来,为区块链提供一个数据库层,从而加速数据的查询效率、提高区块链作为数据库的可用性,这也是发展趋势之一。
|内容来源:书籍《openGauss数据库核心技术》
获取更多数据库相关资讯,请搜索并关注微信公众号:Gauss松鼠会