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