李 珂,曹 健
在全球信息化的高速發(fā)展的今天,每時每刻都有大量的數(shù)據(jù)產(chǎn)生,對于企業(yè)來說,如何有效地管理和利用其數(shù)字資產(chǎn),已經(jīng)越來越重要并成為決定其業(yè)務成敗的關鍵。面對海量的數(shù)據(jù),企業(yè)直接面臨的是存儲成本的問題,另外,大量的數(shù)據(jù)也意味著查詢、編輯、分析、管理的高成本。因此,產(chǎn)生了各種各樣的理論或實踐來探討和解決這些問題,信息生命周期管理就是其中一個。
信息生命周期管理包含很多層面的內容,不論是從方法學還是管理的對象,都比較廣泛,本文主要針對關系數(shù)據(jù)庫或數(shù)據(jù)倉庫,來探討如何實現(xiàn)對企業(yè)數(shù)據(jù)的生命周期管理。
從存儲的角度來說,信息生命周期管理的理念是,根據(jù)某種規(guī)則,在一定時期內,將不常用、不關鍵的信息存儲在低速、成本較低的存儲設備上,甚至備份起來,從而減少在線的關鍵信息量,達到減少存儲成本,提供利用效率,以及保護數(shù)據(jù)的目的。
另外,有的數(shù)據(jù)庫產(chǎn)品也支持數(shù)據(jù)表的訪問頻率統(tǒng)計,根據(jù)這部分信息,則可以更精確的控制數(shù)據(jù)的存儲類型,從而達到高效的存儲和使用。
一個典型的數(shù)據(jù)生命周期管理的例子,主要分為3層存儲,通過數(shù)據(jù)分區(qū),將不同類型的數(shù)據(jù)存儲在不同的存儲設備上,可以被應用透明的訪問。如圖1所示:
圖1 數(shù)據(jù)生命周期管理三層存儲架構
要實現(xiàn)信息生命周期管理,需要有3個條件:硬件、分級的存儲設備、存儲成本不同但是可以同時被訪問、軟件、數(shù)據(jù)庫或數(shù)據(jù)倉庫必須支持數(shù)據(jù)的分區(qū)存儲;管理員,管理員需要根據(jù)業(yè)務規(guī)則,控制數(shù)據(jù)的存儲、訪問和刪除,以實現(xiàn)分級存儲。
但是,業(yè)務規(guī)則的復雜性多變以及頻繁的數(shù)據(jù)更新,使得人工來管理比較低效,而且市場上的數(shù)據(jù)庫和數(shù)據(jù)倉庫產(chǎn)品眾多,如何針對不同的平臺作信息生命周期管理也是一個挑戰(zhàn)。
人們在解決復雜問題的時候常常需要建模,建模的好處是標準化、易于交流和理解、易于抽象和思考復雜的問題。建模的方式是一種有效的信息生命周期管理手段。
PowerDesigner是一個企業(yè)級的建模工具,強調元模型的定義和管理,因此可以基于元模型做更多的分析、集成工作,特別在數(shù)據(jù)建模領域,占據(jù)絕對的優(yōu)勢地位。利用PowerDesigner的元模型管理和擴展能力,可以實現(xiàn)對信息生命周期管理的建模,這樣有以下一些好處:
基于模型的管理比較容易理解和維護;可以利用同一個模型實現(xiàn)基于不同數(shù)據(jù)庫或數(shù)據(jù)倉庫產(chǎn)品的解決方案;容易和其他數(shù)據(jù)管理工具集成,實現(xiàn)自動化的生命周期管理,降低維護成本;根據(jù)業(yè)務變化快速動態(tài)調整策略,重新部署和集成。
對象管理組織(OMG)有一整套關于建模的理論,一個具體的模型,比如物理數(shù)據(jù)模型,包含了表、列、引用等對象,而描述這些對象的對象就是其元對象,元對象構成的模型就是元模型。元模型就是用來描述模型的模型,當然元模型本身也是需要另一個模型來描述的,因此形成了一個遞歸的關系,但是,這個遞歸并不是無限的,在最頂層的元模型是自描述的,根據(jù)對象管理組織的MOF理論,這個遞歸關系總共分為四層。
在PowerDesigner中,元模型是基礎,所有的建模、視圖、分析等功能都是基于元模型的。因此,為了在PowerDesigner中建立新的模型,需要首先定義其元模型,PowerDesigner已經(jīng)支持對數(shù)據(jù)庫關系模型的建模,因此,在數(shù)據(jù)建模的基礎上,只要根據(jù)生命周期管理的業(yè)務需求,加入新的元模型類和關系。
PowerDesigner的元模型是由一套內部的語言定義的,其核心元模型管理引擎將根據(jù)該語言所描述的定義,生成相應的C++代碼,并實現(xiàn)COM接口,以暴露給其上的插件或腳本引擎。
另外,PowerDesigner本身也實現(xiàn)了一套定義自身元模型的模型,并生成元模型定義語言以及其他相關C++代碼。從理論上說,當PowerDesigner框架成熟之后,可以利用它本身來為自己實現(xiàn)更多的建模功能,這也從某種程度上印證了對象管理組織的MOF理論的自描述性。但是從實踐上說,這樣要求模型非常復雜,維護起來比直接編寫代碼要困難許多。
針對信息生命周期管理設計的元模型,如圖2所示:
圖2 信息生命周期管理元模型
其中,Lifecycle是管理策略本身,它包含一個或多個Phase,每一個 Phase指定了數(shù)據(jù)保存的時間和存儲設備,則當一條關系數(shù)據(jù)從創(chuàng)建開始,在相應的存儲上保存了Phase規(guī)定的時間以后,將會被存儲到下一個Phase所制定的存儲設備上。
當然,要實現(xiàn)同一數(shù)據(jù)表的分級存儲,需要數(shù)據(jù)庫支持表分區(qū),并且要制定一列日期時間類型的字段作為分區(qū)的關鍵列。這就是表上的PartitionKey這個屬性。
最后,還需要指定一個時間窗口,以這個時間窗口為單位進行表分區(qū),也會在這個時間窗口上進行數(shù)據(jù)的移動和存儲。比如,指定時間窗口為一個月,則在每個月的這一天,將對表根據(jù)關鍵列進行分區(qū),并根據(jù)Phase規(guī)定的時間選擇是否移動特定分區(qū)的表內容。
詳細的元模型信息,如表1所示:
表1 信息生命周期管理元模型詳細信息
在建立了生命周期管理的元模型后,也同時暴露了訪問的接口,PowerDesigner的一套通用的機制是屬性對話框。
PowerDesigner的通用界面是一套靈活且強大機制,由于元模型的可抽象性,決定了可以用有限的控件來表現(xiàn)和管理所有基于頂層元模型實現(xiàn)的模型屬性,并且是可以由最終用戶定制的。
屬性對話框是用XML語言描述的,每一個元模型類型的所有屬性,會按語義展現(xiàn)在一個屬性對話框的多個分頁上,對用戶來說,只需要定義想要表現(xiàn)的屬性和其排版即可。
例如,對于Lifecycle的屬性對話框,如圖3所示:
圖3 Lifecycle的屬性對話框
其中對應Policy部分的XML代碼如下所示:
在通用屬性對話框背后,是一套基于MVC模式的界面框架,其中Model模型部分即對應實現(xiàn)COM接口的元模型,View視圖部分是基于 Windows窗口和控件的對象,Controller控制器是內部實現(xiàn)的連接模型和視圖的橋梁,通過控制器來定制控件屬性行為、值轉換、驗證等等功能。
當然除了通用的控件以外,PowerDesigner的通用屬性對話框機制還支持動態(tài)創(chuàng)建的特殊控件,比如 Lifecycle頁面的 Phases屬性,利用動態(tài)創(chuàng)建的按鈕,同時展現(xiàn)了時間的長短以及相應的存儲及屬性信息。
PowerDesigner不僅僅定義模型,同時和生產(chǎn)系統(tǒng)也有著緊密的聯(lián)系,它可以實現(xiàn)雙向的轉換工作,比如,連接到實際的數(shù)據(jù)庫,反向工程生成相應的數(shù)據(jù)模型;也可以由模型生成數(shù)據(jù)定義腳本,在生成系統(tǒng)中運行。
在信息生命周期管理中,也要用到后者來生成針對特定數(shù)據(jù)庫或數(shù)據(jù)倉庫的腳本,應用生命周期規(guī)則到實際的生產(chǎn)環(huán)境中。
PowerDesigner的另一套強大的機制是模型擴展和代碼生成機制,在PowerDesigner實現(xiàn)其元模型的的時候留有模型擴展的接口,所謂擴展,就是在運行時動態(tài)的修改PowerDesigner預定義的元模型,比如可以為某一個現(xiàn)有的元模型類添加一個屬性,或者定義一個新的元模型類。
由于擴展是動態(tài)的,所以非常靈活,特別適用于數(shù)據(jù)建模的情況,為了支持各個不同的數(shù)據(jù)庫產(chǎn)品,PowerDesigner的元模型大體是統(tǒng)一的,但是細節(jié)上有所區(qū)別,因此,在基本的數(shù)據(jù)模型基礎上,通過定義不同的針對具體數(shù)據(jù)庫產(chǎn)品的模型擴展,可以很好的支持不同的數(shù)據(jù)庫和環(huán)境,從而簡化了手動維護的過程。
PowerDesigner也定義一套代碼生成的模板機制,這套機制同樣基于元模型和擴展模型的訪問,來定義生成的代碼。
例如,信息生命周期管理會生成如下的代碼:進行生命周期管理的腳本有很強的時間性,特定的腳本必須在特定的時間運行,并且,在整個生命周期內都要依照時間窗口的間隔持續(xù)運行下去,這是一個很適合計算機解決的問題。
很多數(shù)據(jù)庫管理系統(tǒng)都有計劃任務的功能,PowerDeigner生成腳本的時候,會按照執(zhí)行日期進行分類,將腳本以需要的順序進行管理,這樣可以方便各種數(shù)據(jù)庫管理系統(tǒng)進行配置。當然,通過PowerDesigner的模型擴展和模板機制,針對特殊系統(tǒng)的需求進行腳本生成的定制也是非常容易的。
在真正實施生命周期管理項目之前,PowerDesigner也提供了一套成本分析工具,可以模擬在實施了生命周期管理之后,以財年為周期,比較存儲和維護成本有多少程度的減少,并提供了Excel的接口,方便報表的生成,如表2所示:
表2 單表數(shù)據(jù)的存儲成本節(jié)省和百分比
比如,表2顯示了某系統(tǒng)中單表的存儲成本根據(jù)自然年的變化情況,雖然單表每年的成本減少并不客觀,但是對于大型系統(tǒng)和大量數(shù)據(jù),存儲成本的變化則比較可觀。單表數(shù)據(jù)存儲成本變化相應的柱狀圖,如圖4和圖5所示:
圖4 單表數(shù)據(jù)成本節(jié)省的柱狀圖
圖5 單表數(shù)據(jù)成本節(jié)省的百分比
PowerDesigner是一個相對獨立的平臺,其框架有很多通用的機制,在實現(xiàn)信息生命周期管理建模的過程中,也是一個基于PowerDesigner框架實現(xiàn)特定建模功能的過程。實現(xiàn)單個特定功能建模的過程,也是一個完善框架本身的過程。
比如,原有的通用屬性對話框并不能很好的管理和表現(xiàn)Phase的概念,而又不希望打破框架本身而選擇實現(xiàn)獨立的屬性對話框系統(tǒng),這時,通過對通用屬性對話框機制進行完善,PowerDesigner支持了更復雜的控制器并允許動態(tài)創(chuàng)建視圖控件。
通過對信息生命周期管理建模的支持,用戶可以容易的基于統(tǒng)一的規(guī)則對不同的數(shù)據(jù)庫或數(shù)據(jù)倉庫產(chǎn)品進行信息生命周期管理。從實現(xiàn)的結果看,與不進行生命周期管理分級存儲相比,數(shù)據(jù)的維護成本有比較明顯的降低。在未來,還可以在以下方面進行更多的支持:
支持從數(shù)據(jù)庫到數(shù)據(jù)倉庫的數(shù)據(jù)移動;支持更多數(shù)據(jù)庫管理工具的集成等等。
[1]白中英,王紅梅,郝靜.基于TD-ILM的存儲體系架構的研究與應用[J].計算機工程與設計,2008,29(18)
[2]裴雷,望俊成.信息生命周期管理研究進展述評[J].情報雜志,2010,29(9)
[3]申麗珍.基于ILM的數(shù)字圖書館分層存儲架構研究[J].科技信息,2010,(1)
[4]唐竟.基于信息生命周期管理的數(shù)據(jù)遷移技術研究[D].湖南大學:計算機技術, 2009
[5]陸泉,陳德照,鄧晶.基于信息生命周期管理的個性化信息資源建設[R].圖書情報工作研究會第22次圖書館學情報學學術研討會, 2010
[6]Michael Peterson.ILM and Tiered Storage[EB/OL].SNIA Whitepaper, 2006