一文看懂数据仓库概念、特点、区别、MPP架构选型等
概述
最近开始接触数据可视化项目,准备做一下数据仓库,特此总结一下数据仓库之MPP架构内容。
一、数据仓库简介
数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。
数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。其实数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。因此数据仓库的基本架构主要包含的是数据流入流出的过程,可以分为三层——源数据、数据仓库、数据应用。
数据仓库最主要的工作是从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是 ETL(抽取Extra, 转化 Transfer, 装载 Load)的过程,ETL 是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持 ETL 的正常和稳定。
随着海量数据问题的出现,海量管理能力,多类型,变化快,高可用性,低成本,高端可扩展性等需求给企业数据战略带来了巨大的挑战。企业数据仓库、数据中心的技术选型变得尤其重要!
二、数据仓库特点
1、面向主题
是企业系统信息中的数据综合、归类并进行分析的一个抽象,对应企业中某一个宏观分析领域所涉及的分析对象。
比如购物是一个主题,那么购物里面包含用户、订单、支付、物流等数据综合,对这些数据要进行归类并分析,分析这个对象数据的一个完整性、一致性的描述,能完整、统一的划分对象所设计的各项数据。
如果此时要统计一个用户从浏览到支付完成的时间时,在购物主题中缺少了支付数据或订单数据,那么这个对象数据的完整性和一致性就可能无法保证了。
2、数据集成
数据仓库的数据是从原有分散的数据库中的数据抽取而来的。
操作型数据和支持决策分析型(DSS)数据差别甚大,这里需要做大量的数据清洗与数据整理的工作。
第一:每一个主题的源数据在原有分散数据库中的有许多重复和不一致,且不同数据库的数据是和不同的应用逻辑捆绑的。
第二:数据仓库中的综合性数据不能从原有的数据库系统直接得到,因此在数据进入数据仓库之前要进过统一和综合。(字段同名异意,异名同义,长度等)
3、不可更新
数据仓库的数据主要是提供决策分析用,设计的数据主要是数据查询,一般情况下不做修改,这些数据反映的是一段较长时间内历史数据的内容,有一块修改了影响的是整个历史数据的过程数据。
数据仓库的查询量往往很大,所以对数据查询提出了更高的要求,要求采用各种复杂的索引技术,并对数据查询的界面友好性和数据凸显性提出更高的要求。
4、随时间不断变化
数据仓库中的数据不可更新是针对应用来说,从数据的进入到删除的整个生命周期中,数据仓库的数据是永远不变的。
数据仓库的数据是随着时间变化而不断增加新的数据。
数据仓库随着时间变化不断删去久的数据内容,数据仓库的数据也有时限的,数据库的数据时限一般是60 ~ 90天,而数据仓库的数据一般是5年~10年。
数据仓库中包含大量的综合性数据,这些数据很多是跟时间有关的,这些数据特征都包含时间项,以标明数据的历史时期。
三、数据仓库和数据库的区别
数据库的操作:一般称为联机事务处理OLAP(On-Line Transaction Processing),是针对具体的业务在数据库中的联机操作,具有数据量较少的特点,通常对少量的数据记录进行查询、修改。
数据仓库的操作:一般称为联机分析处理OLAP(On-Line Analytical Processing),是针对某些主题(综合数据)的历史数据进行分析,支持管理决策。
四、数据仓库--MPP架构
1、传统数据仓库
数据仓库有着如下几个特性:主题导向、集成性、时间差异性、不变动性,而每一个特性的使用程度和趋向,将决定这个数据仓库的能力,但是也因为业务导向性的存在,也常常会占主导作用,将数据仓库向数据集市转化,而使得数据仓库本身变的臃肿,查询效率下降,分析细颗粒度的数据变的较为困难。
对于此,着重分析一下它的几个特性,寻求新的变革。
1)主题导向(Subject-Oriented)
将数据仓库有别于一般 OLTP 系统,数据仓库的资料模型设计,着重将资料按其意义归类至相同的主题区(subject area),因此称为主题导向。举例如 Party、Arrangement、Event、Product 等。
2)集成性(Integrated)
资料来自企业各 OLTP 系统,在数据仓库中是集成过且一致的。
3)时间差异性(Time-Variant)
资料的变动,在数据仓库中是能够被纪录以及追踪变化的,有助于能反映出能随着时间变化的资料轨迹。
4)不变动性(Nonvolatile)
资料一旦确认写入后是不会被替换或删除的,即使资料是错误的亦同。由此可以看出,数据仓库本身是一个不断收集数据,按相应的规则进行组合汇聚的过程,如图 所示。
图:数据仓库聚合数据面板
观察上图可以知道,这个过程所损耗的,也只是仓库本身的性能和 ETL 性能,而仓库本身的性能取决于通信、I/O 能力和硬件性能,ETL 的性能也基于此。因此,在硬件性能如此强劲的今天,如何提高这三项指标,决定了仓库本身性能的优劣,那么一个合适的架构去操作,将显得尤为重要,特别是在数据量不断膨胀的今天,架构将决定企业数据仓库的支撑能力。
2、MPP架构数据仓库
在大数据普及的今天,各种架构的数据库不断出现,下图即是当前使用的各种结构的一个对比图,从易用性到扩展能力的对比。
图 :大数据技术栈对比
对于兼顾易用性和扩展能力而言,MPP 架构的数据库占据着比较大的优势。结合上图的结果,能处理高数据量的 MPP 架构数据库,是现在的最佳选择,那么 MPP 到底是什么呢?
MPP 即大规模并行处理(Massively Parallel Processor),在 MPP 系统中,每个SMP 节点也可以运行自己的操作系统、数据库等。换言之,每个节点内的 CPU 不能访问另一个节点的内存。节点之间的信息交互是通过节点互联网络实现的,这个过程一般称为数据重分配(Data Redistribution)。
与传统的 SMP 架构明显不同,通常情况下,MPP 系统因为要在不同处理单元之间传送信息,所以它的效率要比 SMP 要差一点,但是这也不是绝对的,因为 MPP 系统不共享资源,因此对它而言,资源比 SMP 要多,当需要处理的事务达到一定规模时,MPP 的效率要比 SMP好。这就是看通信时间占用计算时间的比例而定,如果通信时间比较多,那 MPP 系统不占优势了,相反,如果通信时间比较少,那 MPP 系统可以充分发挥资源的优势,达到高效率。当前使用的 OTLP 程序中,用户访问一个中心数据库,如果采用 SMP 系统结构,它的效率要比采用 MPP 结构要快得多。而 MPP 系统在决策支持和数据挖掘方面显示了优势,可以这样说,如果操作相互之间没有什么关系,处理单元之间需要进行的通信比较少,那采用MPP 系统就要好,相反就不合适了。
在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。
图:大规模并行处理(MPP)架构
MPP 架构数据库采用 Shared-nothing 架构(非共享集群),每个节点都有自己的操作系统、数据库、硬件资源,节点之间通过网络来通信。在拥有高带宽网络的内部环境中,使得每个资源都能拥有最佳的运行环境,以获得高输出性能。
图 :Shared-nothing架构
因此,相较于传统型数据库和其他架构数据库,MPP 架构的数据库有如下优势:
1)大数据分析需求
传统数据库无法支持大规模集群与 PB 级别数据量,且性能受限、扩展性受限,MPP架构数据支持大规模集群以及PB级别数据,性能根据扩展节点性能呈线性关系
2)软硬件一体机成本高昂、扩展受限
高性能单机服务器的成本十分高昂,生产扩容、测试、开发、容灾都需新购同型号一体机(机柜),并且跨代兼容性问题目前也没有得到很好的解决。MPP架构数据库可根据需要无限扩展。
3)In-memory 技术太贵而且不成熟
内存成本过高,TB 级别以下,不适合大数据量;MPP架构成本可控,对于TB级数据支持优秀,很适合大数据量。
4)Hadoop 技术的先天不足
Hive 等 sql-on-hadoop 性能太慢,SQL 兼容性与支持不足,数据安全性无法保证。MPP架构数据库支持通用标准SQL,数据可冗余备份,具有高可用,高安全性。
五、主流分布式数据库选择--GreenPlum
1、 基础架构
Greenplum 是基于 Hadoop 的一款分布式数据库产品,在处理海量数据方面相比传统数据库有着较大的优势。
Greenplum 整体架构如下图:
图:GreenPlum整体架构图
数据库由 Master Severs 和 Segment Severs 通过 Interconnect 互联组。
Master 主机负责:建立与客户端的连接和管理;SQL 的解析并形成执行计划;执行计划向 Segment 的分发收集 Segment 的执行结果;Master 不存储业务数据,只存储数据字典。
Segment 主机负责:业务数据的存储和存取;用户查询 SQL 的执行。
2、主要特性
Greenplum 整体有如下技术特点:
1)Shared-nothing 架构
海量数据库采用最易于扩展的 Shared-nothing 架构,每个节点都有自己的操作系统、数据库、硬件资源,节点之间通过网络来通信。
2)基于 gNet Software Interconnect
数据库的内部通信通过基于超级计算的“软件 Switch”内部连接层,基于通用的 gNet(GigE, 10GigE) NICs/switches 在节点间传递消息和数据,采用高扩展协议,支持扩展到 1000个以上节点。
3)并行加载技术
利用并行数据流引擎,数据加载完全并行,加载数据可达到 4.5T/小时(理想配置)。并且可以直接通过 SQL 语句对外部表进行操作。
4)支持行、列压缩存储技术
海量数据库支持 ZLIB 和 QUICKLZ 方式的压缩,压缩比可到 10:1。压缩数据不一定会带来性能的下降,压缩表通过利用空闲的 CPU 资源,而减少 I/O 资源占用。海量数据库除支持主流的行存储模式外,还支持列存储模式。如果常用的查询只取表中少量字段,则列模式效率更高,如查询需要取表中的大量字段,行模式效率更高。海量数据库的多种压缩存储技术在提高数据存储能力的同时,也可根据不同应用需求提高查询的效率。
3、主要局限
1)用户不可灵活控制事务的提交,用户提交的处理将被自动视作整体事务,整体提交,整体回滚。
2)数据库需要额外的空间清理维护,给数据库维护带来额外的工作量。
3)用户不能灵活分配或控制服务器资源,服务器自动分配分发。
4)对磁盘I/O有比较高的要求。
4、 GreenPlum 对比其他数据库
相比于其他的数据库,GreenPlum 数据库最大的优势在于其开源,极大的降低了其成本费用,相较于以往动辄四五百万以上的费用,如今只需要不到三分之一的价格即可在企业成功运用,且能够根据自己企业的特性进行改良。
后面会分享更多关于GreenPlum方面的内容,感兴趣的朋友可以关注下~