簡述ODS,和數據倉庫做簡單的比較


這兩天看書,發現了和數據倉庫相關的還有一個叫ODS的概念,它是企業級的全局數據庫,用於提供集成的,企業級一致的數據,包含如何從各個子系統中向ODS抽取數據以及面向主題的角度存儲數據。

 它和數據倉庫的主要區別:

 數據倉庫是面向主題的、集成的、隨時間變化的、非易失的、用於進行戰略型決策的數據集合。

 ODS是一個面向主題的、集成的、可變的、當前的細節數據集合,用於支持企業對於即時性的、操作性的、集成的全體信息的需求。常常被作為數據倉庫的過渡,也是數據倉庫項目的可選項之一。

 

在Kimball的<<數據倉庫生命周期工具集The Data WareHouse Liftcycle Toolkit>>,他是這樣定義的:

1. 是操作型系統中的集成,用於當前,歷史以及其它細節查詢(業務系統的一部分)

2. 為決策支持提供當前細節數據(數據倉庫的一部分)

 

因此操作數據存儲(ODS) 是用於支持企業日常的全局應用的數據集合,ODS的數據具有面向主題、集成的、可變的和數據是當前的或是接近當前的4個基本特征。同樣也可以看出ODS是介於DB和DW 之間的一種數據存儲技術,和原來面向應用的分散的DB相比,ODS中的數據組織方式和數據倉庫(DW)一樣也是面向主題的和集成的,所以對進入ODS的數 據也象進入數據倉庫的數據一樣進行集成處理。另外ODS只是存放當前或接近當前的數據,如果需要的話還可以對ODS中的數據進行增、刪和更新等操 作,雖然DW中的數據也是面向主題和集成的,但這些數據一般不進行修改,所以ODS和DW的區別主要體現數據的可變性、當前性、穩定性、匯總度上。

 

由於ODS仍然存儲在普通的關系數據庫中,出於性能、存儲和備份恢復等數據庫的角度以及對源數據庫的性能影響角度,個人不建議ODS保存相當長周期的數據,同樣ODS中的數據也盡量不做轉換,而是原封不動地與業務數據庫保持一致。即ODS只是業務數據庫的一個備份或者映像,目的是為了使數據倉庫的處理和決策支持要求與OLTP系統相隔離,減少決策支持要求對OLTP系統的影響。

 

為什么需要有一個ODS系統呢?一般在帶有ODS的系統體系結構中,ODS都具備如下幾個作用:

1) 在業務系統和數據倉庫之間形成一個隔離層。

一 般的數據倉庫應用系統都具有非常復雜的數據來源,這些數據存放在不同的地理位置、不同的數據庫、不同的應用之中,從這些業務系統對數據進行抽取並不是一件 容易的事。因此,ODS用於存放從業務系統直接抽取出來的數據,這些數據從數據結構、數據之間的邏輯關系上都與業務系統基本保持一致,因此在抽取過程中極 大降低了數據轉化的復雜性,而主要關注數據抽取的接口、數據量大小、抽取方式等方面的問題。

2) 轉移一部分業務系統細節查詢的功能

在 數據倉庫建立之前,大量的報表、分析是由業務系統直接支持的,在一些比較復雜的報表生成過程中,對業務系統的運行產生相當大的壓力。ODS的數據從粒度、 組織方式等各個方面都保持了與業務系統的一致,那么原來由業務系統產生的報表、細節數據的查詢自然能夠從ODS中進行,從而降低業務系統的查詢壓力。

3) 完成數據倉庫中不能完成的一些功能。

一 般來說,帶有ODS的數據倉庫體系結構中,DW層所存儲的數據都是進行匯總過的數據和運營指標,並不存儲每筆交易產生的細節數據,但是在某些特殊的應用中,可能需要 對交易細節數據進行查詢,這時就需要把細節數據查詢的功能轉移到ODS來完成,而且ODS的數據模型按照面向主題的方式進行存儲,可以方便地支持多維分析 等查詢功能。即數據倉庫從宏觀角度滿足企業的決策支持要求,而ODS層則從微觀角度反映細節交易數據或者低粒度的數據查詢要求。

在一個沒有ODS層的數據倉庫應用系統體系結構中,數據倉庫中存儲的數據粒度是根據需要而確定的,但一般來說,最為細節的業務數據也是需要保留的,實際上 也就相當於ODS,但與ODS所不同的是,這時的細節數據不是“當前、不斷變化的”數據,而是“歷史的,不再變化的”數據。這樣的數據倉庫的存儲壓力和性能壓力都是比較大的,因此對數據倉庫的物理設計和邏輯設計提出了更高的要求。

 

