李朝奎,吳柏燕,高振記,馮志元,李擁
1.地理空間信息湖南省工程實(shí)驗(yàn)室,湖南 湘潭 411201
2.中國(guó)環(huán)境科學(xué)研究院信息中心,北京 100012
水環(huán)境數(shù)據(jù)的多樣性使得其數(shù)據(jù)存儲(chǔ)存在異構(gòu)性,包括數(shù)據(jù)的結(jié)構(gòu)、格式等,這給流域水環(huán)境風(fēng)險(xiǎn)評(píng)估與預(yù)警在數(shù)據(jù)交換和處理上帶來諸多不便,因此流域水環(huán)境異構(gòu)數(shù)據(jù)的共享已成為風(fēng)險(xiǎn)評(píng)估與預(yù)警系統(tǒng)需要迫切解決的難題之一。通常,解決異構(gòu)數(shù)據(jù)的共享問題主要有三種模式:1)水環(huán)境數(shù)據(jù)交換,通過建立統(tǒng)一的水環(huán)境數(shù)據(jù)交換標(biāo)準(zhǔn)來制約并規(guī)范現(xiàn)存的各類分布系統(tǒng);2)水環(huán)境數(shù)據(jù)互操作,建立開放式地理數(shù)據(jù)互操作規(guī)范(open GIS),對(duì)GIS系統(tǒng)互操作;3)水環(huán)境數(shù)據(jù)直接操作,在一個(gè)地理信息系統(tǒng)軟件中實(shí)現(xiàn)對(duì)其他軟件數(shù)據(jù)格式的直接訪問、存取和空間分析。這三種共享形式有一個(gè)共同的缺點(diǎn),就是不能實(shí)現(xiàn)對(duì)同源異構(gòu)數(shù)據(jù)源的動(dòng)態(tài)讀寫[1]。
近年來,數(shù)據(jù)共享模式已經(jīng)發(fā)展到了中間件[2-6]階段。中間件技術(shù)的誕生,屏蔽了底層的、復(fù)雜繁瑣的平臺(tái)細(xì)節(jié),減少了應(yīng)用開發(fā)的復(fù)雜性;提供了大批可復(fù)用的、構(gòu)件化的服務(wù);解決了分布式系統(tǒng)互操作、資源共享的問題。中間件與企業(yè)應(yīng)用集成(enterprise application integration,EAI)理論[7]的發(fā)展有異曲同工之妙。筆者擬研究開發(fā)一種基于XML文檔的流域水環(huán)境風(fēng)險(xiǎn)評(píng)估與預(yù)警中間件,在異構(gòu)數(shù)據(jù)中通過該中間件實(shí)現(xiàn)對(duì)水環(huán)境數(shù)據(jù)的語義轉(zhuǎn)換,達(dá)到無縫融合[8],并在此基礎(chǔ)上實(shí)現(xiàn)多源水環(huán)境數(shù)據(jù)的復(fù)合分析,最大程度地提高信息資源的利用率,同時(shí)節(jié)約地理信息應(yīng)用系統(tǒng)建立的巨大成本。
關(guān)于中間件的描述,普遍接受的是國(guó)際數(shù)據(jù)組織(Internet Data Center,IDC)的定義:中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助該類軟件在不同的技術(shù)之間共享資源;中間件位于客戶機(jī)/服務(wù)器的操作系統(tǒng)之上,管理計(jì)算資源和網(wǎng)絡(luò)通信[9]。
中間件的作用是極大地緩解分布式應(yīng)用開發(fā)、運(yùn)行、管理中的一些固有的復(fù)雜問題[10]。
在流域水環(huán)境風(fēng)險(xiǎn)評(píng)估與預(yù)警系統(tǒng)的應(yīng)用中,中間件技術(shù)提出了客戶機(jī)、中間件和服務(wù)器在內(nèi)的三層及多層結(jié)構(gòu),能夠?qū)崿F(xiàn)資源共享、功能共享,使得流域數(shù)據(jù)處理和跨平臺(tái)計(jì)算、多用戶流域數(shù)據(jù)同步處理、異構(gòu)數(shù)據(jù)系統(tǒng)的互操作以及多級(jí)分布式系統(tǒng)協(xié)同工作等成為現(xiàn)實(shí)[11]。
按照IDC的分類標(biāo)準(zhǔn)[12],中間件可分為六類:1)終端仿真與屏幕轉(zhuǎn)換中間件(TSCTM)。2)數(shù)據(jù)庫中間件。適用于應(yīng)用程序與數(shù)據(jù)源之間的互操作模型,客戶端使用面向數(shù)據(jù)庫的API(application programming interface),以提供直接訪問和更新基于服務(wù)器的數(shù)據(jù)源,數(shù)據(jù)源可以是關(guān)系型、非關(guān)系型和對(duì)象型,是所有中間件中應(yīng)用最廣泛、技術(shù)最成熟的一種。3)遠(yuǎn)程過程調(diào)用中間件。由于RPC(remote procedure call protocol)機(jī)制是同步方式,因而在工作時(shí),要求客戶方和服務(wù)方均能正確工作才能很好地運(yùn)行,有一方不能工作將導(dǎo)致RPC失敗。另外,由于大多數(shù)RPC機(jī)制很難建立點(diǎn)到點(diǎn)的關(guān)系,因而也很難用在面向?qū)ο蟮木幊坍?dāng)中。4)消息中間件。其核心安裝在需要進(jìn)行消息傳遞的系統(tǒng)上,在它們之間建立邏輯通道,由消息中間件實(shí)現(xiàn)消息發(fā)送。消息中間件可以支持同步方式和異步方式,實(shí)際上是一種點(diǎn)到點(diǎn)的機(jī)制,因而可以很好地適用于面向?qū)ο蟮木幊谭绞健?)對(duì)象中間件。對(duì)象中間件提供了一個(gè)標(biāo)準(zhǔn)的構(gòu)件框架,使不同廠家的軟件通過不同的地址空間、網(wǎng)絡(luò)和操作系統(tǒng)交互訪問。該構(gòu)件的具體實(shí)現(xiàn)、位置及所依附的操作系統(tǒng)對(duì)客戶來說都是透明的。對(duì)象中間件技術(shù)的目標(biāo)是為軟件用戶及開發(fā)者提供一種應(yīng)用級(jí)的即插即用的互操作性軟件。6)基于對(duì)象請(qǐng)求代理的中間件。從管理和封裝的模式上看,對(duì)象請(qǐng)求代理與遠(yuǎn)過程調(diào)用有些類似,不過對(duì)象請(qǐng)求代理可以包含比遠(yuǎn)過程調(diào)用和消息中間件更復(fù)雜的信息,并且可以適用于非常結(jié)構(gòu)化的或者非常關(guān)系型的數(shù)據(jù)。
2.1.1 預(yù)警系統(tǒng)的數(shù)據(jù)分析
預(yù)警系統(tǒng)中的數(shù)據(jù)現(xiàn)狀歸納起來可以分為基礎(chǔ)地理信息數(shù)據(jù)、污染源基本信息數(shù)據(jù)、污染源監(jiān)測(cè)數(shù)據(jù)、污染物排放標(biāo)準(zhǔn)等。其中,基礎(chǔ)地理信息數(shù)據(jù)包括行政區(qū)劃、水系、交通、居民點(diǎn)信息;污染源基本信息數(shù)據(jù)包括排污口基本信息、污染源主要產(chǎn)品、污染源產(chǎn)品原輔材料、污染源生產(chǎn)情況、污染源廢水排放情況、污染源污染物信息、監(jiān)測(cè)設(shè)備信息、污水處理設(shè)施信息等;污染源監(jiān)測(cè)數(shù)據(jù)包括監(jiān)測(cè)點(diǎn)監(jiān)測(cè)數(shù)據(jù)、監(jiān)測(cè)日企業(yè)生產(chǎn)臺(tái)賬、在線監(jiān)測(cè)數(shù)據(jù)、廢水監(jiān)測(cè)數(shù)據(jù);污染物排放標(biāo)準(zhǔn)分為國(guó)家級(jí)、省級(jí)、市級(jí)標(biāo)準(zhǔn),其區(qū)別在于監(jiān)測(cè)項(xiàng)目達(dá)標(biāo)閾值的不同。
基礎(chǔ)地理數(shù)據(jù)、污染源基本信息數(shù)據(jù)和污染源監(jiān)測(cè)數(shù)據(jù)分別位于環(huán)境統(tǒng)計(jì)數(shù)據(jù)庫、污染源普查數(shù)據(jù)庫(污普數(shù)據(jù)庫)、總站污染源監(jiān)測(cè)數(shù)據(jù)庫等不同類型的數(shù)據(jù)庫中。如環(huán)境統(tǒng)計(jì)數(shù)據(jù)庫位于Access數(shù)據(jù)庫、污普數(shù)據(jù)庫位于MySQL數(shù)據(jù)庫、總站污染源監(jiān)測(cè)數(shù)據(jù)庫位于SQL Server數(shù)據(jù)庫,因而要在不同數(shù)據(jù)庫之間提取數(shù)據(jù)就需要分類提取。
不同數(shù)據(jù)庫中的數(shù)據(jù),存在差異。如對(duì)于開業(yè)時(shí)間、地址、行政區(qū)代碼,在不同的數(shù)據(jù)庫中存在的字段代碼和數(shù)據(jù)類型都存在差異。由表1可見,字段“開業(yè)時(shí)間”,在總站污染源監(jiān)測(cè)數(shù)據(jù)庫中字段代碼是“開業(yè)時(shí)間”、數(shù)據(jù)類型是“datetime”;在環(huán)境統(tǒng)計(jì)數(shù)據(jù)庫中字段代碼為“HJ1019”、數(shù)據(jù)類型為“DECIMAL(4)”;在污普數(shù)據(jù)庫中字段代碼為“X0111_1”、“X0111_2”和“X0111_3”的合成,數(shù)據(jù)類型分別為“decimal(4)”、“decimal(2)”和“decimal(2)”。字段“地址”,在總站污染源監(jiān)測(cè)數(shù)據(jù)庫中字段代碼是“企業(yè)詳細(xì)地址”、數(shù)據(jù)類型是“varchar(100)”;在環(huán)境統(tǒng)計(jì)數(shù)據(jù)庫字段代碼為“HJ1018”、數(shù)據(jù)類型為“Text(60)”;在污普數(shù)據(jù)庫中字段代碼為“SHENG”、“SHI”和“XIAN”的合成,數(shù)據(jù)類型分別為“varchar(250)”、“varchar(250)”和“varchar(250)”。字段“行政區(qū)代碼”,在總站污染源監(jiān)測(cè)數(shù)據(jù)庫中的字段代碼“行政區(qū)代碼”、數(shù)據(jù)類型為“char(6)”;在環(huán)境統(tǒng)計(jì)數(shù)據(jù)庫中的字段代碼為“HC101”、數(shù)據(jù)類型為“Text(6)”;在污普數(shù)據(jù)庫中字段代碼為“stat_unit_code”、數(shù)據(jù)類型為“varchar(20)”。由此可以看出,同一字段不僅在不同的數(shù)據(jù)庫中字段代碼各異,而且數(shù)據(jù)類型也各不相同。
表1 異構(gòu)數(shù)據(jù)庫中的字段Table 1 The field in heterogeneous database
因此,在異構(gòu)數(shù)據(jù)庫之間的字段代碼、數(shù)據(jù)類型存在差異的情況下,把異構(gòu)數(shù)據(jù)庫中的信息提供給預(yù)警系統(tǒng)服務(wù),需要一個(gè)異構(gòu)數(shù)據(jù)庫與系統(tǒng)數(shù)據(jù)庫的中間轉(zhuǎn)換設(shè)備(即中間件)。在預(yù)警系統(tǒng)中,通過平臺(tái)系統(tǒng)數(shù)據(jù)庫的字段查詢異構(gòu)數(shù)據(jù)庫中字段,不僅需要字段間的映射模板,而且在查詢數(shù)據(jù)返回系統(tǒng)時(shí)還需要值映射模板。
2.1.2 預(yù)警系統(tǒng)中間件的設(shè)計(jì)原理與流程圖
流域水環(huán)境風(fēng)險(xiǎn)評(píng)估與預(yù)警系統(tǒng)中間件是在語義層面對(duì)異構(gòu)數(shù)據(jù)的轉(zhuǎn)換,是字段模型間的映射。允許用戶在轉(zhuǎn)換過程中重新構(gòu)造數(shù)據(jù),使得用戶可以根據(jù)其特定業(yè)務(wù)需求,添加字段信息,而不是單一的字段匹配,避免因語義要素不同而造成信息無法匹配的問題。
系統(tǒng)中間件的設(shè)計(jì)原理基于映射可以分為兩個(gè)方面(圖1):1)查詢前的映射,也就是將查詢命令通過映射文檔轉(zhuǎn)化成異構(gòu)數(shù)據(jù)庫識(shí)別命令,這種映射解決了平臺(tái)數(shù)據(jù)庫與非平臺(tái)數(shù)據(jù)庫字段名稱不同(平臺(tái)數(shù)據(jù)庫中字段一和字段二分別對(duì)應(yīng)于非平臺(tái)數(shù)據(jù)庫中的字段1和字段2)、字段融合(平臺(tái)數(shù)據(jù)庫中的字段四,對(duì)應(yīng)于非平臺(tái)數(shù)據(jù)庫中的字段4與字段5的融合)及SQL語法的不同等問題;2)查詢后的映射,也就是對(duì)查詢結(jié)果進(jìn)行映射,該類映射解決了平臺(tái)數(shù)據(jù)庫與非平臺(tái)數(shù)據(jù)庫數(shù)據(jù)格式、值不同(非平臺(tái)數(shù)據(jù)庫中的字段1和字段2,要分別轉(zhuǎn)換成平臺(tái)數(shù)據(jù)庫中字段一和字段二相應(yīng)值的數(shù)據(jù)類型,以及非平臺(tái)數(shù)據(jù)庫中字段4和字段5融合后的值,轉(zhuǎn)換成平臺(tái)數(shù)據(jù)庫值的數(shù)據(jù)類型)等問題。
圖1 映射模型Fig.1 Mapping model
中間件在系統(tǒng)中應(yīng)用的流程如圖2所示。在流域水環(huán)境風(fēng)險(xiǎn)評(píng)估與預(yù)警系統(tǒng)中,中間件對(duì)用戶發(fā)送過來的查詢語句進(jìn)行解析,經(jīng)過映射文檔的復(fù)雜繁瑣的解析過程,把用戶查詢語句分解為多條查詢語句;將這些語句傳輸給查詢分析處理模塊處理,在該模塊中,結(jié)合異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)信息的自身特性,將多個(gè)子查詢語句進(jìn)一步解析成能在異構(gòu)數(shù)據(jù)庫中進(jìn)行識(shí)別、查詢的語句;最后把解析后的子查詢語句發(fā)送到對(duì)應(yīng)的異構(gòu)數(shù)據(jù)庫中,進(jìn)行相應(yīng)數(shù)據(jù)的查詢。查詢結(jié)果需要經(jīng)過中間件的查詢處理模塊和結(jié)果集成模塊,把異構(gòu)數(shù)據(jù)庫中的數(shù)據(jù)解析成標(biāo)準(zhǔn)數(shù)據(jù)庫格式數(shù)據(jù),經(jīng)過輸出模塊將數(shù)據(jù)輸出,結(jié)果反饋到數(shù)據(jù)集成平臺(tái)系統(tǒng)。
圖2 中間件的應(yīng)用流程Fig.2 The flow chart of middle ware
該查詢過程貫穿于整個(gè)中間件的始終,使語義的映射、語句解析和值映射等功能得以實(shí)現(xiàn)。消除了流域水環(huán)境異構(gòu)數(shù)據(jù)庫之間的異構(gòu)性,同時(shí)實(shí)現(xiàn)了共享平臺(tái)對(duì)異構(gòu)數(shù)據(jù)庫的統(tǒng)一管理。
2.1.3 預(yù)警系統(tǒng)中間件的關(guān)鍵模塊
2.1.3.1 映射規(guī)則模塊
在中間件中,預(yù)警系統(tǒng)數(shù)據(jù)庫與異構(gòu)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交換,需要異構(gòu)數(shù)據(jù)庫之間的一個(gè)中間模板。
映射規(guī)則模塊位于預(yù)警系統(tǒng)數(shù)據(jù)庫中的字段與異構(gòu)數(shù)據(jù)庫字段之間,按照語義的一致性進(jìn)行映射,并生成映射規(guī)則添加到數(shù)據(jù)字典中,以便查詢時(shí)進(jìn)行語義轉(zhuǎn)換。映射規(guī)則文檔主要解決字段與數(shù)據(jù)的異構(gòu)性,異構(gòu)性主要包括字段映射(異名同義)、字段融合(系統(tǒng)數(shù)據(jù)庫字段需要異構(gòu)數(shù)據(jù)庫多個(gè)字段融合加以描述)、字段拆分(系統(tǒng)需要將某字段拆開才能描述異構(gòu)數(shù)據(jù)庫中字段)、值映射(義同值不同)。
從對(duì)異構(gòu)數(shù)據(jù)源(總站污染源監(jiān)測(cè)系統(tǒng)、污普數(shù)據(jù)庫、環(huán)境統(tǒng)計(jì)數(shù)據(jù)庫等)的調(diào)研中發(fā)現(xiàn),存在的異構(gòu)性有字段映射(圖3)和字段融合(圖4)兩種。
字段映射包括同名同義、異名同義兩種(圖3)。字段映射規(guī)則的建立:系統(tǒng)平臺(tái)表中的字段“法人代碼”、“企業(yè)名稱”、“行政區(qū)代碼”、“行業(yè)代碼”、“規(guī)模代碼”、“地址”、“電話”、“傳真”、“郵政編碼”、“開業(yè)時(shí)間”分別對(duì)應(yīng)于(非平臺(tái))異構(gòu)數(shù)據(jù)庫數(shù)據(jù)表中的字段“法人代碼”、“詳細(xì)名稱”、“行政區(qū)代碼”、“行業(yè)代碼”、“規(guī)模代碼”、“企業(yè)詳細(xì)地址”、“電話”、“傳真”、“郵政編碼”、“開業(yè)時(shí)間”等。其中同名同義的,如“法人代碼”、“企業(yè)名稱”、“行政區(qū)代碼”、“行業(yè)代碼”、“規(guī)模代碼”、“電話”、“傳真”、“郵政編碼”、“開業(yè)時(shí)間”。異名同義的,如系統(tǒng)平臺(tái)數(shù)據(jù)表中的“地址”對(duì)應(yīng)于(非平臺(tái))異構(gòu)數(shù)據(jù)表中的“企業(yè)詳細(xì)地址”。把建立好的對(duì)應(yīng)關(guān)系,添加到映射字典中,以備后續(xù)工作使用。
字段融合規(guī)則的建立(圖4):平臺(tái)數(shù)據(jù)表中的“開業(yè)時(shí)間”是由非平臺(tái)數(shù)據(jù)表中的“11.開業(yè)時(shí)間_年”和“11.開業(yè)時(shí)間_月”組合而成的。把這種融合字段的對(duì)應(yīng)關(guān)系,也添加到映射字典中,以備后續(xù)工作使用。
XML Schema[13]是用 XML 來定義其文檔的模式,支持對(duì)結(jié)構(gòu)和數(shù)據(jù)類型的定義,XML Schema越來越成為主流的模式語言。XML的優(yōu)點(diǎn)是結(jié)構(gòu)性和擴(kuò)展性好[14]。以上的預(yù)警系統(tǒng)數(shù)據(jù)庫與異構(gòu)數(shù)據(jù)庫中的字段根據(jù)語義映射的原則,生成一張為異構(gòu)數(shù)據(jù)庫之間字段XML的映射模板[15-18]。
其字段映射的“異名同義”XML模板結(jié)構(gòu)設(shè)計(jì):
“異名同義”字段映射中,預(yù)警系統(tǒng)數(shù)據(jù)庫中的字段信息與異構(gòu)數(shù)據(jù)庫中的字段信息建立一一對(duì)應(yīng)關(guān)系。用戶在系統(tǒng)中輸入預(yù)警系統(tǒng)數(shù)據(jù)庫的關(guān)鍵字,想要得到與異構(gòu)數(shù)據(jù)庫中語義一致的關(guān)鍵字信息,就需要知道該字段映射的模板。字段映射的模板結(jié)構(gòu),就包含了預(yù)警系統(tǒng)數(shù)據(jù)庫與異構(gòu)數(shù)據(jù)庫之間的一一對(duì)應(yīng)關(guān)系。既包含了平臺(tái)的表名和字段名(<NormTable Code="**"Name="表一"><NormField Code="##"Name="字段一">),也包含了異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)庫名、數(shù)據(jù)庫類型、表名和字段(<MappFieldDataBase="異構(gòu) 1"DataBaseType="***"TableName="***"Ch_TableName="表1"Ch_MappFieldName="字段1">###</MappField>)。即平臺(tái)數(shù)據(jù)庫中“表一”里的一個(gè)“字段一”,對(duì)應(yīng)于異構(gòu)數(shù)據(jù)庫“異構(gòu)1”中的“表1”里的“字段1”。選中預(yù)警系統(tǒng)數(shù)據(jù)庫中的“字段一”,就會(huì)找到與“字段一”語義上相同的“字段1”。從而消除了異構(gòu)數(shù)據(jù)庫字段之間的異名同義的異構(gòu)問題。
字段映射的“字段融合”XML模板結(jié)構(gòu)設(shè)計(jì):
“字段融合”映射中,表示了預(yù)警系統(tǒng)數(shù)據(jù)庫與異構(gòu)數(shù)據(jù)庫中字段的對(duì)應(yīng)關(guān)系為“一對(duì)多”的關(guān)系。用戶輸入一個(gè)關(guān)于系統(tǒng)平臺(tái)數(shù)據(jù)庫中的關(guān)鍵字,可以得到與異構(gòu)數(shù)據(jù)庫中的兩個(gè)或多個(gè)字段融合后語義一致的信息。字段融合的模板構(gòu)架,包含了預(yù)警系統(tǒng)數(shù)據(jù)庫與異構(gòu)數(shù)據(jù)庫之間的一個(gè)一對(duì)多的關(guān)系。同時(shí)包含了預(yù)警系統(tǒng)數(shù)據(jù)庫的表名和字段(<NormTable Code="***"Name="表二"><NormField Code="***"Name="字段二">)信息,也包含了異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)庫信息、表名和多個(gè)字段(<MergeFieldDataBase="異構(gòu) 2"DataBaseType="###"TableName="###"Ch_TableName="表 2"> 字段 2.1,字段 2.2,</MergeField>)信息,從而解決了預(yù)警系統(tǒng)數(shù)據(jù)庫中一個(gè)字段信息與異構(gòu)數(shù)據(jù)庫中多個(gè)字段融合后的信息表達(dá)一個(gè)語義的問題。
由以上“字段映射”和“字段融合”生成的映射模板,能夠使得預(yù)警系統(tǒng)數(shù)據(jù)庫中的字段信息與異構(gòu)數(shù)據(jù)庫中字段信息,根據(jù)語義一致的原則,建立相應(yīng)的對(duì)應(yīng)關(guān)系。
由于在映射模板中既有字段的對(duì)應(yīng)映射也有數(shù)據(jù)類型之間的對(duì)應(yīng)映射,所以值映射也使用該映射模板。預(yù)警系統(tǒng)查詢的數(shù)據(jù),通過映射模板數(shù)據(jù)類型的轉(zhuǎn)換,可以解決預(yù)警系統(tǒng)數(shù)據(jù)庫從異構(gòu)數(shù)據(jù)庫之間提取數(shù)據(jù)的困難。
2.1.3.2 查詢模塊
查詢是為了方便用戶通過查詢界面輸入想要的信息,經(jīng)過后臺(tái)的一系列復(fù)雜的映射規(guī)則的轉(zhuǎn)換,最后得到用戶想要的信息,以供用戶作為決策的參考。因而,查詢模塊(圖5)也是必不可少的一個(gè)模塊。
圖5 查詢模塊Fig.5 Query module
在查詢模塊中,主要有查詢解析、查詢處理模塊兩個(gè)功能。1)查詢解析:也就是對(duì)查詢語句中字段的解析,把系統(tǒng)平臺(tái)數(shù)據(jù)庫中的標(biāo)準(zhǔn)字段解析成異構(gòu)數(shù)據(jù)庫語義相同的字段的過程。這樣才可以得到與用戶的語義相一致的查詢結(jié)果。2)查詢處理模塊:將解析過字段信息的語句,進(jìn)一步處理成異構(gòu)數(shù)據(jù)庫能夠識(shí)別的查詢語句。系統(tǒng)平臺(tái)數(shù)據(jù)庫中的查詢語句,是不可以在異構(gòu)數(shù)據(jù)庫中用相同查詢語句來查詢的,這就是異構(gòu)數(shù)據(jù)庫之間的異構(gòu)性。只有經(jīng)過查詢處理模塊相應(yīng)處理語句,才可以在異構(gòu)數(shù)據(jù)庫中查詢到需求的信息。
查詢模塊流程:1)將系統(tǒng)平臺(tái)發(fā)出的系統(tǒng)數(shù)據(jù)庫所包含的字段信息,經(jīng)過映射模板的相應(yīng)字段映射,解析成異構(gòu)數(shù)據(jù)庫可以識(shí)別字段信息;2)將系統(tǒng)平臺(tái)數(shù)據(jù)庫的查詢語句,轉(zhuǎn)換成相應(yīng)異構(gòu)數(shù)據(jù)庫能夠識(shí)別的查詢語句;3)經(jīng)過字段值映射將在異構(gòu)數(shù)據(jù)庫中的查詢結(jié)果,轉(zhuǎn)換成系統(tǒng)平臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)格式;4)將得到的結(jié)果導(dǎo)入到系統(tǒng)平臺(tái)數(shù)據(jù)庫中。
圖5從查詢進(jìn)度的角度展示了字段映射、查詢解析、數(shù)據(jù)庫查詢和結(jié)果的值映射的整個(gè)過程。從理論的角度,說明該中間件的設(shè)計(jì)是可行的、可以實(shí)現(xiàn)的。
該中間件采用Win32平臺(tái)操作系統(tǒng),利用最新版本編程語言(Visual C 2010)及版本號(hào)(4.0)。軟件的使用環(huán)境是.net。軟件的開發(fā)環(huán)境(軟、硬件要求):1)支持的體系結(jié)構(gòu),x86和x64(WOW)。2)支持的操作系統(tǒng),Microsoft Windows XP、Microsoft WindowsServer2003 Service Pack 2、Microsoft Windows Server 2008、Windows Vista Windows 7。3)硬件要求,最低要求1.6 GHz CPU,192 MB內(nèi)存,1024×768顯示器,5400 RPM硬盤;建議配置2 GHz或更快的CPU,384 MB或更大的內(nèi)存,1280×1024顯示器,7200 r/min或更快的硬盤;完全安裝需要100 MB可用磁盤空間。
中間件實(shí)現(xiàn)了預(yù)警系統(tǒng)數(shù)據(jù)庫與異構(gòu)數(shù)據(jù)庫之間的語義映射,起到系統(tǒng)數(shù)據(jù)庫與分布式異構(gòu)數(shù)據(jù)庫之間的橋梁作用。該中間件屏蔽了通信協(xié)議、交互模式、數(shù)據(jù)編碼、操作系統(tǒng)和編程語言等方面的異構(gòu)性,實(shí)現(xiàn)了流域水環(huán)境評(píng)估與預(yù)警系統(tǒng)、總站污染源監(jiān)測(cè)系統(tǒng)數(shù)據(jù)庫、污普數(shù)據(jù)庫和環(huán)境統(tǒng)計(jì)數(shù)據(jù)庫之間的資源共享。中間件的功能(圖6):1)數(shù)據(jù)庫的注冊(cè),包括系統(tǒng)平臺(tái)數(shù)據(jù)庫的注冊(cè)和異構(gòu)數(shù)據(jù)庫的注冊(cè)。即可以在注冊(cè)的數(shù)據(jù)庫之間,建立語義映射規(guī)則。2)映射規(guī)則,包括規(guī)則的建立和編輯。注冊(cè)的系統(tǒng)數(shù)據(jù)庫和異構(gòu)數(shù)據(jù)庫,按照語義一致性的原則,進(jìn)行映射規(guī)則的建立(圖7)。該中間件的編輯機(jī)制有映射模板的查看功能、添加映射規(guī)則、刪除映射某條映射規(guī)則等操作。3)查詢功能,借助XML實(shí)現(xiàn)語義映射、字段解析和語句處理等過程[19]。4)輸出功能,提供了XML文檔和Excel文檔格式輸出。最后,把查詢的結(jié)果導(dǎo)入到異構(gòu)數(shù)據(jù)庫中,以備預(yù)警系統(tǒng)進(jìn)行分析。5)查看注冊(cè)數(shù)據(jù)庫結(jié)構(gòu)功能,可以通過XML文檔和txt文本查看注冊(cè)數(shù)據(jù)庫的結(jié)構(gòu)信息。6)數(shù)據(jù)庫的配置功能。對(duì)于第一次用到的數(shù)據(jù)庫,需要在該模塊配置相關(guān)信息,才可以進(jìn)一步的語義映射、映射規(guī)則建立和編輯、查詢等操作。
圖6 中間件模塊介紹Fig.6 Middle ware module
圖7 映射規(guī)則注冊(cè)Fig.7 Mapping rules for registration
上述中間件各功能實(shí)現(xiàn)了系統(tǒng)數(shù)據(jù)庫與異構(gòu)數(shù)據(jù)庫之間的信息交流,解決了異構(gòu)數(shù)據(jù)庫之間的語義不同的障礙。從而實(shí)現(xiàn)了流域水環(huán)境評(píng)估與預(yù)警平臺(tái)、總站污染源監(jiān)測(cè)系統(tǒng)數(shù)據(jù)庫、污普數(shù)據(jù)庫和環(huán)境統(tǒng)計(jì)數(shù)據(jù)庫等之間的資源共享。
通過構(gòu)建流域水環(huán)境風(fēng)險(xiǎn)評(píng)估與預(yù)警系統(tǒng)中間件,屏蔽了通信協(xié)議、交互模式、數(shù)據(jù)編碼、操作系統(tǒng)和編程語言等方面的差異,實(shí)現(xiàn)了分布式應(yīng)用的正確交互。
預(yù)警系統(tǒng)中間件提供了數(shù)據(jù)庫注冊(cè),并為注冊(cè)的數(shù)據(jù)庫建立對(duì)應(yīng)的映射規(guī)則和規(guī)則的編輯。它屏蔽了異構(gòu)數(shù)據(jù)庫之間的異構(gòu)性和復(fù)雜性,可以無縫地集成異構(gòu)數(shù)據(jù)庫中的所有屬性數(shù)據(jù)格式。該中間件的優(yōu)勢(shì)在于,對(duì)于新的數(shù)據(jù)庫,只需在數(shù)據(jù)庫配置模塊加以配置,在映射規(guī)則模塊建立相應(yīng)的映射規(guī)則,就可以得到預(yù)警系統(tǒng)數(shù)據(jù)庫與新數(shù)據(jù)庫之間的映射模板,可擴(kuò)展性較好。
[1]李宗華.基于語義映射的空間數(shù)據(jù)轉(zhuǎn)換及其應(yīng)用研究[J].地理空間信息,2007(5):1-3.
[2]王越,楊平利,楊梅,等.一種分布異構(gòu)數(shù)據(jù)庫集成中間件的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2009,26(7):80-87.
[3]王志波,裘國(guó)永.基于XML的異構(gòu)數(shù)據(jù)庫中間件研究[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào):自然科學(xué)版,2008,23(3):121-124.
[4]符春.中間件技術(shù)的現(xiàn)狀與其發(fā)展[J].軟件導(dǎo)刊,2009,8(9):7-8.
[5]張磊,夏士雄,牛強(qiáng).基于本體的異構(gòu)數(shù)據(jù)庫集成方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(14):3299-3301.
[6]康金春.中間件技術(shù)在空間數(shù)據(jù)共享中的應(yīng)用[J].地理空間信息,2009,7(5):35-37.
[7]GOSLIGA I S P V,JANSEN M I H.A Bayesian network for combat identification[J].RTO-MP-IST-040,2004(3):1-11.
[8]王卉.一種解決GIS多源數(shù)據(jù)無縫集成的方法[J].測(cè)繪工程,2003(6):11-13.
[9]樂嘉錦,郭瑞強(qiáng).中間件的由來、現(xiàn)狀及我們的機(jī)遇[J].計(jì)算機(jī)應(yīng)用與軟件,2001(11):1-4.
[10]魏峻.軟件中間件技術(shù)現(xiàn)狀與展望[J].新技術(shù)新工藝,2007(7):5-13.
[11]姜艷媛.空間數(shù)據(jù)交換中間件的研究與實(shí)現(xiàn)[D].鄭州:解放軍信息工程大學(xué),2006.
[12] 張宏,佟玉軍.中間件分類及標(biāo)準(zhǔn)[J].標(biāo)準(zhǔn)傳遞,2005(1):20-21.
[13] THOMPSON H S,BEECH D,MALONEY M.XML Schema Part1:structures second edition [EB/OL]. W3C Recommendation.(2011-06-28)[2012-03-28].http://www.w3.org/TR/xmlschema-1/.
[14]李蕓,費(fèi)麗娟.基于XML的異構(gòu)數(shù)據(jù)集成模型的研究[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2008,18(9):128-129.
[15]伍文平,江濤.基于XML的異構(gòu)數(shù)據(jù)集成中間件研究[J].科學(xué)技術(shù)與工程,2009,9(13):3870-3873.
[16]WANG G R,TANG N,YU Y X,et al.A data placement strategy for parallel XML databases[J].Journal of Software,2006,17(4):770-781.
[17]RONALD B.XML-DBMS:middle ware for transferring data between XML documents and relational databases[EB/OL].2006[2012-01-05].http://www.rpbourret.com/xmldbms/index.htm.
[18] MICHAEL C,DANIELA F,ZACHARY I,et al.XPERANTO:publishing object-relational data as XML:proceedings of workshop on the web and databases,May,2000[C].New York:ACM Press,2000:105-110.
[19]邱方亮,王潤(rùn)孝,王東勃.基于XML和Web服務(wù)的異構(gòu)數(shù)據(jù)集成研究與應(yīng)用[J].組合機(jī)床與自動(dòng)化加工技術(shù),2006(8):107-109.?
環(huán)境工程技術(shù)學(xué)報(bào)2012年5期