关系模型 交互 程序员 日常 转换成 描述 tab 根据 所在
IBM leads BigInsights for Hadoop out behind barn. Shots heard
IBM has announced the retirement of the basic plan for its data analytics software platform, BigInsights for Hadoop.
The basic plan of the service will be retired in a month, on December 7 of this year.
"IBM 把 BigInsights for Hadoop 牵到牧棚后面,只听一声枪响…"
这个是前不久英国知名媒体 The Register 对 IBM 产品 BigInsights 产品下线的报道。
BigInsights 是 IBM 在 Apache Hadoop 上增加了不少 IBM 分析技术能力后形成的一个大数据分析产品。 在面临近乎 2 年的前途未卜的窘境之后,IBM 终于决定将其关闭。
无独有偶,前不久 Gartner 的一篇文章也指出 "70% 以上的 Hadoop 部署未能天线的业务价值…"
Hadoop 大数据是怎么了呢?
我们从 DBMS 数据库管理系统的角度,来剖析下常见产品的能力:RDBMS,MPP,Hadoop,NoSQL 以及 NewSQL。 这几类产品对数据处理的能力各有什么样的特点?
我们首先试图对大数据这个被第一滥用的名词来统一一下概念。按照 Gartner 的说法,大数据具备以下几个特征(3 个 V):
从另一方面讲,大数据也是数据,对常规数据的管理离不开我们熟悉的 ACID 事务性来保证对数据操作时候的原子性,一致性,隔离性和持久性。有了这个几个衡量标准以后,我们可以来对上述几个产品列表比较一下。
在这里根据 4 个维度给几种流行的数据库管理技术打分,以 5 分制为例,5 分即最高分,表明具备最佳能力。1 分为最低分,表明相对而言能力最弱。其实最近已经有类似于 TiDB 或者 CockroachDB 的 NewSQL 产品出现,但是数据库软件是最为复杂的软件之一, 因为它要满足各种应用的使用场景。如果历史是面镜子,那么最少还要 3 年左右这些 NewSQL 的表现才能被足够的评测。所以这里我们暂时略过。
下面我们来解读一下各种数据库的得分原因。
RDBMS 全称关系型数据库(Relational Database Management System)是历史最悠久的数据库类型。关系型数据库以 Oracle,SQLServer,MySQL,PostgreSQL 等为代表,是我们最熟悉的数据库。特点是:
MPP,全称 Massive Parallel Processing 数据库,通常被用来实现企业的数据仓库和 ODS 等需求。MPP 的产生主要是用来解决关系型数据库的数据量管理能力的问题。MPP 数据库通过把数据进行分区分片,并分布到各个横向扩展节点,并由调度节点进行统一管理计算。每一次你执行查询的时候,该查询会被分解为多个子查询并交付给每一个计算节点去做并行的查询。这个架构可以通过增加节点的方式来扩展容量。数据在 MPP 系统里是分片的(Sharded), 每个节点会存取自己本地的一部分数据。这个较之共享存储(如 Oracle RAC)方案来说又有不少性能上的优势。因此大部分 MPP 系统,如 Teradata,Greenplum,Vertica 等都采用了这种 shared nothing 及 DAS 直挂存储的架构。一般来说 MPP 系统都具备完备且成熟的 SQL 优化器,支持主流的 SQL 标准,包括地理分析,全文检索以及数据挖掘功能。除了 GP 之外,几乎所有的 MPP 系统都是闭源系统,并且一般都是和昂贵、复杂这些词联系在一起的。
MPP 理论上是可以无限横向扩展的,但是实际上由于控制节点或协调节点的原因,往往很难超出一百左右的节点数量。所以 VOLUME 得分为 4 分而不是满分。MPP 系统上主要运行的是分析型的应用场景,并发数往往较低,是为多节点并行分析能力而不是高并发能力优化的,因此 VELOCITY 上得分为 2 分。MPP 大致也是基于关系模型的,对非结构化数据的处理上和 RDBMS 基本一样无能为力,因此得分为 1。
下一个出场的是 Hadoop,按时间顺序来排的话。 Apache Hadoop 是 2007 年发布的开源软件。Hadoop 是基于 Google 公开的 MapReduce 和 HDFS 技术研发而成的。它的最伟大之处就是让企业能够以非常廉价的 x86 服务器把大量的数据管理起来。在那之前,机构需要购买机器昂贵的企业级存储设备来管理海量数据。就从这一点上,Hadoop 技术已经为企业带来了很大的价值。这个确实是 Hadoop 的强处所在。然而,Hadoop 的弱点也是一箩筐:安全,数据管理,查询速度,复杂等等。10 年的发展,很多这些地方都已经有了比较不错的解决,唯有这个数据查询速度依然是很多 Hadoop 部署的痛中之痛。这个性能低下的原因,是和 HDFS,Hadoop 用来存储文件的机制,HDFS,分不开的。HDFS 不支持索引,举个例子来说,你想要在词典里找一个不认识的生僻词的发音和释义,为了找到这个生僻词,你可能需要翻遍整本词典,因为你无法使用拼音来检索。在 HDFS 里面找内容都是通过扫描(SCAN) 的方式,也即是从头读到尾来找到你想要的数据。可以想象这种操作的性能如何。
Hadoop 的打分情况:
NoSQL 数据库是一个争议颇多的话题。首先是 NoSQL 阵营参差不齐,有以 Redis 为代表的 KeyValue 类型,专长于极短响应时间及很高的单机并发能力,适合于缓存、用户会话等场景。 有以宽表列族为模型的 HBase、Cassandra,对 IoT 海量数据持续写入场景有不错支持,但是使用起来比较不友好。有以图关系模型的 Neo4J,专注于复杂关系搜索。ElasticSearch 则以搜索起家,在奠定了搜索市场后也视图小觑数据库的大蛋糕。而具有 JSON 文档模型的 MongoDB 可以说是 NoSQL 里面的不折不扣的龙头老大。JSON 像 XML 一样富有表达性,同时又不像 XML 那样繁琐,用过的程序员基本都说好。由于各种 NoSQL 数据库差异太大,很难拿出一个抽象模型来代表 NoSQL,我们下面就用 DBEngines 上面持续多年排名 NoSQL 第一的 MongoDB 来说事。
MongoDB 在很多方面和 Hadoop 有相似之处:都是基于 x86 的分布式数据库,都是 schema-on-read,支持结构化和非结构化数据类型等等。以至于很多人都以为 MongoDB 就是和 Hadoop 一样用来做大数据分析场景。事实上 MongoDB 的一贯定位都是 OLTP 数据库,以联机交易为主要适用场景,如 IoT,CMS,Customer data,以及 Mobile/web 等低延迟交互式应用。MongoDB 的扩展能力可以支持 PB 级别的数据量(百度云)以及每秒百万 + 的混合读写并发处理能力(Adobe)。 正因为如此它在 VOLUME、VELOCITY、及 VARIETY 上面都获得了较高的得分(分别为 4,5,5 分)。它的短板就是事务性,ACID 四项中,Atomicity 目前可以支持文档级别的的原子性。一个文档可以很复杂,但是针对单个文档内所有写操作,包括子文档,可以享受原子性的保证。MongoDB 不支持多文档或者多集合之间的原子性,但是由于文档模型下多表操作已经转换成为单表操作,所以对多表原子性的需求已经大大降低。Consistency 一致性方面,MongoDB 默认只使用主节点做读和写来保证数据的读写一致性。Isolation 上 MongoDB 支持到了第二级别:提交读(Read Committed)。 Durability 持久性反而是 MongoDB 的强项,一份数据会被准实时的同步到其他节点上,从而很大限度上保证了数据的不丢失性。所以在事务上给了 MongoDB 2 分。
如果我们用一个雷达图来表示各类数据库的能力,我们可以直观的看到各种技术的覆盖面。面积越大,则表示可以适用的场景越多。
我们发现 Hadoop 其实覆盖的面积并不是最大的,虽然大家之前都被教育过这个庞大的生态系统可以包治百病。现在我们可以开始理解一些为什么 Gartner 会说有 70% Hadoop 用户感觉到并没有获得期望价值。Hadoop 其实擅长的就是对海量数据的离线分析(Offline Analytical),HDFS 这个文件系统的设计就决定了这一点。这种技术特性适合用来做趋势分析,用户行为挖掘,机器学习,风险控制,历史数据留存等一系列分析场景,用来辅助商业决策。
但是企业今天对数据的需求,何止是分析型一种?
我们说大数据的价值体现方式有不仅仅是分析型,还有一种同样重要的就是在线操作型(Online Operational)。 在线操作型(Online Operational)数据场景则是我们耳熟能详的企业机构日常生产的交易数据,如用户,表单,订单,库存,客服,营销等。这些数据使用的特点就是交互型,低响应延迟。原来这些系统数据各自为营的时候普通关系型数据库可以处理,但是在大数据时代当我们需要把这些操作型数据,甚至包括 5 年内所有数据都要提供出来供用户快速访问的时候,或者当传统大型企业突然要面向数百上千万最终用户的移动 APP 访问需求的时候(如银行业,航空业等),这些就需要一个在线大数据解决方案来实现了。 而 Hadoop 大生态系统号称是大数据问题大包大揽, 但是动到交互式查询或者更新的时候就捉襟见肘了。Hive, Hbas, Impala 等一系列解决方案也都未能有效解决对数据活用的迫切需求。
操作型大数据的两大关键技术需求:数据量大,响应迅速及时。
从这两个维度可以看出,以 MongoDB 或者 HBase 之类的 NoSQL 更加适合用来做操作型大数据平台的场景。
事实上 HBase 正式作为一个 NoSQL 通常是 Hadoop 生态系统里用来支持操作型大数据的实时读写需求的。可惜 HBase 是个扶不起的刘阿斗,跟着 Hadoop 的大旗沾了不少光,用起来问题一堆:
因为这些原因,HBase 只能在真的是超级大量数据的场景下才值得去忍受着种种不便去使用。
和 HBase 相比,MongoDB 也有一些自己的不足:
但是 MongoDB 在取悦开发者,提高开发效率上可是做的淋漓尽致:
正是这些原因,DBTA 2017 年的 "读者最喜欢的数据库" 里面,MongoDB 傲视群雄,夺得了桂冠。
今天的企业在其数字化转型、双模 IT 及企业上云策略下,纷纷在重新审视企业的平台级数据库产品策略。企业已经大手笔投入了大量的资源构建基于 Hadoop 的数据湖,但是由于 Hadoop 本身特性所限,很多部署变成了 "数据垃圾堆"(Data Dump),空有数据,但无法实现价值。企业真正需要的是一套在线操作型大数据解决方案可以满足:
这种方案应该充分企业已经投入的 Hadoop 体系架构,但是在此之上铺设一个以低延迟高并发支持灵活 API 为特色的 DaaS(Data as a Service)数据即服务层。
数据即服务就是一种操作型大数据平台的具体体现。这种基于 MongoDB 的架构的优势在于:
除上述之外,基于分片机制的自动扩容的机制更可以支持数以百 TB 级的业务数据量;异构数据库实时同步工具可以把来自于数十个业务系统库内的数据同步到数据服务层,并提供秒级的数据一致;在同步过程中实现数据模型转换,快速搭建服务;批量方式或者连接器方式直接接受来自 Hadoop 集群的分析结果,如个性化标签及推荐信息等,提高 Hadoop 的可操作性 等等优势。
RBS 银行在 2015 年就开始实施了这样的 DaaS 架构,短短两年时间,RBS 声称已经获得了以下的价值:
与此类似的成功案例还有巴克莱银行,Vodafone 电信公司等,均是在其数字化转型中经过审慎评估,选择了操作性强,易用性高,分布式能力可靠的 MongoDB 作为其新一代数据服务平台。
每一种技术都有它的应用场景,在这篇文章里我们想要讨论的是一种操作型大数据解决方案,所以我们花了不少笔墨在 NoSQL 并认为 MongoDB 是一个非常不错的选择。NewSQL 或许会是一个潜在的选择,如果不是因为现在它还没发展成熟。况且,NewSQL 对半结构化、非结构化数据的需求支持估计也还是无法很好满足, 所以我们拭目以待。
最后,在做一个大型决策的时候,我们要充分考虑到企业对技术能力的需求,把需求列出来,然后对照数据产品各自的长短板,有理论有方法的进行选型,并对最后 2-3 个选择进行 POC 验证,最终确定合适的方案。
声明作者为 MongoDB 从业人员,虽然文章尽可能从技术的角度探讨问题,难免有偏颇之处欢迎反馈。
作者:唐建法,MongoDB 官方首席架构师,Mongoing 中文社区联合发起人。
附:Mongoing 中文社区将在 2018.01.07 在北京举办 MongoDB 年终盛典。邀请了来自于官方技术大牛 WiredTiger 引擎作者 Michael Cahill 及国内外著名嘉宾, 点击此处 报名可获限量免费门票。
PS:推荐一个数据库技术线上直播,讲师来自阿里、腾讯、微博、网易等 7 位一线专家,从核心技术到实践应用,为听众奉上独家数据库深度挖掘指南,欢迎报名参加。
关系模型 交互 程序员 日常 转换成 描述 tab 根据 所在
原文:http://blog.csdn.net/dev_csdn/article/details/78802960
来源: http://www.bubuko.com/infodetail-2428942.html