ODS的功能

(1)實現企業級的OLTP操作:
  傳統的操作型數據庫往往只存放企業某一類業務或者某一個部門的數據,因此無法面向企業全局數據的OLTP,而ODS可以實現。因為ODS的數據是面向整個企業進行集成匯總的,克服了原來面向應用的操作型數據庫數據分散的缺陷。
(2)實現即時的OLAP操作:
  在數據倉庫上進行OALP,往往由於數據量十分龐大而需要較長的時間。而在企業實際應用中,對於一些較低層次的決策,往往並不需要太多的歷史數據,可能只需要參考當前的或者接近當前的數據就可以完成,並且要求具有較快的響應時間,因此數據倉庫顯然無法滿足這樣的要求,但是ODS可以實現。ODS中不僅有面向企業全局的細節數據和匯總數據,而且規模比數據倉庫小,具有較強的實時響應能力。

ODS是這樣一種數據存儲系統,它將來自不同數據源的數據(各種操作型數據庫、外部數據源等)通過ETL過程匯聚整合成面向主題的、集成的、企業全局的、一致的數據集合(主要是最新的或者最近的細節數據以及可能需要的匯總數據),用於滿足企業准實時的OLAP操作和企業全局的OLTP操作,並為數據倉庫提供集成后的數據,將數據倉庫系統中的ETL過程下沉到ODS中完成以減輕數據倉庫的壓力。

 

ODS和DW面向不同的用戶,為不同的需求產生,因此都有不可替代的作用,兩者相互結合、相互補充。
ODS在三層體系結構中扮演着承上啟下的作用。
一方面,ODS在原來獨立的各個DB的基礎上建立了一個一致的、企業全局的、面向主題的數據環境,使原有的DB系統得到改造。
另一方面,ODS使DW卸去了數據集成、結構轉換等一系列負擔,對DW的數據追加通過ODS完成,大大簡化的DW的數據傳輸接口和DW管理數據的復雜度。
ODS系統的建設,彌補了DB~DW兩層體系結構的不足,但是ODS並不是必需的,當企業並不需要操作型集成信息時,基於DB~DW兩層體系結構是較優的,如果需要,那么DB~ODS~DW三層體系結構則是較優的。

 

ODS與DW的區別

ODS在DB~ODS~DW三層體系結構中起到一個承上啟下的作用。
ODS中的數據雖然具有DW中的數據的面向主題的、集成的特點,但是也有很多區別。


(1)存放的數據內容不同:
  ODS中主要存放當前或接近當前的數據、細節數據,可以進行聯機更新。
  DW中主要存放細節數據和歷史數據,以及各種程度的綜合數據,不能進行聯機更新。
  ODS中也可以存放綜合數據,但只在需要的時候生成。


(2)數據規模不同:
  由於存放的數據內容不同,因此DW的數據規模遠遠超過ODS。

  數據是當前的——或其數據處理技術允許這樣,這與數據倉庫存儲歷史數據的性質顯著不同。ODS具有最少的歷史數據,而盡可能接近實時地展示實體的狀態。

  數據幾乎完全是細節數據,僅具有少量的動態聚集或匯總數據。通常將ODS設計成包含事務級的數據,即包含該主題域最低級別的數據。

  數據是易失的和可更新的,這是與靜態數據倉庫的一個很大的區別。ODS就如同一個事務處理系統,當新的數據流進ODS時,受其影響的字段被新信息覆蓋或更新。除審計數據外,不保留其他的歷史內容。


(3)技術支持不同:
  ODS需要支持面向記錄的聯機更新,並隨時保證其數據與數據源中的數據一致。
  DW則需要支持ETL技術和數據快速存取技術等。


(4)面向的需求不同:
  ODS主要面向兩個需求:一是用於滿足企業進行全局應用的需要,即企業級的OLTP和即時的OLAP;二是向數據倉庫提供一致的數據環境用於數據抽取。
  DW主要用於高層戰略決策,供挖掘分析使用。

   在數據倉庫中,幾乎沒有針對其本身的報表(報表均放到數據集市中完成);與此不同,在ODS中,業務用戶頻繁地直接訪問ODS。

(5)使用者不同:
  ODS主要使用者是企業中層管理人員,他們使用ODS進行企業日常管理和控制。
  DW主要使用者是企業高層和數據分析人員。

 

本文部分借鑒:http://www.cnblogs.com/hbsygfz/p/4759680.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM