认知误区:大数据就是Hadoop。
2020年以前这种论调在业界颇有市场,尤其是在国内市场(尽管美国市场在2019年就有人提出了“Hadoop已死”的论调)。
因为Hadoop真的很火爆,所以尽管许多人并不清楚Hadoop到底是什么、可以用来做什么,只是看到了行业的头部企业使用了基于Hadoop的系统,于是中小型企业也一窝蜂地要使用基于Hadoop的系统处理大数据相关业务。
在这种跟风的市场氛围下,如果某种大数据技术和Hadoop不沾边儿,那么客户、投资人甚至企业自己的团队成员都有可能会对该技术的前景持迟疑态度。
那么如何避免盲从,实现理性选择呢?
我们需要先了解大数据处理发展历程中形成了哪些主要的流派与生态系统。从20世纪90年代到今天,面向海量数据的处理与分析方式经历了3个主要阶段。我们在图1中以大数据技术NoSQL、Hadoop和NewSQL为例,展示了这3个发展阶段。

(1)关系数据库时代
我们在前文中提到过关系数据库自20世纪70年代诞生后便飞快地一统江湖,到了21世纪的第一个10年已经发展为一个庞大的生态系统。(想深挖更多细节的朋友,推荐去看看老夫的上一篇文章,里面有更全面的解读:揭秘大数据 | 9、大数据从何而来?-优快云博客)商业关系数据库的前3名为Oracle、DB2、SQL Server,这三者的市场份额之和已经超过85%。这印证了在科技行业,不能进入前3名意味着无足轻重的江湖地位。相对于商业版本而言的开源关系数据库的前3名是MySQL(含MariaDB)、PostgreSQL与SQLite。
随着互联网企业的兴起,以关系数据库为代表的这些传统的数据存储、处理、分析与管理的架构遇到的挑战越来越大,它们普遍在数据处理类型、超大数据集的处理能力上进入了瓶颈期,因此业界在2004—2010年迅速推出了一些解决方案,比较典型的有Hadoop与NoSQL两大系列。
(2)Hadoop与NoSQL时代
最早由雅虎公司开源的Hadoop项目,是受到了谷歌公司分别于2003年和2004年公布的GFS与MapReduce计算架构的启发(很多人把Hadoop看作开源的GFS+MapReduce)。Hadoop对应着谷歌技术的两大组件HDFS(Hadoop Distributed File System,即 Hadoop 分布式文件系统,负责海量数据存储,具有可扩展性和容错性等特点)与MapReduce,这两个组件中一个负责海量数据存储(可扩展性、容错性),另一个负责对海量数据进行分布式处理(新的编程范式)。Hadoop出现之后迅速得到了业界的强烈支持,一批围绕Hadoop软件架构的商业公司也随之出现,其中较为知名的当属Cloudera和Hortonworks。Hadoop项目在Apache软件基金会的管理下,也很快形成了一套颇为完整的可匹敌商业解决方案的软件框架(我们在后面的与大数据管理相关的内容中会展开论述)。
除了Hadoop,还有一个大数据解决方案:NoSQL。
NoSQL具有如下两大特点:
①大多支持类SQL的查询方式。
②绝大多数系统在一定程度上牺牲了数据的一致性,以实现可用性与扩展性。
在与大数据管理相关内容中,我们会具体讨论其一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance),这3个特性被称为CAP。
NoSQL阵营的成员如此之多,按照数据库引擎的种类,可以被分为以下五大类:
①列、宽列数据库:Cassandra、HBase、HyperTable等。
②文档数据库:MongoDB、CouchDB等。
③键值数据库:CouchDB、Dynamo、Redis等。
④图数据库:Neo4j、JanusGraph、Tigergraph、Ultipa Graph、嬴图等。
⑤多模数据库:Arrange、OrientDB、MarkLogic等。
除图数据库之外,以上的各类非关系数据库的设计理念与侧重点不尽相同,但它们都可以被看作对传统关系数据库的逻辑简化(做减法)或增强化(做加法)。有的NoSQL数据库为了追求高性能选择在内存中运行,如Gemfire、SAP HANA都被部署在内存中,形成了基于内存的数据处理网格。2020—2021年,备受开发者社区和风投领域追捧的PingCAP是一款跨界、多模的数据库,它的开发者宣称其效仿了Google Spanner。尽管在本质上它是一个典型的三合一复合型数据库:关系数据库+Hadoop+键值数据库,确切地说是MySQL+Spark+Redis。开发者对这3种数据库都做了不同程度的加速。但是如果宣称其为Spanner类数据库,那么二者之间可能还存在较大差异,诸如Spanner的特点是采用了全球原子钟进行时钟同步,并通过复杂的分布式共识算法(类Paxos)实现了大规模数据库集群实例的状态强一致性,这与PingCAP在同一集群内兼顾联机事务处理(Online Transaction Processing,OLTP)与联机分析处理(Online AnalyticalProcessing,OLAP)场景的混合事务分析处理(Hybrid Transaction AnalyticalProcessing,HTAP)架构的侧重点并不类似。
为了便于理解,我们仍旧把图数据库归类于NoSQL之中,但是真正的图数据库并非沿用了传统的关系数据库的实体−关系数据建模、二维表与SQL(结构化)查询模式。图数据库采用的是元数据(点、边及其属性)高维建模与图论化查询模式。如果说NoSQL解决了大数据与快数据的问题,图数据库则解决了更深层次的挑战——深数据(图数据)的挑战,即通过更灵活高效的数据建模来更直观地表达数据间的关联关系,并通过高效的下钻、穿透、聚合来完成SQL或NoSQL数据库所不能完成的任务。在后面的内容中我们会展开对图数据库的剖析。
(3)NewSQL时代
在Hadoop与NoSQL阵营之外,几年前又涌现了一批着重于实现数据一致性且同时兼顾数据可用性与扩展性的系统,从最早学院派的H-Store(由布朗大学、麻省理工学院和耶鲁大学联合开发,为在线事务处理应用而设计的数据库管理系统),到Spanner(由谷歌公司研发的可扩展的全球分布式数据库),再到后来的SAP HANA(由SAP公司研发的一款支持企业预置型部署和云部署模式的内存计算平台)等,它们通常可以同时具有OLAP与OLTP系统的功能,前者在Hadoop与NoSQL阵营中都能找到对应的解决方案,但是后者涉及大规模分布式(如跨数据中心,甚至是跨洋的分布式系统)条件下交易处理的实时性与一致性,因此实现的难度更大。
2016—2019年,兼具OLAP + OLTP能力的数据库不再局限于NewSQL,甚至业界并没有很多人会把NewSQL单独提出来,而是有一些NoSQL类的数据库宣称可以同时支持OLAP与OLTP。值得一提的是,尽管OLAP意思是联机分析处理,但是在NewSQL的概念出现前,绝大多数的OLAP系统等同于批处理、线下处理系统,这听起来有些名不符实,但现实情况就是如此。随着架构(算力)、数据结构、算法等的不断提升,那些之前无法得到在线、实时处理的海量数据可以被新型的NoSQL类数据库实时处理时,这些NoSQL在本质上已经与NewSQL没有区别了。业界近两年来出现的Tigergraph、PingCAP、Ultipa Graph、嬴图等属于融合了OLAP与OLTP的实时NoSQL数据库,我们或可称之为NewSQL。
需要指出的是:关系数据库、Hadoop与NoSQL并非非此即彼的关系。在实践中,它们经常会一起出现,构成一个混搭的系统,并发挥着各自的优势。
(文/Ricky - HPC高性能计算与存储专家、大数据专家、数据库专家及学者)
· END ·