了解一下数据仓库

0.什么是数据库?

  • 数据库(DB)是按照数据结构组织、存储和管理数据的创建在计算机存储设备上的仓库数据库

  • 数据库是长期存储在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以必定的数据模型组织、描述和储存在一块儿、具备尽量小的冗余度、较高的数据独立性和易扩展性的特色并可在必定范围内为多个用户共享markdown

1.什么是数据仓库?

数据仓库是面向主题的,集成的,相对稳定的,反映历史变化的数据集合,用于支持管理决策。数据结构

  • 面向主题:在较高层次上将企业信息系统的数据综合归并进行分析利用的抽象的概念。每一个主题基本上对应一个相应的分析领域。架构

  • 集成的:企业级数据,同时数据要保持一致性、完整性、有效性、精确性。并发

  • 稳定性:从某个时间段来看是保持不变的,没有更新操做、删除操做,以查询分析为主。框架

  • 变化的:反映历史变化。机器学习

功能 数据仓库 数据库
数据范围 存储历史的、完整的、反应历史变化的 当前状态数据
数据变化 可添加、误删除、无变动的、反映历史变化 支持频繁的增、删、改、查操做
应用场景 面向分析、支持战略决策 面向业务交易流程
设计理论 违范式、适当冗余 遵守范式(1NF、2NF、3NF等范式)、避免冗余
处理量 非频繁、大批量、高吞吐、有延迟 频繁、小批次、高并发、低延迟

面向业务的数据库常称做OLTP,面向分析的数据仓库称为OLAP。高并发

2.数据仓库的发展历程

数据仓库概念最先可追溯到20世纪70年代,但愿经过一种架构将业务处理系统和分析处理分为不一样的层次。工具

20世纪80年代,简历TA2(Technical Architecture2)规范,该明肯定义了分析系统的四个组成部分:数据获取、数据访问、目录、用户服务oop

1988年,IBM第一次提出信息仓库的概念:一个结构化的环境,能支持最终用户管理其所有的业务,并支持信息技术部门保证数据质量;抽象出基本组件:数据抽取、转换、有效性验证、加载、cube开发等,基本明确了数据仓库的基本原理、框架结构,以及分析系统的主要原则。


[敲黑板,说重点]:

转换:Sqoop进行简单的数据转换,更多的转化操做是经过ETL来实现的

有效性验证:牵扯到数据质量的问题


那么如何去建设数据仓库呢?

    1. 1991年,Bill Inmon提出了自上而下(top-down)的方式建设企业数据仓库(Data Warehouse, DW),认为DW是一个总体的商业智能系统(BI)的一部分。一家企业只有一个DW,数据集市(Data Market, DM)的信息来源出自DW,在DW中,信息存储符合3NF范式。
  • 2)Ralph Kimball则主张自下而上(bottom-up)的方式创建DW,极力推崇创建数据集市,认为DW是企业内全部DM的集合,信息老是被存储在多维模型中。

  • 3)Bill Inmon提出了新的BI架构CIP(Corporation information factory),把DM包含了进来。CIP的核心是将DW架构划分为不一样的层次以知足不一样场景的需求,好比常见的ODS、DW(e g: DWD, DWS等)、DM等,每层根据实际场景采用不一样的建设方案,该思路也是目前DW建设的架构指南,但究竟是以top-down仍是bottom-up方式进行DW建设,并未统一。


[敲黑板,说重点]:

不少人说Hadoop时代维度建模已经不是必须的了,其实否则,在整个Hadoop时代建模依然是有用的,并且是很是有意义的。Hadoop为整个大数据应用提供了技术的基础,包括Hive、Spark,只是技术架构。而咱们谈及大数据的时候,更多的关注的是大数据的价值,因此在组织梳理数据内容的时候依然会有数据建模的概念。

只不过不少公司作大数据多是刚起步阶段,更在乎与流量方面,因此不须要建模,可是等数据体量达到必定程度后,若是没有数据建模,那么数据质量也就没法保障,数据也就会废掉、烂掉。


数据仓库分层架构图:

数据仓库分层架构图

核心简述:

  • 将业务DB中数据同步到只读DB中
  • 使用Sqoop将只读DB中的数据Import到HDFS上(ODS)
  • 将ODS层Hive中的数据经过HQL筛选到DWS层中(DWS存储的是中间汇总的结果)
  • 将DWS层Hive中的数据经过HQL结合具体需求筛选到DM中(DM存储的是待计算的指标)
  • 将DM层Hive中的数据经过Sqoop,Spark SQL导入到RDBMS之MySQL中存储起来(用于数据可视化展现)
  • 经过可视化技术读取RDBMS中相应结果数据进行可视化展现(饼状图、柱形图、折线图等)

