1. 引言
本篇主要講述操作數據存儲(ODS)系統產生的背景、定義、特點,以及它與數據倉庫的區別。
在前兩篇,筆者介紹了什么是數據倉庫?為什么需要數據倉庫?數據倉庫系統的體系結構是什么?因此可能在讀者心里已經形成了企業數據存儲的DB~DW兩層體系結構的概念,但在實際應用中,並不總是這樣,有時候我們可能需要ODS這一系統來搭建DB~ODS~DW三層數據體系,那么什么是ODS?為什么需要ODS?ODS與DW的區別又是什么?下面將在第2-6節介紹ODS的理論知識,在第7節以電信運營商為例介紹ODS的實際應用。由於是學習心得,如有錯誤或者不嚴謹的地方,希望讀者批評指正。
2. ODS產生的背景
人們對數據的處理行為可以划分為操作型數據處理和分析型數據處理,操作型數據處理一般放在傳統的數據庫(Database,DB)中進行,分析型數據處理則需要在數據倉庫(Data Warehouse,DW)中進行。但是並不是所有的數據處理都可以這樣划分,換句話說,人們對數據的處理需求並不只有這兩類,比如,有些操作型處理並不適合放在傳統的數據庫上完成,也有些分析型處理不適合在數據倉庫中進行。這時候就需要第三種數據存儲體系,操作數據存儲(Operational Data Store,ODS)系統就因此產生。它的出現,也將DB~DW兩層數據架構轉變成DB~ODS~DW三層數據架構。
那么,什么是ODS?
ODS是用於支持企業日常的、全局應用的數據集合。
(PS:這樣定義,可能還是不清楚,看完下面3、4節應該就能明白~)
## 3. ODS數據的基本特征 ODS中的數據具有以下4個基本特征: ① **面向主題的:**進入ODS的數據是來源於各個操作型數據庫以及其他外部數據源,數據進入ODS前必須經過 `ETL`過程(抽取、清洗、轉換、加載等)。 ② **集成的:**ODS的數據來源於各個操作型數據庫,同時也會在數據清理加工后進行一定程度的綜合。 ③ **可更新的:**可以聯機修改。這一點區別於數據倉庫。 ④ **當前或接近當前的:**“當前”是指數據在存取時刻是最新的,“接近當前”是指存取的數據是最近一段時間得到的。
## 4. ODS的功能 **(1)實現企業級的OLTP操作:** 傳統的操作型數據庫往往只存放企業某一類業務或者某一個部門的數據,因此無法面向企業全局數據的OLTP,而ODS可以實現。因為ODS的數據是面向整個企業進行集成匯總的,克服了原來面向應用的操作型數據庫數據分散的缺陷。 **(2)實現即時的OLAP操作:** 在數據倉庫上進行OALP,往往由於數據量十分龐大而需要較長的時間。而在企業實際應用中,對於一些較低層次的決策,往往並不需要太多的歷史數據,可能只需要參考當前的或者接近當前的數據就可以完成,並且要求具有較快的響應時間,因此數據倉庫顯然無法滿足這樣的要求,但是ODS可以實現。ODS中不僅有面向企業全局的細節數據和匯總數據,而且規模比數據倉庫小,具有較強的實時響應能力。 > **小結:**通過3、4節的介紹,可以這樣解釋ODS的概念: ODS是這樣一種數據存儲系統,它將來自不同數據源的數據(各種操作型數據庫、外部數據源等)通過ETL過程匯聚整合成面向主題的、集成的、企業全局的、一致的數據集合(主要是最新的或者最近的細節數據以及可能需要的匯總數據),用於滿足企業准實時的OLAP操作和企業全局的OLTP操作,並為數據倉庫提供集成后的數據,將數據倉庫系統中的ETL過程下沉到ODS中完成以減輕數據倉庫的壓力。
## 5. DB~ODS~DW三層體系結構  ODS和DW面向不同的用戶,為不同的需求產生,因此都有不可替代的作用,兩者相互結合、相互補充。 ODS在三層體系結構中扮演着承上啟下的作用。 一方面,ODS在原來獨立的各個DB的基礎上建立了一個一致的、企業全局的、面向主題的數據環境,使原有的DB系統得到改造。 另一方面,ODS使DW卸去了數據集成、結構轉換等一系列負擔,對DW的數據追加通過ODS完成,大大簡化的DW的數據傳輸接口和DW管理數據的復雜度。 ODS系統的建設,彌補了DB~DW兩層體系結構的不足,但是ODS並不是必需的,當企業並不需要操作型集成信息時,基於DB~DW兩層體系結構是較優的,如果需要,那么DB~ODS~DW三層體系結構則是較優的。
## 6. ODS與DW的區別 ODS在DB~ODS~DW三層體系結構中起到一個承上啟下的作用。 ODS中的數據雖然具有DW中的數據的面向主題的、集成的特點,但是也有很多區別。 **(1)存放的數據內容不同:** ODS中主要存放當前或接近當前的數據、細節數據,可以進行聯機更新。 DW中主要存放細節數據和歷史數據,以及各種程度的綜合數據,不能進行聯機更新。 ODS中也可以存放綜合數據,但只在需要的時候生成。 **(2)數據規模不同:** 由於存放的數據內容不同,因此DW的數據規模遠遠超過ODS。 **(3)技術支持不同:** ODS需要支持面向記錄的聯機更新,並隨時保證其數據與數據源中的數據一致。 DW則需要支持ETL技術和數據快速存取技術等。 **(4)面向的需求不同:** ODS主要面向兩個需求:一是用於滿足企業進行全局應用的需要,即企業級的OLTP和即時的OLAP;二是向數據倉庫提供一致的數據環境用於數據抽取。 DW主要用於高層戰略決策,供挖掘分析使用。 **(5)使用者不同:** ODS主要使用者是企業中層管理人員,他們使用ODS進行企業日常管理和控制。 DW主要使用者是企業高層和數據分析人員。
## 7. ODS在電信行業的具體應用 **(1)運營商為什么要建ODS?** 隨着市場的不斷變化,電信運營商需要以“產品”為中心向以“客戶”為中心轉型,而這種轉型需要建立客戶統一視圖信息,並實現信息在各渠道、前后端的共享,但是目前這些數據分布在各個生產系統中,並存在各種數據不一致的現象。因此,提出了以ODS系統來解決這一問題。具體地說,希望通過ODS系統來滿足以下三種需求: ① 建立企業全局的客戶統一視圖信息,指導客戶品牌經營和精確管理; ② 建立統一的數據共享平台,快速支撐跨系統應用,促進企業數據模型的落地,形成企業標准數據; ③ 提升企業數據質量,解決生產系統之間數據不一致、數據質量差的問題。 **(2)ODS的系統定位:** ODS系統是一個跨系統的數據共享平台,承接操作環境和分析環境。  企業數據架構建立在統一的數據模型的基礎上,由生產系統自有數據庫、操作數據存儲(ODS)、企業數據倉庫(EDW)三個層面組成。其中,ODS存儲按主題分類的面向運營的准實時數據,提供統一的企業數據視圖;生產系統自有數據庫存儲該生產系統內部實時交易數據;EDW存儲面向經營決策分析的歷史數據和綜合數據。 ODS對生產系統產生的數據進行清洗、過濾、轉換、整合,是提供給EDW高質量數據的重要來源之一,同時為各個生產系統提供准實時的運營報表等跨系統共享數據服務。另外,在企業運營層,對於需要同時利用跨系統的操作型數據和相關分析結果數據的協作性應用需求,ODS也起到關鍵支撐作用。 **(3)ODS的業務目標:** ① 統一准實時的數據共享 ② 生產經營數據質量檢查 ③ 統一客戶視圖的提供與展示 ④ 生產經營報表統一的提供與展示 ⑤ 關鍵生產經營績效指標與經營風險的監控 ⑥ 跨系統的批量計算 **(4)ODS與生產系統的比較:** **相同點:** ① 均包含當前的細粒度運營數據; ② 使用者都是一線的生產和管理人員; ③ 都是數據質量管理閉環流程中的一個環節(ODS對所存儲的數據進行一致性、完整性、正確性的校驗,形成數據校驗結果並返回給源系統進行修正); **不同點:** ① ODS不產生運營數據,運營數據由各個生產系統產生; ② 在數據質量管理閉環流程中,ODS負責發現數據質量問題,生產系統負責解決數據質量問題; ③ ODS為其他系統提供准實時的數據共享服務,生產系統提供實時的數據共享服務; ④ ODS提供基於跨系統數據的查詢應用,生產系統通過與ODS合作提供跨系統的准實時查詢應用; ⑤ ODS系統提供基於跨系統數據的固定或者動態報表,生產系統提供基於單系統的、實時性要求高的固定或動態報表; ⑥ ODS負責批量數據的計算,生產系統負責事務驅動的數據計算。 **(5)ODS與EDW的比較:** **相同點:** ① ODS和EDW都不是運營數據的產生系統,都是通過ETL等過程從各種數據源中加載數據; ② ODS和EDW的數據都是分層存儲,既有細節數據,又有根據不同維度匯總的綜合數據; ③ ODS和EDW都可以提供基於跨系統整合后數據的報表類應用。 **不同點:** ① ODS中的細節數據時效性高,並提供給其他系統共享,而EDW中的細節數據時效性低,不提供給其他系統共享,只供自身挖掘分析使用; ② ODS中的數據匯總維度較少,EDW中數據匯總維度多。 ③ ODS提供的報表內容主要是面向生產運營過程中數據的統計與監控,不做進一步分析和挖掘,而EDW中的報表內容主要是針對跨系統的數據進行深度分析和挖掘,着重趨勢分析並提供評估和決策功能; ④ ODS面向一線生產的管理人員,EDW面向專業分析人員和企業中高層管理人員; ⑤ ODS中的運用數據來源是生產系統,EDW運營數據主要從ODS中獲取,ODS中沒有的才從生產系統中獲取; ⑥ ODS中的數據保存期限短於EDW中的數據保存期限。
## 8. 參考文獻 \[1] [數據倉庫(原書第4版),William H.Inmon著,王志海等譯,機械工業出版社,2006.8](http://book.douban.com/subject/1881631/) \[2] [數據倉庫與數據分析教程,王珊等編著,高等教育出版社,2012.8](http://book.douban.com/subject/10785240/) \[3] [百度文庫:電信ODS規范](http://wenku.baidu.com/link?url=Zz0fFFd2XzRl4SJm_GPzNHYtiN3xdfbecOuH8Vs8OpWCUWNZOpq6a19qdR8jb-buzBF_a4jOTmoGIbXp2KNhbzTYfrZPBlfy4O_dwvz6OC_) \[4] [百度文庫:中國電信ODS規范培訓](http://wenku.baidu.com/link?url=Dn49HcpL2GlHodUi2htnaC9EtV1f6_yrv9EDNayrBdn-TyMYtKTv-z6fHP7MrRzIqVS-TAeVvTieKuXAJjT0zJx03EARJf8dy31M9tqXQoS)
