李朝奎,吳柏燕,高振記,馮志元,李擁
1.地理空間信息湖南省工程實驗室,湖南 湘潭 411201
2.中國環境科學研究院信息中心,北京 100012
水環境數據的多樣性使得其數據存儲存在異構性,包括數據的結構、格式等,這給流域水環境風險評估與預警在數據交換和處理上帶來諸多不便,因此流域水環境異構數據的共享已成為風險評估與預警系統需要迫切解決的難題之一。通常,解決異構數據的共享問題主要有三種模式:1)水環境數據交換,通過建立統一的水環境數據交換標準來制約并規范現存的各類分布系統;2)水環境數據互操作,建立開放式地理數據互操作規范(open GIS),對GIS系統互操作;3)水環境數據直接操作,在一個地理信息系統軟件中實現對其他軟件數據格式的直接訪問、存取和空間分析。這三種共享形式有一個共同的缺點,就是不能實現對同源異構數據源的動態讀寫[1]。
近年來,數據共享模式已經發展到了中間件[2-6]階段。中間件技術的誕生,屏蔽了底層的、復雜繁瑣的平臺細節,減少了應用開發的復雜性;提供了大批可復用的、構件化的服務;解決了分布式系統互操作、資源共享的問題。中間件與企業應用集成(enterprise application integration,EAI)理論[7]的發展有異曲同工之妙。筆者擬研究開發一種基于XML文檔的流域水環境風險評估與預警中間件,在異構數據中通過該中間件實現對水環境數據的語義轉換,達到無縫融合[8],并在此基礎上實現多源水環境數據的復合分析,最大程度地提高信息資源的利用率,同時節約地理信息應用系統建立的巨大成本。
關于中間件的描述,普遍接受的是國際數據組織(Internet Data Center,IDC)的定義:中間件是一種獨立的系統軟件或服務程序,分布式應用軟件借助該類軟件在不同的技術之間共享資源;中間件位于客戶機/服務器的操作系統之上,管理計算資源和網絡通信[9]。
中間件的作用是極大地緩解分布式應用開發、運行、管理中的一些固有的復雜問題[10]。
在流域水環境風險評估與預警系統的應用中,中間件技術提出了客戶機、中間件和服務器在內的三層及多層結構,能夠實現資源共享、功能共享,使得流域數據處理和跨平臺計算、多用戶流域數據同步處理、異構數據系統的互操作以及多級分布式系統協同工作等成為現實[11]。
按照IDC的分類標準[12],中間件可分為六類:1)終端仿真與屏幕轉換中間件(TSCTM)。2)數據庫中間件。適用于應用程序與數據源之間的互操作模型,客戶端使用面向數據庫的API(application programming interface),以提供直接訪問和更新基于服務器的數據源,數據源可以是關系型、非關系型和對象型,是所有中間件中應用最廣泛、技術最成熟的一種。3)遠程過程調用中間件。由于RPC(remote procedure call protocol)機制是同步方式,因而在工作時,要求客戶方和服務方均能正確工作才能很好地運行,有一方不能工作將導致RPC失敗。另外,由于大多數RPC機制很難建立點到點的關系,因而也很難用在面向對象的編程當中。4)消息中間件。其核心安裝在需要進行消息傳遞的系統上,在它們之間建立邏輯通道,由消息中間件實現消息發送。消息中間件可以支持同步方式和異步方式,實際上是一種點到點的機制,因而可以很好地適用于面向對象的編程方式。5)對象中間件。對象中間件提供了一個標準的構件框架,使不同廠家的軟件通過不同的地址空間、網絡和操作系統交互訪問。該構件的具體實現、位置及所依附的操作系統對客戶來說都是透明的。對象中間件技術的目標是為軟件用戶及開發者提供一種應用級的即插即用的互操作性軟件。6)基于對象請求代理的中間件。從管理和封裝的模式上看,對象請求代理與遠過程調用有些類似,不過對象請求代理可以包含比遠過程調用和消息中間件更復雜的信息,并且可以適用于非常結構化的或者非常關系型的數據。
2.1.1 預警系統的數據分析
預警系統中的數據現狀歸納起來可以分為基礎地理信息數據、污染源基本信息數據、污染源監測數據、污染物排放標準等。其中,基礎地理信息數據包括行政區劃、水系、交通、居民點信息;污染源基本信息數據包括排污口基本信息、污染源主要產品、污染源產品原輔材料、污染源生產情況、污染源廢水排放情況、污染源污染物信息、監測設備信息、污水處理設施信息等;污染源監測數據包括監測點監測數據、監測日企業生產臺賬、在線監測數據、廢水監測數據;污染物排放標準分為國家級、省級、市級標準,其區別在于監測項目達標閾值的不同。
基礎地理數據、污染源基本信息數據和污染源監測數據分別位于環境統計數據庫、污染源普查數據庫(污普數據庫)、總站污染源監測數據庫等不同類型的數據庫中。如環境統計數據庫位于Access數據庫、污普數據庫位于MySQL數據庫、總站污染源監測數據庫位于SQL Server數據庫,因而要在不同數據庫之間提取數據就需要分類提取。
不同數據庫中的數據,存在差異。如對于開業時間、地址、行政區代碼,在不同的數據庫中存在的字段代碼和數據類型都存在差異。由表1可見,字段“開業時間”,在總站污染源監測數據庫中字段代碼是“開業時間”、數據類型是“datetime”;在環境統計數據庫中字段代碼為“HJ1019”、數據類型為“DECIMAL(4)”;在污普數據庫中字段代碼為“X0111_1”、“X0111_2”和“X0111_3”的合成,數據類型分別為“decimal(4)”、“decimal(2)”和“decimal(2)”。字段“地址”,在總站污染源監測數據庫中字段代碼是“企業詳細地址”、數據類型是“varchar(100)”;在環境統計數據庫字段代碼為“HJ1018”、數據類型為“Text(60)”;在污普數據庫中字段代碼為“SHENG”、“SHI”和“XIAN”的合成,數據類型分別為“varchar(250)”、“varchar(250)”和“varchar(250)”。字段“行政區代碼”,在總站污染源監測數據庫中的字段代碼“行政區代碼”、數據類型為“char(6)”;在環境統計數據庫中的字段代碼為“HC101”、數據類型為“Text(6)”;在污普數據庫中字段代碼為“stat_unit_code”、數據類型為“varchar(20)”。由此可以看出,同一字段不僅在不同的數據庫中字段代碼各異,而且數據類型也各不相同。

