鄭州旅游職業(yè)學(xué)院 王靜蕾
高校數(shù)字化系統(tǒng)數(shù)據(jù)整合研究與實(shí)現(xiàn)
鄭州旅游職業(yè)學(xué)院 王靜蕾
為了實(shí)現(xiàn)統(tǒng)一的資源管理、門(mén)戶(hù)管理和權(quán)限管理,必須科學(xué)規(guī)范地對(duì)高校的信息資源進(jìn)行整合。在數(shù)據(jù)整合過(guò)程中,通過(guò)對(duì)業(yè)務(wù)流程的組織和再造,從而推動(dòng)高校的制度創(chuàng)新和管理創(chuàng)新,最終實(shí)現(xiàn)教育信息化、決策科學(xué)化和管理規(guī)范化。目前,信息資源主要有3種整合策略。
1.資源集中法。指通過(guò)對(duì)高?,F(xiàn)有應(yīng)用系統(tǒng)的調(diào)研,按照各個(gè)部門(mén)的需求,制定統(tǒng)一的信息標(biāo)準(zhǔn)和應(yīng)用平臺(tái),在統(tǒng)一的框架中重建各種應(yīng)用子系統(tǒng),建立統(tǒng)一的主題數(shù)據(jù)庫(kù),用于存儲(chǔ)全校的數(shù)據(jù)。各部門(mén)將有用的數(shù)據(jù)集中到數(shù)據(jù)中心。這樣,系統(tǒng)中只有1個(gè)主數(shù)據(jù)庫(kù),這樣做的優(yōu)點(diǎn)是各個(gè)子系統(tǒng)之間的耦合程度較高,資源相對(duì)穩(wěn)定,容易實(shí)現(xiàn)各子系統(tǒng)與數(shù)據(jù)中心的無(wú)縫連接。缺點(diǎn)是開(kāi)發(fā)周期相對(duì)較長(zhǎng),用戶(hù)需求難以準(zhǔn)確把握且靈活度不高,資源的所有權(quán)也無(wú)法得到很好的解決。
2.元數(shù)據(jù)整合法。指在保留各部門(mén)原有應(yīng)用系統(tǒng)不變的前提下實(shí)現(xiàn)資源整合,從各應(yīng)用系統(tǒng)中抽取有共享價(jià)值的數(shù)據(jù),建立共享數(shù)據(jù)中心。各部門(mén)的數(shù)據(jù)讀寫(xiě)操作都在其原有的應(yīng)用系統(tǒng)中進(jìn)行,只有當(dāng)這些數(shù)據(jù)涉及其他部門(mén)時(shí),系統(tǒng)才通過(guò)預(yù)先的部署將共享的數(shù)據(jù)推出或錄入,從而實(shí)現(xiàn)應(yīng)用系統(tǒng)數(shù)據(jù)的相互關(guān)聯(lián)。這種方法的優(yōu)點(diǎn)是數(shù)據(jù)檢索速度快,能適應(yīng)內(nèi)容的頻繁更新,缺點(diǎn)是統(tǒng)一數(shù)據(jù)標(biāo)準(zhǔn)的難度較大。
3.聯(lián)合檢索法。聯(lián)合檢索法類(lèi)似于元數(shù)據(jù)整合的做法,在應(yīng)用系統(tǒng)只涉及本地?cái)?shù)據(jù)訪問(wèn)時(shí),數(shù)據(jù)操作只發(fā)生在本地,當(dāng)請(qǐng)求訪問(wèn)其他部門(mén)和工作站的數(shù)據(jù)時(shí)才和數(shù)據(jù)中心進(jìn)行關(guān)聯(lián)。兩者的不同之處在于,這種資源整合方法并不創(chuàng)建共享數(shù)據(jù)庫(kù),而是建立資源索引庫(kù)。所有業(yè)務(wù)數(shù)據(jù)仍然存放在各部門(mén)的工作站中。部門(mén)將有共享價(jià)值的數(shù)據(jù)子集存放在資源索引庫(kù)中,告訴它某個(gè)數(shù)據(jù)處于網(wǎng)絡(luò)的哪個(gè)位置,其功能類(lèi)似于互聯(lián)網(wǎng)上的搜索引擎。這種方法適合元數(shù)據(jù)不能集中訪問(wèn)不同資源的情況,但它采用了資源索引庫(kù),而忽視了原有資源信息存在的不同標(biāo)準(zhǔn),因此,維護(hù)難度比較大。
雖然以上3種數(shù)據(jù)整合策略各有利弊,但都需要在數(shù)據(jù)源中獲取有用的數(shù)據(jù),并利用某種方法形成一種類(lèi)似于“中間件”的集成模式,用戶(hù)可通過(guò)這種集成模式與數(shù)據(jù)源之間建立聯(lián)系,從而對(duì)元數(shù)據(jù)進(jìn)行查詢(xún)或修改等操作。數(shù)據(jù)整合中所利用到的關(guān)鍵技術(shù)有以下幾種。
1.獲取元數(shù)據(jù)。各部門(mén)的數(shù)據(jù)保存于不同的應(yīng)用系統(tǒng)服務(wù)器上,存儲(chǔ)的標(biāo)準(zhǔn)也不盡相同,對(duì)于這些異構(gòu)數(shù)據(jù)源的整合,最關(guān)鍵的步驟就是集成數(shù)據(jù)源的相關(guān)信息,也就是獲取元數(shù)據(jù)。目前,主流的數(shù)據(jù)庫(kù)產(chǎn)品均能根據(jù)保存的數(shù)據(jù)庫(kù)文件類(lèi)型生成相應(yīng)的SQL腳本,協(xié)助用戶(hù)備份或建立數(shù)據(jù)庫(kù)。這些腳本包含了數(shù)據(jù)源的所有元數(shù)據(jù)。雖然不同的數(shù)據(jù)庫(kù)產(chǎn)品在語(yǔ)法上略有不同,但都可以通過(guò)分析SQL腳本結(jié)構(gòu)來(lái)提取所需要的元數(shù)據(jù),并將按照統(tǒng)一的格式保存到元數(shù)據(jù)庫(kù)中。
2.集成模式的建立。所謂數(shù)據(jù)集成在這里是指按照用戶(hù)的查詢(xún)需求從各部門(mén)數(shù)據(jù)源中得到元數(shù)據(jù)并進(jìn)行清理與整合,并將元數(shù)據(jù)作為依據(jù)進(jìn)行連接形成元數(shù)據(jù)庫(kù)的過(guò)程。集成后數(shù)據(jù)在邏輯上依然是按“表”或“視圖”的形式組織的,但因?yàn)橥涣械脑獢?shù)據(jù)來(lái)源于不同的數(shù)據(jù)源,所以集成時(shí)可能會(huì)因?yàn)閿?shù)據(jù)源對(duì)字段類(lèi)型定義的不同而導(dǎo)致整合的失敗。因此,在進(jìn)行集成之前,必須根據(jù)實(shí)際的需求建立相應(yīng)的集成模式,如對(duì)相同語(yǔ)義的元數(shù)據(jù)重新定義統(tǒng)一的字段名稱(chēng)、類(lèi)型和長(zhǎng)度等數(shù)據(jù)內(nèi)容,從每個(gè)數(shù)據(jù)源得到的數(shù)據(jù)都要使用此標(biāo)準(zhǔn)進(jìn)行轉(zhuǎn)換以確保集成操作順利地進(jìn)行。
3.集成模式與元數(shù)據(jù)之間的映射關(guān)系。集成模式對(duì)異構(gòu)數(shù)據(jù)源上具有相同語(yǔ)義的元數(shù)據(jù)進(jìn)行了統(tǒng)一的管理,但如果要獲得實(shí)際需要的數(shù)據(jù),還必須通過(guò)與異構(gòu)數(shù)據(jù)源的元數(shù)據(jù)發(fā)生某種聯(lián)系來(lái)實(shí)現(xiàn),這種聯(lián)系便是集成模式與數(shù)據(jù)源元數(shù)據(jù)之間的映射。映射是以集成模式為參照,由用戶(hù)選擇需要整合的表,將需要集成的具有相同語(yǔ)義的元數(shù)據(jù)并聯(lián)到相關(guān)的集成模式上。這時(shí),異構(gòu)數(shù)據(jù)源就會(huì)以集成模式為紐帶產(chǎn)生一定的關(guān)聯(lián),只要對(duì)集成模式及相應(yīng)的映射關(guān)系進(jìn)行分析就能得到各數(shù)據(jù)源的實(shí)際查詢(xún)語(yǔ)句,實(shí)現(xiàn)對(duì)異構(gòu)數(shù)據(jù)源的查詢(xún)。
4.查詢(xún)語(yǔ)句的生成。通過(guò)對(duì)集成模式及其對(duì)應(yīng)的映射關(guān)系進(jìn)行分析,就能把集成模式的查詢(xún)分解為針對(duì)各異構(gòu)數(shù)據(jù)源的查詢(xún),然后再把各數(shù)據(jù)源的查詢(xún)結(jié)果按照集成模式進(jìn)行整合,最終得到集成結(jié)果。
1.數(shù)據(jù)整合的大致思路。先根據(jù)用戶(hù)需求鎖定所需的元數(shù)據(jù),然后建立集成模式,對(duì)其進(jìn)行一定的篩選和刪減,生成用戶(hù)視圖(表),并確定相應(yīng)的映射關(guān)系,對(duì)用戶(hù)視圖(表)進(jìn)行分析,根據(jù)用戶(hù)視圖(表)的字段以及相應(yīng)的映射關(guān)系確定每個(gè)異構(gòu)數(shù)據(jù)源需要查詢(xún)語(yǔ)句,并使用用戶(hù)視圖的字段作為元數(shù)據(jù)字段的別名,如果在數(shù)據(jù)源中不存在映射關(guān)系,則元數(shù)據(jù)字段以“NULL”值代替。最后,根據(jù)元數(shù)據(jù)字段生成各數(shù)據(jù)源查詢(xún)語(yǔ)句,每執(zhí)行一個(gè)查詢(xún)語(yǔ)句后都在本地?cái)?shù)據(jù)庫(kù)中建立臨時(shí)表保存查詢(xún)結(jié)果。對(duì)所有的臨時(shí)表按記錄數(shù)目的多少進(jìn)行排序,將記錄數(shù)目最少的2個(gè)表進(jìn)行連接,由此生成1個(gè)新的臨時(shí)表,完成后將參與連接的2個(gè)表刪除。循環(huán)上述步驟,直到剩下最后1個(gè)臨時(shí)表,即為集成查詢(xún)的初步結(jié)果。最后對(duì)最終臨時(shí)表進(jìn)行整理,消除表中的重復(fù)項(xiàng),并按用戶(hù)視圖的樣式輸出,完成最終的數(shù)據(jù)整合。
2.關(guān)鍵代碼舉例。在此,對(duì)整個(gè)過(guò)程關(guān)鍵代碼舉例說(shuō)明,以在2個(gè)不同部門(mén)的服務(wù)器上的2張表作為源數(shù)據(jù)表,通過(guò)SQL中的openrowset命令來(lái)實(shí)現(xiàn)數(shù)據(jù)的同步查詢(xún)、修改等操作。具體操作代碼如下所示:
不難看出,這段代碼只對(duì)1臺(tái)服務(wù)器數(shù)據(jù)庫(kù)進(jìn)行操作,而對(duì)另1服務(wù)器數(shù)據(jù)庫(kù)的操作在存儲(chǔ)過(guò)程“client_seach”中體現(xiàn)出來(lái)。存儲(chǔ)過(guò)程“client_seach”的關(guān)鍵Transact-SQL語(yǔ)句如下所示:
用select*from client查詢(xún)本機(jī)數(shù)據(jù)庫(kù)表,用openrowset打開(kāi)另1臺(tái)服務(wù)器得數(shù)據(jù)表,用on a.id=b.id語(yǔ)句與這2個(gè)數(shù)據(jù)表建立關(guān)系,再用full join命令把2張表的數(shù)據(jù)聯(lián)合起來(lái)。關(guān)鍵代碼如下所示:
SqlConnection con = new SqlConnection("Data Source= J-23\J23SQL2005;Initial Catalog=Testlkss;Integrated Security=True");//建立與“J-23\J23SQL2005”與服務(wù)器數(shù)據(jù)庫(kù)連接
SqlCommand cmd=new SqlCommand("client_insert",con);
cmd.CommandType=CommandType.StoredProcedure; //執(zhí)行存儲(chǔ)過(guò)程
本文,筆者對(duì)高校信息資源的數(shù)據(jù)整合進(jìn)行了分析和研究,主要探討了數(shù)據(jù)整合的相關(guān)策略和模式,并結(jié)合具體實(shí)例給出了關(guān)鍵技術(shù)的實(shí)現(xiàn)代碼,為高校進(jìn)行數(shù)據(jù)整合的設(shè)計(jì)提供了思路。