一、数据仓库
1,定义
数据仓库是从广泛的运营和外部数据源中积累的组织数据的大型存储库。数据经过结构化、过滤并已针对特定目的进行处理。数据仓库会定期从各种内部应用程序和外部合作伙伴系统中提取处理过的数据,以进行高级查询和分析。
2, 数据仓库系统作用
(1)提供加强的商业智能BI
利用从各种数据源提供的数据,管理人员和高管们将不再需要凭着有限的数据或他们的直觉做出商业决策。此外,“数据仓库及相关商业智能BI可直接用于包括市场细分、库存管理、财务管理、销售这样的业务流程中。”
(2)提高效率和节省成本
通过数据仓库,可以建立企业的数据模型,这对于企业的生产与销售、成本控制与收支分配有着重要的意义,极大的节约了企业的成本,提高了经济效益,同时,用数据仓库可以分析企业人力资源与基础数据之间的关系,可以用于返回分析,保障人力资源的最大化利用,亦可以进行人力资源绩效评估,使得企业管理更加科学合理。
(3)提高数据的质量和一致性
一个数据仓库的实施包括将数据从众多的数据源系统中转换成共同的格式。由于每个来自各个部门的数据被标准化了,每个部门将会产生与所有其它部门符合的结果。所以你可以对你数据的准确性更有信心。而准确的数据是强大的商业决策的基础。
(4)提供历史的智慧
一个数据仓库储存了大量的历史数据,所以你可以通过分析不同的时期和趋势来做出对未来的预测。这些数据通常不能被存储在一个交易型的数据库里或用来从一个交易系统中生成报表。
(5)创建高的投资回报率
已经安装了数据仓库和完善了商业智能BI系统的企业比没有在商业智能BI系统和数据仓库投资的企业能产生更多的利润和节约更多的资金。而这应该成为高级管理层快速加入到数据仓库这个潮流中的足够理由。
3, 数据仓库开发流程
(1)数据仓库的规划与分析阶段
开发数据仓库之前,首先要进行数据仓库的规划,包括确定数据仓库的 开发目标和范围,选择数据仓库的实现策略,选择数据仓库的应用结构和技术平台结构,确定数据仓库的使用方案和开发预算。
规划完成之后,接下来进行数据仓库的需求定义,为数据仓库的分析设 计和实施作准备。需求定义包括业主需求的定义、开发者需求定义和最终用户需求定义。
(2) 数据仓库的设计与实施阶段
数据仓库的设计与实施是从建立数据仓库的数据模型开始,包括确定 数据仓库的数据源,设计数据仓库与业务系统的接口,设计数据仓库的体系结构,数据仓库的数据库设计,数据仓库的中间件的设计,数据仓库数据的抽取、净化与加载,数据仓库数据的复制与发行,数据仓库的测试,等等。
(3)数据仓库的使用阶段
数据仓库使用阶段的工作包括用户的培训与支持,数据仓库工程师培训,以各种方式使用数据仓库(包括分析处理和数据挖掘),数据仓库中数据的刷新,以及数据仓库的完善与增强等。
二、数据湖
1,定义
数据湖定义将其解释为高度可扩展的数据存储区域,以原始格式存储大量原始数据,直到需要使用为止。数据湖可以存储所有类型的数据,对帐户大小或文件没有固定限制,也没有定义特定用途。数据来自不同的来源,可以是结构化的、半结构化的,甚至是非结构化的,数据可按需查询。
2,架构
(1)以Hadoop为代表的离线数据处理基础设施
数据湖可以认为是新一代的大数据基础设施。为了更好的理解数据湖的基本架构,我们先来看看大数据基础设施架构的演进过程。
如下图所示,Hadoop是以HDFS为核心存储,以MapReduce(简称MR)为基本计算模型的批量数据处理基础设施。
围绕HDFS和MR,产生了一系列的组件,不断完善整个大数据平台的数据处理能力,例如面向在线KV操作的HBase、面向SQL的HIVE、面向工作流的PIG等。同时,随着大家对于批处理的性能要求越来越高,新的计算模型不断被提出,产生了Tez、Spark、Presto、Flink等计算引擎,MR模型也逐渐进化成DAG模型。
DAG模型一方面增加计算模型的抽象并发能力:对每一个计算过程进行分解,根据计算过程中的聚合操作点对任务进行逻辑切分,任务被切分成一个个的stage,每个stage都可以有一个或者多个Task组成,Task是可以并发执行的,从而提升整个计算过程的并行能力;
另一方面,为减少数据处理过程中的中间结果写文件操作,Spark、Presto等计算引擎尽量使用计算节点的内存对数据进行缓存,从而提高整个数据过程的效率和系统吞吐能力。
(2)lambda架构
随着数据处理能力和处理需求的不断变化,越来越多的用户发现,批处理模式无论如何提升性能,也无法满足一些实时性要求高的处理场景,流式计算引擎应运而生,例如Storm、Spark Streaming、Flink等。
然而,随着越来越多的应用上线,大家发现,其实批处理和流计算配合使用,才能满足大部分应用需求;而对于用户而言,其实他们并不关心底层的计算模型是什么,用户希望无论是批处理还是流计算,都能基于统一的数据模型来返回处理结果,于是Lambda架构被提出,如下图所示。
Lambda架构的核心理念是“流批一体”,如上图所示,整个数据流向自左向右流入平台。进入平台后一分为二,一部分走批处理模式,一部分走流式计算模式。无论哪种计算模式,最终的处理结果都通过统一服务层对应用提供,确保访问的一致性,底层到底是批或流对用户透明。
(3)Kappa架构
Lambda架构虽然解决了应用读取数据的统一性问题,但是“流批分离”的处理链路增大了研发的复杂性。因此,有人就提出能不能用一套系统来解决所有问题。目前比较流行的做法就是基于流计算来做。流计算天然的分布式特征,注定了他的扩展性更好。通过加大流计算的并发性,加大流式数据的“时间窗口”,来统一批处理与流式处理两种计算模式。
3,数据湖的作用
(1)通过应用机器学习与人工智能技术实现商业智能;
(2)预测分析,如领域特定的推荐引擎;
(3)信息追踪与一致性保障;
(4)根据对历史的分析生成新的数据维度;
(5)有一个集中式的能存储所有企业数据的数据中心,有利于实现一个针对数据传输优化的数据服务;
(6)帮助组织或企业做出更多灵活的关于企业增长的决策。
4,数据湖的建设流程
(1)数据摸底
对于一个企业/组织而言,在构建数据湖初始工作就是对自己企业/组织内部的数据做一个全面的摸底和调研,包括数据来源、数据类型、数据形态、数据模式、数据总量、数据增量等。在这个阶段一个隐含的重要工作是借助数据摸底工作,进一步梳理企业的组织结构,明确数据和组织结构之间关系。为后续明确数据湖的用户角色、权限设计、服务方式奠定基础。
(2)模型抽象
针对企业/组织的业务特点梳理归类各类数据,对数据进行领域划分,形成数据管理的元数据,同时基于元数据,构建通用的数据模型。
(3) 数据接入
根据第一步的摸排结果,确定要接入的数据源。根据数据源,确定所必须的数据接入技术能力,完成数据接入技术选型,接入的数据至少包括:数据源元数据、原始数据元数据、原始数据。各类数据按照第二步形成的结果,分类存放。
(4) 融合治理
利用数据湖提供的各类计算引擎对数据进行加工处理,形成各类中间数据/结果数据,并妥善管理保存。数据湖应该具备完善的数据开发、任务管理、任务调度的能力,详细记录数据的处理过程。在治理的过程中,会需要更多的数据模型和指标模型。
(5)业务支撑
在通用模型基础上,各个业务部门定制自己的细化数据模型、数据使用流程、数据访问服务。
5,使用场景
(1)大量非结构化或者半结构化数据的组织
(2)正在使用关系型数据库,但是频繁的更改数据库的结构,也说明数据库可能并不是最优的解决方案。数据湖可以支持未经加工的数据直接入湖。
(3)将半结构化和非结构化数据调整适应到关系数据库方面遇到了很大的困难,可以使用数据湖。
(4)拥有海量数据,而且需要长期保存大量的历史数据,数据湖在低成本存储上有天然优势。可以很容易的做到数据的分层来降低数据保存成本。数据湖是横向扩展的,数据湖能够轻易的扩容以应对未来告诉的数据增长。
(5)对于不可预测的数据(如机器学习等),是很难预先进行数据建模的,选择使用数据湖。
三、数据仓库与数据湖的区别
1,作用
数据仓库:支持数据报表、产品,扩展商业智能能力
数据湖:非结构化数据的灵活性和可扩展性意味着它们有利于大数据分析和一些深度学习项目。
2,用户
数据仓库:结构化数据,使用非常方便,主要的使用对象是数据分析师、数据工程师、运营人员等等。
数据湖:作为原始数据,非结构化数据的数据库,数据湖的主要使用对象是数据科学家。
3,数据类型
数据仓库:在转换过程中结构化的数据
数据湖:未经处理或转换的原始数据包括结构化、非结构化或半结构化数据
4,目的
数据仓库:仅用于执行大量历史数据的查询和分析
数据湖:数据湖旨在存储大量的数据和数据格式,以备将来需要时使用
5,存储容量
数据仓库:数据仓库对存储的数据更有选择性,一般比数据湖要小,但与传统数据库相比仍然很大。
数据湖:由于包含所有数据,通常是PB级别的。
6,数据质量
数据仓库:通常经过ETL之后,都是格式化的高质量的数据。数据仓库是非常重数据质量的,大家现在经常听说的数据中台,其中有一大块是数据质量管理、数据资产管理等。数据仓库中的数据都是经过处理的
数据湖:由于缺少模式, 所有数据都允许输入,数据可能是任意状态、形态的数据。因此,数据湖包含较低级别的数据质量。
7,处理方案
数据仓库:进入数仓需要经过ETL,转换成固定模式的数据,即写模式。
数据湖:先装载至数据湖,当访问时才会去解析成所需要的格式,即读模式。
8,敏捷性
数据仓库:数据仓库的本质是高度结构化的,用于存储特定的数据格式并回答特定的问题,因此,在敏捷性方面不如数据湖。
数据湖:敏捷性是数据湖的标准,数据湖不需要等待很长的开发周期就能满足数据洞察的需求。
四、数据湖工具与数据仓库工具的区别
1,数据仓库工具
(1)Amazon Redshift
一种云数据仓库工具,非常适合高速数据分析。此数据仓库示例可以执行大量并发查询,而无需任何操作开销。
(2)Microsoft Azure
一个基于节点的平台,允许大规模并行处理,有助于快速提取和可视化业务洞察力。
(3)Google BigQuery
这个数据仓库工具可以与 Cloud ML 和 TensorFlow 集成,以构建强大的 AI 模型。
(4)Snowflake
允许分析来自各种结构化和非结构化来源的数据。它由一个共享架构组成,将存储与处理能力分开。因此,用户可以根据用户活动扩展 CPU 资源。
(5)Micro Focus Vertica
此SQL数据仓库可在包括AWS和 Azure 在内的平台上的云中使用。它为机器学习、模式匹配和时间序列提供内置分析功能。
(6)Amazon DynamoDB
可扩展的 DynamoDB 可以将查询容量扩展到每天 10 或 20 万亿个请求,超过 PB 级的数据。
2,数据湖工具
Hadoop 分布式文件系统 (HDFS) 等大数据技术用于增强数据湖对分析的影响。HDFS 对任何类型结构的海量数据都表现出轻松的适应性和可扩展性。此外,Hadoop通过将结构化视图应用于原始数据来支持数据仓库场景。这种灵活性使Hadoop成为向每一层业务用户提供数据和洞察力的绝佳选择。
(1)Azure Data Lake Storage
创建单一、统一的数据存储空间。该工具提供了先进的安全设施、准确的数据身份验证以及对特定角色的有限访问,适合大规模查询。
(2)AWS Lake Formation
提供了一个非常简单的解决方案来设置数据湖。与基于 AWS 的分析和机器学习服务无缝集成。该工具创建了一个细致的、可搜索的数据目录,其中包含用于识别数据访问历史记录的审计日志。
(3)Qubole
这个数据湖解决方案以开放格式存储数据,可以通过开放标准访问。主要功能包括提供临时分析报告,结合数据管道以实时提供统一的洞察力。
(4)Infor 数据湖
从不同来源收集数据并将其摄取到一个结构中,该结构立即开始从中获取价值。由于智能编目,存储在这里的数据永远不会变成沼泽。
(5)智能数据湖
此工具可帮助客户从基于 Hadoop 的数据湖中获得最大价值。底层 Hadoop 系统确保用户不需要太多编码即可运行大规模数据查询。由于所有这些差异,组织通常需要两个数据湖来利用大数据,同时仍需要数据仓库用于分析。
五、数据仓库与数据湖的联系
数据湖和数据仓库并没有直接的关系,他们属于两个并行的概念。数据仓库和数据湖不是互相替代,而是为了解决了不同的问题,适用于不同场景。数据湖是计算和存储的解耦。而数据仓库是将计算和存储重度耦合在一起。
数据仓库是比数据湖更早提出来的概念,数据仓库主要是用于处理结构化的数据,需要对放入数据仓库的数据进行预先的数据模型定义。数据湖对数据源没有特别的要求。数据湖是一个集中式的存储库,允许以任意规模存储所有结构化和非结构化的数据。可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析,以指导做出更好的决策,对于有大量非结构化或者半结构化数据的组织,应该优先考虑数据湖。