表1 異構數據庫中的字段Table 1 The field in heterogeneous database
因此,在異構數據庫之間的字段代碼、數據類型存在差異的情況下,把異構數據庫中的信息提供給預警系統服務,需要一個異構數據庫與系統數據庫的中間轉換設備(即中間件)。在預警系統中,通過平臺系統數據庫的字段查詢異構數據庫中字段,不僅需要字段間的映射模板,而且在查詢數據返回系統時還需要值映射模板。
2.1.2 預警系統中間件的設計原理與流程圖
流域水環境風險評估與預警系統中間件是在語義層面對異構數據的轉換,是字段模型間的映射。允許用戶在轉換過程中重新構造數據,使得用戶可以根據其特定業務需求,添加字段信息,而不是單一的字段匹配,避免因語義要素不同而造成信息無法匹配的問題。
系統中間件的設計原理基于映射可以分為兩個方面(圖1):1)查詢前的映射,也就是將查詢命令通過映射文檔轉化成異構數據庫識別命令,這種映射解決了平臺數據庫與非平臺數據庫字段名稱不同(平臺數據庫中字段一和字段二分別對應于非平臺數據庫中的字段1和字段2)、字段融合(平臺數據庫中的字段四,對應于非平臺數據庫中的字段4與字段5的融合)及SQL語法的不同等問題;2)查詢后的映射,也就是對查詢結果進行映射,該類映射解決了平臺數據庫與非平臺數據庫數據格式、值不同(非平臺數據庫中的字段1和字段2,要分別轉換成平臺數據庫中字段一和字段二相應值的數據類型,以及非平臺數據庫中字段4和字段5融合后的值,轉換成平臺數據庫值的數據類型)等問題。

