数据仓库简述

数据仓库

说到数据仓库,在一年前,个人答案是很是模糊的,在两年前,我根本不知道数据仓库的存在。相信大多数的人都是常常接触数据库,上大学的时候学过Oracle,MySQL这两个关系型数据库,操做着各类增删改查,如今人们对这种类型的数据库都称做传统数据库。在以后从事大数据行业了,数据仓库这几个字也就总出如今各类博客中,各类技术方案中。如今正在和同事主导公司数据仓库的设计和搭建工做,因此准备把我这段工程经验,拿出来分享一下。前端

数据库与数据仓库的区别

数据库

这里咱们所指的数据库,也就是一系列经典的RDBMS,如Oracle,MySQL,SQL Server等关系型数据库。其中的一些设计过程如 ER图的设计,逻辑模型的设计,物理模型设计,还有规范化设计 如 至少要符合第一范式,尽可量的去符合第二范式,第三范式等设计细节,这里就不赘述了,可是以上所提到的都是关系型数据库的精华。关系型数据库的用途,如今也会被分红两大类
(1)操做型数据库,主要用于业务支撑。一个公司每每会使用并维护若干个数据库,这些数据库保存着公司的平常操做数据,好比商品购买、酒店预订、学生成绩录入等;
(2)分析型数据库,主要用于历史数据分析。这类数据库做为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析;数据库

数据仓库

接下来先给你们看百度百科给出的数据仓库概念

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业全部级别的决策制定过程,提供全部类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而建立。 为须要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。这是一个代码区块。
架构

从上面的定义来看,数据仓库的主要功能是用于作企业各个业务层面的分析,企业层面的数据总集,曾经看过一个博主对数据仓库的定义是“面向分析的存储系统”,这个定义是很接地气的,若是按照这个思路往下去思考,数据仓库存储的数据是很庞大的,不是一个单一的业务数据集,不用精准到每一条数据,例如,淘宝在存储每一条下单记录的时候,在关系型数据库中,这条记录是不会存储到其余业务表里面,只会存储在下单记录表里面,而且下单记录表里面不会存储两条相同的订单数据,这是由于关系型数据库要严格知足完整性/参照性约束以及范式设计要求,可是在数据仓库中,这条订单数据可能会存在用户行为表中,也可能存在下单数据表中。也就是说,数据仓库不该让传统关系数据库来实现,由于关系数据库最少也要求知足第1范式,而数据仓库里的关系表能够不知足第1范式。也就是说,一样的记录在一个关系表里能够出现N次。但因为大多数数据仓库内的表的统计分析仍是用SQL,所以不少人把它和关系数据库搞混了。大数据

数据仓库的特色

clipboard.png

  1. 面向主题
    面向主题特性是数据仓库和操做型数据库的根本区别。操做型数据库是为了支撑各类业务而创建,而分析型数据库则是为了对从各类繁杂业务中抽象出来的分析主题(如用户、成本、商品等)进行分析而创建;
  2. 集成性
    集成性是指数据仓库会将不一样源数据库中的数据汇总到一块儿;
  3. 企业范围
    数据仓库内的数据是面向公司全局的。好比某个主题域为成本,则全公司和成本有关的信息都会被聚集进来;
  4. 历史性
    较之操做型数据库,数据仓库的时间跨度一般比较长。前者一般保存几个月,后者可能几年甚至几十年;
  5. 时变性
    时变性是指数据仓库包含来自其时间范围不一样时间段的数据快照。有了这些数据快照之后,用户即可将其汇总,生成各历史阶段的数据分析报告;

数据仓库组件

数据仓库的核心组件有四个:各源数据库,ETL,数据仓库,前端应用。以下图所示:spa

clipboard.png

  1. 业务系统
    业务系统包含各类源数据库,好比咱们公司的线上数据源就是Oracle,这些源数据库既为业务系统提供数据支撑,同时也做为数据仓库的数据源,数据源能够是离线的,也能够是实时的,例如kafka,flume收集来的实时数据。
  2. ETL
    ETL分别表明:提取extraction、转换transformation、加载load。其中提取过程表示操做型数据库搜集指定数据,转换过程表示将数据转化为指定格式并进行数据清洗保证数据质量,加载过程表示将转换事后知足指定格式的数据加载进数据仓库。数据仓库会周期不断地从源数据库提取清洗好了的数据,所以也被称为"目标系统";
  3. 前端应用
    和操做型数据库同样,数据仓库一般提供具备直接访问数据仓库功能的前端应用,这些应用也被称为BI(商务智能)应用;

数据集市

数据集市是数据仓库下面衍生出来的概念,在这里,我举一个例子来帮助你们理解,咱们能够把数据仓库理解成万达购物中心,其中每层都卖着不一样种类的商品,其中,一层卖的服装,二层买的家电....这样就能够分红一层是一个服装主题的数据集市,二层是家电主题的数据集市。同时能够理解为是一种"小型数据仓库",它只包含单个主题,且关注范围也非全局。集市能够分为两种,一种是独立数据集市(independent data mart),这类数据集市有本身的源数据库和ETL架构;另外一种是非独立数据集市(dependent data mart),这种数据集市没有本身的源系统,它的数据来自数据仓库。当用户或者应用程序不须要/没必要要/不容许用到整个数据仓库的数据时,非独立数据集市就能够简单为用户提供一个数据仓库的"子集"。设计

数据仓库搭建流程

clipboard.png

你们先看这个流程图,其中的各个步骤,我都会去介绍,其中着重介绍的会是数据仓库建模和ETL工程,由于,建模是整个数据仓库的核心,ETL工程师整个数据仓库中最耗时耗力的。code

今天呢,先简单介绍一下,铺垫一下orm

相关文章
相关标签/搜索