根據Bill.Inmon的定義,“數據倉庫是面向主題的、集成的、穩定的、隨時(shí)間變化的,主要用于決策支持的數據庫系統”
ODS是一個(gè)面向主題的、集成的、可變的、當前的細節數據集合,用于支持企業(yè)對于即時(shí)性的、操作性的、集成的全體信息的需 求。常常被作為數據倉庫的過(guò)渡,也是數據倉庫項目的可選項之一。
在Kimball的<<數據倉庫生命周期工具集The Data WareHouse Liftcycle Toolkit>>,他是這樣定義的
1. 是操作型系統中的集成,用于當前,歷史以及其它細節查詢(xún)(業(yè)務(wù)系統的一部分)
2. 為決策支持提供當前細節數據(數據倉庫的一部分)
因此操作數據存儲(ODS) 是用于支持企業(yè)日常的全局應用的數據集合,ODS的數據具有面向主題、集成的、可變的和數據是當前的或是接近當前的4個(gè)基本特征。同樣也可以看出ODS是介于DB和DW 之間的一種數據存儲技術(shù),和原來(lái)面向應用的分散的DB相比,ODS中的數據組織方式和數據倉庫(DW)一樣也是面向主題的和集成的,所以對進(jìn)入ODS的數 據也象進(jìn)入數據倉庫的數據一樣進(jìn)行集成處理。另外ODS只是存放當前或接近當前的數據,如果需要的話(huà)還可以對ODS中的數據進(jìn)行增、刪和更新等操 作,雖然DW中的數據也是面向主題和集成的,但這些數據一般不進(jìn)行修改,所以ODS和DW的區別主要體現數據的可變性、當前性、穩定性、匯總度上。
由于ODS仍然存儲在普通的關(guān)系數據庫中,出于性能、存儲和備份恢復等數據庫的角度以及對源數據庫的性能影響角度,個(gè)人不建議ODS保存相當長(cháng)周期的數據,同樣ODS中的數據也盡量不做轉換,而是原封不動(dòng)地與業(yè)務(wù)數據庫保持一致。即ODS只是業(yè)務(wù)數據庫的一個(gè)備份或者映像,目的是為了使數據倉庫的處理和決策支持要求與OLTP系統相隔離,減少決策支持要求對OLTP系統的影響。
為什么需要有一個(gè)ODS系統呢?一般在帶有ODS的系統體系結構中,ODS都具備如下幾個(gè)作用:
1) 在業(yè)務(wù)系統和數據倉庫之間形成一個(gè)隔離層。
一 般的數據倉庫應用系統都具有非常復雜的數據來(lái)源,這些數據存放在不同的地理位置、不同的數據庫、不同的應用之中,從這些業(yè)務(wù)系統對數據進(jìn)行抽取并不是一件 容易的事。因此,ODS用于存放從業(yè)務(wù)系統直接抽取出來(lái)的數據,這些數據從數據結構、數據之間的邏輯關(guān)系上都與業(yè)務(wù)系統基本保持一致,因此在抽取過(guò)程中極 大降低了數據轉化的復雜性,而主要關(guān)注數據抽取的接口、數據量大小、抽取方式等方面的問(wèn)題。
2) 轉移一部分業(yè)務(wù)系統細節查詢(xún)的功能
在 數據倉庫建立之前,大量的報表、分析是由業(yè)務(wù)系統直接支持的,在一些比較復雜的報表生成過(guò)程中,對業(yè)務(wù)系統的運行產(chǎn)生相當大的壓力。ODS的數據從粒度、 組織方式等各個(gè)方面都保持了與業(yè)務(wù)系統的一致,那么原來(lái)由業(yè)務(wù)系統產(chǎn)生的報表、細節數據的查詢(xún)自然能夠從ODS中進(jìn)行,從而降低業(yè)務(wù)系統的查詢(xún)壓力。
3) 完成數據倉庫中不能完成的一些功能。
一 般來(lái)說(shuō),帶有ODS的數據倉庫體系結構中,DW層所存儲的數據都是進(jìn)行匯總過(guò)的數據和運營(yíng)指標,并不存儲每筆交易產(chǎn)生的細節數據,但是在某些特殊的應用中,可能需要 對交易細節數據進(jìn)行查詢(xún),這時(shí)就需要把細節數據查詢(xún)的功能轉移到ODS來(lái)完成,而且ODS的數據模型按照面向主題的方式進(jìn)行存儲,可以方便地支持多維分析 等查詢(xún)功能。即數據倉庫從宏觀(guān)角度滿(mǎn)足企業(yè)的決策支持要求,而ODS層則從微觀(guān)角度反映細節交易數據或者低粒度的數據查詢(xún)要求。
在一個(gè)沒(méi)有ODS層的數據倉庫應用系統體系結構中,數據倉庫中存儲的數據粒度是根據需要而確定的,但一般來(lái)說(shuō),最為細節的業(yè)務(wù)數據也是需要保留的,實(shí)際上 也就相當于ODS,但與ODS所不同的是,這時(shí)的細節數據不是“當前、不斷變化的”數據,而是“歷史的,不再變化的”數據。這樣的數據倉庫的存儲壓力和性能壓力都是比較大的,因此對數據倉庫的物理設計和邏輯設計提出了更高的要求。