圖1 映射模型Fig.1 Mapping model
中間件在系統中應用的流程如圖2所示。在流域水環境風險評估與預警系統中,中間件對用戶發送過來的查詢語句進行解析,經過映射文檔的復雜繁瑣的解析過程,把用戶查詢語句分解為多條查詢語句;將這些語句傳輸給查詢分析處理模塊處理,在該模塊中,結合異構數據庫的數據結構信息的自身特性,將多個子查詢語句進一步解析成能在異構數據庫中進行識別、查詢的語句;最后把解析后的子查詢語句發送到對應的異構數據庫中,進行相應數據的查詢。查詢結果需要經過中間件的查詢處理模塊和結果集成模塊,把異構數據庫中的數據解析成標準數據庫格式數據,經過輸出模塊將數據輸出,結果反饋到數據集成平臺系統。

圖2 中間件的應用流程Fig.2 The flow chart of middle ware
該查詢過程貫穿于整個中間件的始終,使語義的映射、語句解析和值映射等功能得以實現。消除了流域水環境異構數據庫之間的異構性,同時實現了共享平臺對異構數據庫的統一管理。
2.1.3 預警系統中間件的關鍵模塊
2.1.3.1 映射規則模塊
在中間件中,預警系統數據庫與異構數據庫進行數據交換,需要異構數據庫之間的一個中間模板。
映射規則模塊位于預警系統數據庫中的字段與異構數據庫字段之間,按照語義的一致性進行映射,并生成映射規則添加到數據字典中,以便查詢時進行語義轉換。映射規則文檔主要解決字段與數據的異構性,異構性主要包括字段映射(異名同義)、字段融合(系統數據庫字段需要異構數據庫多個字段融合加以描述)、字段拆分(系統需要將某字段拆開才能描述異構數據庫中字段)、值映射(義同值不同)。
從對異構數據源(總站污染源監測系統、污普數據庫、環境統計數據庫等)的調研中發現,存在的異構性有字段映射(圖3)和字段融合(圖4)兩種。
字段映射包括同名同義、異名同義兩種(圖3)。字段映射規則的建立:系統平臺表中的字段“法人代碼”、“企業名稱”、“行政區代碼”、“行業代碼”、“規模代碼”、“地址”、“電話”、“傳真”、“郵政編碼”、“開業時間”分別對應于(非平臺)異構數據庫數據表中的字段“法人代碼”、“詳細名稱”、“行政區代碼”、“行業代碼”、“規模代碼”、“企業詳細地址”、“電話”、“傳真”、“郵政編碼”、“開業時間”等。其中同名同義的,如“法人代碼”、“企業名稱”、“行政區代碼”、“行業代碼”、“規模代碼”、“電話”、“傳真”、“郵政編碼”、“開業時間”。異名同義的,如系統平臺數據表中的“地址”對應于(非平臺)異構數據表中的“企業詳細地址”。把建立好的對應關系,添加到映射字典中,以備后續工作使用。


字段融合規則的建立(圖4):平臺數據表中的“開業時間”是由非平臺數據表中的“11.開業時間_年”和“11.開業時間_月”組合而成的。把這種融合字段的對應關系,也添加到映射字典中,以備后續工作使用。
XML Schema[13]是用 XML 來定義其文檔的模式,支持對結構和數據類型的定義,XML Schema越來越成為主流的模式語言。XML的優點是結構性和擴展性好[14]。以上的預警系統數據庫與異構數據庫中的字段根據語義映射的原則,生成一張為異構數據庫之間字段XML的映射模板[15-18]。
其字段映射的“異名同義”XML模板結構設計:

