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