關于“元數(shù)據(jù)”的理解
?
??? 一直都對元數(shù)據(jù)一知半解,當然理論我都知道,但是主要是沒有實際應用過,所以對這方面的知識還是比較好奇,想多了解一下。最近又看到一篇關于“元數(shù)據(jù)”的文章,發(fā)現(xiàn)寫得不錯,摘錄下來留存。
?
?
元數(shù)據(jù)
?
??? 元數(shù)據(jù)(Metadata):就是數(shù)據(jù)的數(shù)據(jù),用于建立、管理、維護和使用數(shù)據(jù)倉庫。元數(shù)據(jù)管理是企業(yè)級數(shù)據(jù)倉庫中的關鍵組件,貫穿于建立數(shù)據(jù)倉庫的整個過程。
?
元數(shù)據(jù)使得用戶可以掌握數(shù)據(jù)的歷史情況,如數(shù)據(jù)從哪里來?流通時間有多長?更新頻率是多大?數(shù)據(jù)元素的含義是什么?對它已經進行了哪些計算、轉換和篩選等等。在需求不確定情況下,在瞬間萬變的商業(yè)環(huán)境下,元數(shù)據(jù)可以更好的支持需求的變化,降低項目風險。
元數(shù)據(jù)貫徹于建立數(shù)據(jù)倉庫的整個過程,不只是ETL過程需要元數(shù)據(jù)的支持。
?
?
元數(shù)據(jù)分類
?
通常把元數(shù)據(jù)分為技術元數(shù)據(jù)(Technical Metadata)和業(yè)務元數(shù)據(jù)(Business Metadata)。
?
???
技術元數(shù)據(jù)
是描述關于數(shù)據(jù)倉庫技術細節(jié)的數(shù)據(jù),這些元數(shù)據(jù)應用于開發(fā)、管理和維護數(shù)據(jù)倉庫,它主要包含以下信息。
?
??? 1、數(shù)據(jù)倉庫結構的描述,包括倉庫模式、視圖、維、層次結構和導出數(shù)據(jù)的定義,以及數(shù)據(jù)集市的位置和內容;
??? 2、業(yè)務系統(tǒng)、數(shù)據(jù)倉庫和數(shù)據(jù)集市的體系結構和模式;
??? 3、匯總用的算法,包括度量和維定義算法,數(shù)據(jù)粒度、主題領域、聚合、匯總和預定義的查詢與報告;
??? 4、由操作環(huán)境到數(shù)據(jù)倉庫環(huán)境的映射,包括源數(shù)據(jù)和它們的內容、數(shù)據(jù)分割、數(shù)據(jù)提取、清理、轉換規(guī)則和數(shù)據(jù)刷新規(guī)則及安全(用戶授權和存取控制)。
?
???
業(yè)務元數(shù)據(jù)
從業(yè)務角度描述了數(shù)據(jù)倉庫中的數(shù)據(jù),它提供了介于使用者和實際系統(tǒng)之間的語義層,使得不懂計算機技術的業(yè)務人員也能夠“讀懂”數(shù)據(jù)倉庫中的數(shù)據(jù)。業(yè)務元數(shù)據(jù)主要包括以下信息:使用者的業(yè)務術語所表達的數(shù)據(jù)模型、對象名和屬性名;訪問數(shù)據(jù)的原則和數(shù)據(jù)的來源;系統(tǒng)所提供的分析方法及公式和報表的信息。
?
??? 在信息打包過程中,需要用包圖表示維度和類別還有它們之間的傳遞和映射關系,實際上這個操作就是在原業(yè)務系統(tǒng)的基礎上創(chuàng)建了元數(shù)據(jù)。其中的維度、類別還有層次關系是屬于典型的技術型元數(shù)據(jù),而業(yè)務系統(tǒng)中與之對應的術語則屬于業(yè)務元數(shù)據(jù)。比如日期、區(qū)域、產品、客戶年齡和客戶狀況等維度,實際銷售、計劃銷售、預測銷售、計劃偏差和預測偏差等指標皆屬于元數(shù)據(jù)。這些數(shù)據(jù)在分析中起到了極為重要的作用。
?
?
元數(shù)據(jù)的作用
?
??? 從元數(shù)據(jù)的類型和作用來看,元數(shù)據(jù)實際上是要解決何人在何時、何地為了什么原因及怎樣使用數(shù)據(jù)倉庫的問題。再具體化一點,元數(shù)據(jù)在數(shù)據(jù)倉庫管理員的眼中是數(shù)據(jù)倉庫中的包含了所有內容和過程的完整知識庫和文檔,而在最終用戶(即數(shù)據(jù)分析人員)眼中,元數(shù)據(jù)則是數(shù)據(jù)倉庫的信息地圖。
?
??? 數(shù)據(jù)分析員為了能有效地使用數(shù)據(jù)倉庫環(huán)境,往往需要元數(shù)據(jù)的幫助。尤其是在數(shù)據(jù)分析員進行信息分析處理時,他們首先需要去查看元數(shù)據(jù)。元數(shù)據(jù)還涉及到數(shù)據(jù)從操作型環(huán)境到數(shù)據(jù)倉庫環(huán)境中的映射。當數(shù)據(jù)從操作型環(huán)境進入數(shù)據(jù)倉庫環(huán)境時,數(shù)據(jù)要經歷一系列重大的轉變,包含了數(shù)據(jù)的轉化、過濾、匯總和結構改變等過程。數(shù)據(jù)倉庫的元數(shù)據(jù)要能夠及時跟蹤這些轉變,當數(shù)據(jù)分析員需要就數(shù)據(jù)的變化從數(shù)據(jù)倉庫環(huán)境追溯到操作型環(huán)境中時,就要利用元數(shù)據(jù)來追蹤這種轉變。另外,由于數(shù)據(jù)倉庫中的數(shù)據(jù)會存在很長一段時間,其間數(shù)據(jù)倉庫往往可能會改變數(shù)據(jù)的結構。隨著時間的流逝來跟蹤數(shù)據(jù)結構的變化,是元數(shù)據(jù)另一個常見的使用功能。
?
??? 元數(shù)據(jù)描述了數(shù)據(jù)的結構、內容、鏈和索引等項內容。在傳統(tǒng)的數(shù)據(jù)庫中,元數(shù)據(jù)是對數(shù)據(jù)庫中各個對象的描述,數(shù)據(jù)庫中的數(shù)據(jù)字典就是一種元數(shù)據(jù)。在關系數(shù)據(jù)庫中,這種描述就是對數(shù)據(jù)庫、表、列、觀點和其他對象的定義;但在數(shù)據(jù)倉庫中,元數(shù)據(jù)定義了數(shù)據(jù)倉庫中的許多對象——表、列、查詢、商業(yè)規(guī)則及數(shù)據(jù)倉庫內部的數(shù)據(jù)轉移。元數(shù)據(jù)是數(shù)據(jù)倉庫的重要構件,是數(shù)據(jù)倉庫的指示圖。元數(shù)據(jù)在數(shù)據(jù)源抽取、數(shù)據(jù)倉庫開發(fā)、商務分析、數(shù)據(jù)倉庫服務和數(shù)據(jù)求精與重構工程等過程都有重要的作用,元數(shù)據(jù)在整個數(shù)據(jù)倉庫開發(fā)和應用過程中的巨大影響。因此,設計一個描述能力強并且內容完善的元數(shù)據(jù),對數(shù)據(jù)倉庫進行有效地開發(fā)和管理具有決定性意義。
?
?
?
*******************************************************
?
??? 在數(shù)據(jù)倉庫中,元數(shù)據(jù)的概念被強化了,在每個數(shù)據(jù)倉庫項目的總體架構圖中,幾乎都有”元數(shù)據(jù)治理”模塊來橫貫其他模塊。顯然,這表示它是一種基礎模塊,可以服務于諸如OLAP、ETL等其他模塊。但實際上,卻很少見一個完成了的數(shù)據(jù)倉庫項目中有獨立的元數(shù)據(jù)部分。大多項目,元數(shù)據(jù)都是分散在各種BI工具中。
??? 這些分散的元數(shù)據(jù)是不一致的,例如對一張表的結構定義,可能出現(xiàn)在ER設計工具中,當然也會在數(shù)據(jù)庫的數(shù)據(jù)字典中,還有可能在ETL工具的源、目標定義中。如此多的重復定義,當然會發(fā)生數(shù)據(jù)不一致現(xiàn)象,卻也正好為元數(shù)據(jù)治理工具留下廣闊空間,它們的作用就是集中治理這些分散的元數(shù)據(jù),就像數(shù)據(jù)倉庫一樣,從不同的源采集數(shù)據(jù),有ETL,也有清洗,甚至重新建模。
??? 元數(shù)據(jù)(metadata)這個詞現(xiàn)在到處泛濫。其實我對元數(shù)據(jù)充其量只能說有自己的理解而已,并不能確信這個理解是正確的。
?
??? 我認為,數(shù)據(jù)結構分為三個層次(UML可是四層哦):
??? 實例層:直接描述特異化的數(shù)據(jù)場景;
??? 元數(shù)據(jù)層:描述實例的結構的一組數(shù)據(jù);
??? 元數(shù)據(jù)的元數(shù)據(jù)層:描述元數(shù)據(jù)的結構的一組數(shù)據(jù)。
??? 元數(shù)據(jù)就是用來描述實例或者描述元數(shù)據(jù)的一種結構。
??? 元數(shù)據(jù)的特征有這樣幾個:第一是元數(shù)據(jù)一定不依賴業(yè)務反而被業(yè)務所依賴,相當業(yè)務的多變性,元數(shù)據(jù)是相對穩(wěn)定的;第二是元數(shù)據(jù)具有廣泛的可復用性,而業(yè)務的可復用性極差;第三是元數(shù)據(jù)注重結構,而業(yè)務注重行為。
??? 實例層:直接描述特異化的數(shù)據(jù)場景;
??? 元數(shù)據(jù)層:描述實例的結構的一組數(shù)據(jù);
??? 元數(shù)據(jù)的元數(shù)據(jù)層:描述元數(shù)據(jù)的結構的一組數(shù)據(jù)。
??? 元數(shù)據(jù)就是用來描述實例或者描述元數(shù)據(jù)的一種結構。
??? 元數(shù)據(jù)的特征有這樣幾個:第一是元數(shù)據(jù)一定不依賴業(yè)務反而被業(yè)務所依賴,相當業(yè)務的多變性,元數(shù)據(jù)是相對穩(wěn)定的;第二是元數(shù)據(jù)具有廣泛的可復用性,而業(yè)務的可復用性極差;第三是元數(shù)據(jù)注重結構,而業(yè)務注重行為。
?
??? 在Xml中,元數(shù)據(jù)就是模式(Schema),在數(shù)據(jù)庫中,元數(shù)據(jù)就是數(shù)據(jù)庫對象定義,包括表、視圖、關系約束、存貯過程、觸發(fā)器、函數(shù)、數(shù)據(jù)庫用戶、數(shù)據(jù)庫角色等等定義。在對象空間,元數(shù)據(jù)就是類型、接口、方法、方法參數(shù)、屬性的定義。在結構化程序空間,元數(shù)據(jù)就是函數(shù)及函數(shù)的參數(shù)。
?
??? 我之所以反復強調參數(shù),是因為我們在定義一個接口或者方法的參數(shù)時總是非常隨便,但定義一個Xml文檔模式或者數(shù)據(jù)庫對象時總是小心翼翼的,很受束縛。這顯然有一定的不合理之處。仔細推敲,我的結論就是:第一,我們設計每個方法的參數(shù)時,特別是設計每個虛擬方法的參數(shù)時一定要小心一點,盡量不要濫用參數(shù)重構。第二,我們在設計一個Xml文檔結構或者數(shù)據(jù)庫結構的時候可別那么畏首畏尾的,就象平時寫程序時設計一個方法的參數(shù)那樣。這樣就平衡了。
?
??? 總結以往多年的數(shù)據(jù)庫設計,我歸納為兩個原則和兩個方法:
??? 降冗優(yōu)先原則(降冗是數(shù)據(jù)庫設計時的首要要素);
??? 平行引用原則(所有的關系都必須是單向的并且不能交叉);
??? 依職責拆分方法(同一基數(shù)不同職責或者不同的維護方法或者不同的維護期必須拆分);
??? 依基數(shù)合并方法(同一基數(shù)且職責相同必須合并)。
??? 降冗優(yōu)先原則(降冗是數(shù)據(jù)庫設計時的首要要素);
??? 平行引用原則(所有的關系都必須是單向的并且不能交叉);
??? 依職責拆分方法(同一基數(shù)不同職責或者不同的維護方法或者不同的維護期必須拆分);
??? 依基數(shù)合并方法(同一基數(shù)且職責相同必須合并)。
?
??? 忽然發(fā)現(xiàn),其實這些原則和方法在整個元數(shù)據(jù)層都適用,不僅僅只針對數(shù)據(jù)庫設計。
?
*******************************************************
?
?