“異名同義”字段映射中,預警系統數據庫中的字段信息與異構數據庫中的字段信息建立一一對應關系。用戶在系統中輸入預警系統數據庫的關鍵字,想要得到與異構數據庫中語義一致的關鍵字信息,就需要知道該字段映射的模板。字段映射的模板結構,就包含了預警系統數據庫與異構數據庫之間的一一對應關系。既包含了平臺的表名和字段名(<NormTable Code="**"Name="表一"><NormField Code="##"Name="字段一">),也包含了異構數據庫的數據庫名、數據庫類型、表名和字段(<MappFieldDataBase="異構 1"DataBaseType="***"TableName="***"Ch_TableName="表1"Ch_MappFieldName="字段1">###</MappField>)。即平臺數據庫中“表一”里的一個“字段一”,對應于異構數據庫“異構1”中的“表1”里的“字段1”。選中預警系統數據庫中的“字段一”,就會找到與“字段一”語義上相同的“字段1”。從而消除了異構數據庫字段之間的異名同義的異構問題。
字段映射的“字段融合”XML模板結構設計:

“字段融合”映射中,表示了預警系統數據庫與異構數據庫中字段的對應關系為“一對多”的關系。用戶輸入一個關于系統平臺數據庫中的關鍵字,可以得到與異構數據庫中的兩個或多個字段融合后語義一致的信息。字段融合的模板構架,包含了預警系統數據庫與異構數據庫之間的一個一對多的關系。同時包含了預警系統數據庫的表名和字段(<NormTable Code="***"Name="表二"><NormField Code="***"Name="字段二">)信息,也包含了異構數據庫的數據庫信息、表名和多個字段(<MergeFieldDataBase="異構 2"DataBaseType="###"TableName="###"Ch_TableName="表 2"> 字段 2.1,字段 2.2,</MergeField>)信息,從而解決了預警系統數據庫中一個字段信息與異構數據庫中多個字段融合后的信息表達一個語義的問題。
由以上“字段映射”和“字段融合”生成的映射模板,能夠使得預警系統數據庫中的字段信息與異構數據庫中字段信息,根據語義一致的原則,建立相應的對應關系。
由于在映射模板中既有字段的對應映射也有數據類型之間的對應映射,所以值映射也使用該映射模板。預警系統查詢的數據,通過映射模板數據類型的轉換,可以解決預警系統數據庫從異構數據庫之間提取數據的困難。
2.1.3.2 查詢模塊
查詢是為了方便用戶通過查詢界面輸入想要的信息,經過后臺的一系列復雜的映射規則的轉換,最后得到用戶想要的信息,以供用戶作為決策的參考。因而,查詢模塊(圖5)也是必不可少的一個模塊。

圖5 查詢模塊Fig.5 Query module
在查詢模塊中,主要有查詢解析、查詢處理模塊兩個功能。1)查詢解析:也就是對查詢語句中字段的解析,把系統平臺數據庫中的標準字段解析成異構數據庫語義相同的字段的過程。這樣才可以得到與用戶的語義相一致的查詢結果。2)查詢處理模塊:將解析過字段信息的語句,進一步處理成異構數據庫能夠識別的查詢語句。系統平臺數據庫中的查詢語句,是不可以在異構數據庫中用相同查詢語句來查詢的,這就是異構數據庫之間的異構性。只有經過查詢處理模塊相應處理語句,才可以在異構數據庫中查詢到需求的信息。
查詢模塊流程:1)將系統平臺發出的系統數據庫所包含的字段信息,經過映射模板的相應字段映射,解析成異構數據庫可以識別字段信息;2)將系統平臺數據庫的查詢語句,轉換成相應異構數據庫能夠識別的查詢語句;3)經過字段值映射將在異構數據庫中的查詢結果,轉換成系統平臺數據庫中的數據格式;4)將得到的結果導入到系統平臺數據庫中。
圖5從查詢進度的角度展示了字段映射、查詢解析、數據庫查詢和結果的值映射的整個過程。從理論的角度,說明該中間件的設計是可行的、可以實現的。
該中間件采用Win32平臺操作系統,利用最新版本編程語言(Visual C 2010)及版本號(4.0)。軟件的使用環境是.net。軟件的開發環境(軟、硬件要求):1)支持的體系結構,x86和x64(WOW)。2)支持的操作系統,Microsoft Windows XP、Microsoft WindowsServer2003 Service Pack 2、Microsoft Windows Server 2008、Windows Vista Windows 7。3)硬件要求,最低要求1.6 GHz CPU,192 MB內存,1024×768顯示器,5400 RPM硬盤;建議配置2 GHz或更快的CPU,384 MB或更大的內存,1280×1024顯示器,7200 r/min或更快的硬盤;完全安裝需要100 MB可用磁盤空間。
中間件實現了預警系統數據庫與異構數據庫之間的語義映射,起到系統數據庫與分布式異構數據庫之間的橋梁作用。該中間件屏蔽了通信協議、交互模式、數據編碼、操作系統和編程語言等方面的異構性,實現了流域水環境評估與預警系統、總站污染源監測系統數據庫、污普數據庫和環境統計數據庫之間的資源共享。中間件的功能(圖6):1)數據庫的注冊,包括系統平臺數據庫的注冊和異構數據庫的注冊。即可以在注冊的數據庫之間,建立語義映射規則。2)映射規則,包括規則的建立和編輯。注冊的系統數據庫和異構數據庫,按照語義一致性的原則,進行映射規則的建立(圖7)。該中間件的編輯機制有映射模板的查看功能、添加映射規則、刪除映射某條映射規則等操作。3)查詢功能,借助XML實現語義映射、字段解析和語句處理等過程[19]。4)輸出功能,提供了XML文檔和Excel文檔格式輸出。最后,把查詢的結果導入到異構數據庫中,以備預警系統進行分析。5)查看注冊數據庫結構功能,可以通過XML文檔和txt文本查看注冊數據庫的結構信息。6)數據庫的配置功能。對于第一次用到的數據庫,需要在該模塊配置相關信息,才可以進一步的語義映射、映射規則建立和編輯、查詢等操作。