为何要对数据仓库进行分层?

  • 用空间换时间,经过大量的预处理来提高系统的用户体验(效率),所以数据仓库会存在大量的数据冗余。
  • 若是不分层的话,源业务系统的业务规则发生变化将会影响整个系统的清洗过程,工做量巨大。
  • 经过数据分层管理能够简化数据清洗的过程,由于原来把一步的工做分了多个步骤去执行,至关于把一个复杂的工做拆分红了多个简单的工做,把一个大的黑盒变成了一个白盒,每一层的处理的逻辑都相对简单和容易理解,这样咱们比较容易肯定每个步骤的正确性,当数据发生错误的时候,每每咱们须要调整某个步骤便可。

说了这么多,那么数据仓库的创建步骤呢?

    1. 收集和分析业务需求
  • 2)创建数据模型和数据仓库的物理设计
  • 3)定义数据源
  • 4)选择数据仓库技术和平台
  • 5)从操做型数据库中抽取,净化和转换数据到数据仓库中
  • 6)选择访问和报表工具
  • 7)选择数据库链接软件
  • 8)选择数据分析和数据展现软件
  • 9)更新数据仓库

3.基于大数据的数仓构建特色

    1. 特色

鉴于互联网行业的“要么变化,要么去死”的影响,决定了在互联网领域,基于大数据的数据仓库建设是没法按照原有的项目流程、开发模式进行,更多的是须要结合新的技术体系、业务场景进行灵活的调整,以快速响应需求为导向。

    1. 普遍的应用场景
传统的数仓 基于大数据的数仓
建设周期长 要求快速响应需求
需求稳定 需求灵活、多变
时效性要求不高 对实时性有不一样程度的要求
面向DSS、CRM、BI等系统 除了面向DSS、BI等传统应用外,还要响应用户画像、个性化推荐(好比你看了一遍文章,再给你推荐十片同类型文章)、及其学习、数据分析等各类复杂的应用场景

阿里系:OneData(公司级别全部数据应用都基于我这一个数据,只有一个数据出口,不论实时仍是离线都是统一的惟一出口),OneService(数据服务也是统一的)

不少时候,咱们提供到数仓,就会以为是离线的、至少也是T+1的,可是这是传统的数据仓库,而基于大数据的数据仓库不该该这么理解,实时也应该概括到数据仓库中。

    1. 技术栈更全面、复杂
    • 传统数仓建设:更可能是基于成熟的商业数据集成平台,好比Oracle、Informatica等,技术体系比较成熟完善,但相对较封闭,对实施者技术面要求也相对专业且单一。
    • 基于大数据的数仓建设:通常是基于非商业、开源的技术,且涉及技术较普遍、复杂,没有商业的公司提供服务,须要本身维护更多的技术框架。常见的是基于Hadoop的生态建设。

技术栈总图:

技术栈总图

    1. 数仓模型设计更灵活
    • 传统数仓:
      • 有较为稳定的业务场景和相对可靠的数据质量,同时也有较为稳定的需求,对数仓的建设有较为完善的项目流程管控,数仓模型设计有严格的、稳定的建设标准
    • 互联网行业:
      • 行业变化快、业务灵活,同时互联网又是个靠速度存活的行业
      • 源数据种类繁多:数据库、Nginx log、用户浏览轨迹等结构化、非结构化、半结构化数据
      • 数据质量相对差,层次不齐

综上,在互联网领域,数仓模型是必需要存在(不必定是维度建模,可是至少须要一个建模),且数仓模型的设计更关注灵活、快速响应和应对多变的市场环境,更加以快速解决业务、运营问题为导向,快速数据接入、快速业务接入,更不存在一劳永逸。

4.数据仓库的应用范围与前景

  • 数仓存在的意义

    • 工程治理
  • 基于大数据的数据仓库在互联网行业应用:

    • BI
    • 消息推送
    • 千人千面
    • 用户画像
    • 反欺诈

5.发展方向

  • 1)数据分析、数据挖掘、人工智能、机器学习、风险控制、无人驾驶

  • 2)数据化运营、精准运营

  • 3)广告精准、智能投放

Resource Link