數據倉庫簡述

數據倉庫

說到數據倉庫,在一年前,個人答案是很是模糊的,在兩年前,我根本不知道數據倉庫的存在。相信大多數的人都是常常接觸數據庫,上大學的時候學過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

相關文章
相關標籤/搜索