圖6 中間件模塊介紹Fig.6 Middle ware module

圖7 映射規則注冊Fig.7 Mapping rules for registration
上述中間件各功能實現了系統數據庫與異構數據庫之間的信息交流,解決了異構數據庫之間的語義不同的障礙。從而實現了流域水環境評估與預警平臺、總站污染源監測系統數據庫、污普數據庫和環境統計數據庫等之間的資源共享。
通過構建流域水環境風險評估與預警系統中間件,屏蔽了通信協議、交互模式、數據編碼、操作系統和編程語言等方面的差異,實現了分布式應用的正確交互。
預警系統中間件提供了數據庫注冊,并為注冊的數據庫建立對應的映射規則和規則的編輯。它屏蔽了異構數據庫之間的異構性和復雜性,可以無縫地集成異構數據庫中的所有屬性數據格式。該中間件的優勢在于,對于新的數據庫,只需在數據庫配置模塊加以配置,在映射規則模塊建立相應的映射規則,就可以得到預警系統數據庫與新數據庫之間的映射模板,可擴展性較好。
[1]李宗華.基于語義映射的空間數據轉換及其應用研究[J].地理空間信息,2007(5):1-3.
[2]王越,楊平利,楊梅,等.一種分布異構數據庫集成中間件的設計與實現[J].微電子學與計算機,2009,26(7):80-87.
[3]王志波,裘國永.基于XML的異構數據庫中間件研究[J].鄭州輕工業學院學報:自然科學版,2008,23(3):121-124.
[4]符春.中間件技術的現狀與其發展[J].軟件導刊,2009,8(9):7-8.
[5]張磊,夏士雄,牛強.基于本體的異構數據庫集成方法[J].計算機工程與設計,2007,28(14):3299-3301.
[6]康金春.中間件技術在空間數據共享中的應用[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多源數據無縫集成的方法[J].測繪工程,2003(6):11-13.
[9]樂嘉錦,郭瑞強.中間件的由來、現狀及我們的機遇[J].計算機應用與軟件,2001(11):1-4.
[10]魏峻.軟件中間件技術現狀與展望[J].新技術新工藝,2007(7):5-13.
[11]姜艷媛.空間數據交換中間件的研究與實現[D].鄭州:解放軍信息工程大學,2006.
[12] 張宏,佟玉軍.中間件分類及標準[J].標準傳遞,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]李蕓,費麗娟.基于XML的異構數據集成模型的研究[J].科技情報開發與經濟,2008,18(9):128-129.
[15]伍文平,江濤.基于XML的異構數據集成中間件研究[J].科學技術與工程,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]邱方亮,王潤孝,王東勃.基于XML和Web服務的異構數據集成研究與應用[J].組合機床與自動化加工技術,2006(8):107-109.?