對(duì)于元數(shù)據(jù)(Metadata)的定義到目前為止沒(méi)有什么特別精彩的,這個(gè)概念非常廣,一般都是這樣定義,“元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù)(Data about Data)”,這造成一種遞歸定義,就像問(wèn)小強(qiáng)住在哪里,答,在旺財(cái)隔壁。按照這樣的定義,元數(shù)據(jù)所描述的數(shù)據(jù)是什么呢?還是元數(shù)據(jù)。這樣就可能有元元元...元數(shù)據(jù)。我還聽(tīng)說(shuō)過(guò)一種對(duì)元數(shù)據(jù),如果說(shuō)數(shù)據(jù)是一抽屜檔案,那么元數(shù)據(jù)就是分類(lèi)標(biāo)簽。那它和索引有什么區(qū)別?
元數(shù)據(jù)體現(xiàn)是一種抽象,哲學(xué)家從古至今都在抽象這個(gè)世界,力圖找到世界的本質(zhì)。抽象不是一層關(guān)系,它是一種逐步由具體到一般的過(guò)程。例如我->男人->人->哺乳動(dòng)物->生物這就是一個(gè)抽象過(guò)程,你要是在軟件業(yè)混會(huì)發(fā)現(xiàn)這個(gè)例子很常見(jiàn),面向?qū)ο蠓椒ň褪沁@樣一種抽象過(guò)程。它對(duì)世界中的事物、過(guò)程進(jìn)行抽象,使用面向?qū)ο蠓椒ǎ瑯?gòu)建一套對(duì)象模型。同樣在面向?qū)ο蠓椒ㄖ校?lèi)是對(duì)象的抽象,接口又是對(duì)類(lèi)的抽象。因此,我認(rèn)為可以將“元”和“抽象”換一下,叫抽象數(shù)據(jù)是不是好理解一些。
常聽(tīng)到這樣的話(huà),“xx領(lǐng)導(dǎo)的講話(huà)高屋建瓴,給我們后面的工作指引的清晰的方向”,這個(gè)成語(yǔ)“高屋建瓴”,站在10樓往下到水,居高臨下,能砸死人,這是指站在一定的高度看待事物,這個(gè)一定的高度就是指他有夠“元”。在設(shè)計(jì)模式中,強(qiáng)調(diào)要對(duì)接口編程,就是說(shuō)你不要處理這類(lèi)對(duì)象和那類(lèi)對(duì)象的交互,而要處理這個(gè)接口和那個(gè)接口的交互,先別管他們內(nèi)部是怎么干的。
元數(shù)據(jù)存在的意義也在于此,雖然上面說(shuō)了一通都撤到哲學(xué)上去,但這個(gè)詞必須還是要結(jié)合軟件設(shè)計(jì)中看,我不知道在別的領(lǐng)域是不是存在Metadata這樣的叫法,雖然我相信別的領(lǐng)域必然有類(lèi)似的東東。元數(shù)據(jù)的存在就是要做到在更高抽象一層設(shè)計(jì)軟件。這肯定有好處,什么靈活性啊,擴(kuò)展性啊,可維護(hù)性啊,都能得到提高,而且架構(gòu)清晰,只是彎彎太多,要是從下往上看,太復(fù)雜了。很早以前,我曾看過(guò)backorifice的代碼,我靠,一個(gè)簡(jiǎn)單的功能,從這個(gè)類(lèi)轉(zhuǎn)到父類(lèi),又轉(zhuǎn)到父類(lèi),很不理解,為什么一個(gè)簡(jiǎn)單的功能不在一個(gè)類(lèi)的方法中實(shí)現(xiàn)就拉到了呢?現(xiàn)在想想,還真不能這樣,這雖然使代碼容易看懂了,但是結(jié)構(gòu)確實(shí)混亂的,那他只能干現(xiàn)在的事,如果有什么功能擴(kuò)展,這些代碼就廢了。
我從98年剛工作時(shí)就開(kāi)始接觸元數(shù)據(jù)的概念,當(dāng)時(shí)叫做元數(shù)據(jù)驅(qū)動(dòng)的系統(tǒng)架構(gòu),后來(lái)在QiDSS中也用到這個(gè)概念構(gòu)建QiNavigator,但是現(xiàn)在覺(jué)得元數(shù)據(jù)也沒(méi)啥,不就是建一堆表描述界面的元素,再利用這些數(shù)據(jù)自動(dòng)生成界面嗎。到了數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)中,這個(gè)概念更強(qiáng)了,是數(shù)據(jù)倉(cāng)庫(kù)中一個(gè)重要的部分。但是至今,我還是認(rèn)為這個(gè)概念過(guò)于玄乎,看不到實(shí)際的東西,市面上有一些元數(shù)據(jù)管理的東西,但是從應(yīng)用情況就得知,用的不多。之所以玄乎,就是因?yàn)槌橄髮哟螞](méi)有分清楚,關(guān)鍵就是對(duì)于元數(shù)據(jù)的分類(lèi)(這種分類(lèi)就是一種抽象過(guò)程)和元數(shù)據(jù)的使用。你可以將元數(shù)據(jù)抽象成0和1,但是那樣對(duì)你的業(yè)務(wù)有用嗎?必須還得抽象到適合的程度,最后問(wèn)題還是“度”。
數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的元數(shù)據(jù)作用如何?還不就是使系統(tǒng)自動(dòng)運(yùn)轉(zhuǎn),易于管理嗎?要做到這一步,可沒(méi)必要將系統(tǒng)抽象到太極、兩儀、八卦之類(lèi)的,業(yè)界也曾定義過(guò)一些元數(shù)據(jù)規(guī)范,向CWM、XMI等等,可以借鑒,不過(guò)俺對(duì)此也是不精通的說(shuō),以后再說(shuō)。