楊 辰 ,劉 展,魏合龍,李 曼,郭加樹,孫記紅,李益文
(1.中國地質科學院巖溶地質研究所/國土資源部、廣西壯族自治區巖溶動力學重點實驗室,廣西 桂林 541004;2.中國石油大學(華東),山東 青島 266580;3.青島海洋地質研究所,山東 青島 266071)
在全球陸地資源日益緊張和環境不斷惡化的今天,海洋成為沿海國家經濟發展的重要支柱[1],因此對海洋地質調查數據產生大量的應用需求。由于工作分區部署,海洋地質調查數據由各個調查單位獨自管理,數據存儲在傳統的關系數據庫中,這就導致了海洋地質調查數據存在數據結構不一致、數據關聯性小、信息孤島、數據難以共享、利用率低等問題[2],如何對獲取的數據進行有效的組織并提供高效的數據服務,是信息化建設需要解決的關鍵問題。目前,國外面向對象的數據模型應用已趨于成熟,最典型的是 POSC(Petrotechnical Open Standards Consortium)組織的 Epicentre數據模型,國內宋瑋等人[3]進行了面向對象時空數據模型的研究;徐翠玲等人[4]設計了面向對象的數字地質圖數據模型。海洋地質調查領域戴勤奮等[5]提出了區域海洋地質調查數據庫結構模型,馮斌等人[6]設計的海洋地質調查數據庫管理系統,孫記紅等人[7]設計了海洋油氣勘探鉆錄測數據庫平臺,并構建了海洋油氣勘探鉆錄測數據庫,但這些都是基于關系數據模型的,數據的管理應用僅局限于單個數據庫,數據的關聯性低、共享差,還沒有統一的數據集成服務系統。
本文通過研究 Epicentre數據模型,采用面向對象的方法設計統一數據模型,建立海洋地質調查數據服務平臺,集成各海洋地質調查數據庫數據,實現海洋地質調查數據的共享服務。
海洋地質調查數據分布存儲在各調查單位的關系數據庫中,由各單位獨立管理使用,設計面向對象的統一邏輯實現海洋地質調查數據的集成。為方便專業人員獲取數據,設計業務模型,為用戶提供以業務活動為單元的數據,并提供相應的應用方法?;谝陨戏治?如圖1所示,本文提出了“三層”體系結構的海洋地質調查數據服務平臺的設計框架。

圖1 海洋地質調查數據服務平臺體系架構Fig.1 The system architecture of marine geological survey data services platform
基礎數據服務層以單個海洋地質調查數據庫為基本單位,建立海洋地質調查數據訪問接口,以服務的方式對外發布,在集成管理層統一管理。
基礎數據為存儲在各調查單位的海洋地質調查數據庫數據。海洋地質調查是海洋沉積、海洋地貌和海底構造調查的統稱。海洋地質調查內容主要包括地球物理調查、地質取樣、原位測試觀測、樣品測試分析、研究等[8],包括地球物理調查數據、海底地形調查數據、樣品分析數據、海洋鉆井數據、海岸帶環境地質調查數據及衛星遙感數據等[5-6]。
集成管理層以統一的邏輯模型實現多源異構數據庫的集成訪問,主要包括管理單庫數據訪問服務、面向對象的統一邏輯模型管理、數據統一訪問接口等功能。
(1)面向對象的統一邏輯模型設計
采用面向對象的方法,以對象-活動-關系為核心體系,建立涵蓋所有海洋地質調查對象的統一的海洋地質調查數據邏輯模型。
(2)數據源信息管理
主要包括數據源的數據庫名稱、簡介、對象關系映射信息、單庫數據訪問服務接口等。
(3)統一數據訪問接口設計
根據用戶發出的查詢指令,對各單庫數據訪問服務進行查詢訪問,并將各數據訪問服務返回的查詢結果進行整合,提交給用戶。
平臺應用層主要是根據集成管理層提供的統一數據訪問接口,進行基于對象和業務模型的數據可視化查詢展示、打包下載等服務。
實現多源異構海洋地質調查數據庫的集成服務,為用戶提供基于業務模型和對象的數據查詢,主要有以下關鍵技術。
借鑒 POSC業務模型[9]和王海平等人提出的油田業務分析與建模方法[10],本文以海洋地質調查生命周期為主線,結合專業技術和業務管理的劃分方法,合理劃分業務域及業務活動,保證全面覆蓋海洋地質調查業務,并避免不同業務域間的業務活動冗余,采用“業務領域-業務-業務流程-業務活動”的方式對海洋地質調查進行業務及活動劃分,具體流程如圖 2所示。業務模型的建立方便了用戶基于業務的數據查詢服務,用戶不需要自己建立數據之間的關系,避免了用戶對數據庫不了解帶來的麻煩。

圖2 業務模型建模流程Fig.2 Modeling process of business model
采用面向對象的方法設計,參考EPICENTRE數據模型,針對現有海洋地質調查數據,設計覆蓋所有海洋地質調查數據的統一邏輯模型。
(1)EPICENTRE數據模型
EPICENTRE數據模型是由類、實體、屬性、約束等構成的具有層次結構的面向對象的數據模型,對象-活動-屬性-關系構成了Epicentre數據模型的核心數據體系,如圖3所示[11]。EPICENTRE數據模型主要由活動、特性、關心對象、關系、地質過程、參考數據等超類構成。

圖3 Epicentre數據模型核心體系Fig.3 The core system of Epicentre data model
(2)邏輯模型設計原則
設計海洋地質調查邏輯模型時,應體現面向對象的特點和科學的數據管理體系,同時模型具有高度的集成性,模型必須覆蓋海洋地質調查所有領域的對象,這些對象不按專業進行分割,而是按客觀世界中對象間的聯系組織,使各專業的應用軟件都可以對該模型進行操作,并且其數據是相互一致的,實現不同應用軟件在數據一級上的集成。
為實現關系數據庫向面向對象數據模型的轉換,需采用ORM(Object/Relation Mapping)技術。ORM對象關系映射,將關系數據庫中表的數據映射成為對象,以對象的形式展現,這樣開發人員就可以把對數據庫的操作轉化為對這些對象的操作,不需要再使用復雜的 SQL語句[12]。ORM 是隨著面向對象的軟件開發方法發展而產生的。面向對象的開發方法是當今企業級應用開發環境中的主流開發方法,關系數據庫是企業級應用環境中永久存放數據的主流數據存儲系統。對象和關系數據是業務實體的兩種表現形式,業務實體在內存中表現為對象,在數據庫中表現為關系數據。內存中的對象之間存在關聯和繼承關系,而在數據庫中,關系數據無法直接表達多對多關聯和繼承關系。因此,對象-關系映射(ORM)系統一般以中間件的形式存在,主要實現程序對象到關系數據庫數據的映射,映射機制如圖 4所示[13]。

圖4 ORM映射機制Fig.4 ORM mapping mechanism
由于海洋地質調查數據存儲在分布式異構數據庫中,需采用分布式技術實現對各數據庫數據的集成共享,本文所采用的分布式技術為WCF技術。
WCF的全稱為Windows Communication Foundation,是 Microsoft 基于面向服務的體系結構(SOA)構建的分布式通信編程框架,是.NET框架的重要組成部分,體系結構如圖5所示[14]。使用WCF技術,程序員可以快速構建具有跨平臺性、高可用性、安全、支持事務處理的企業級解決方案[15]。

圖5 WCF體系結構Fig.5 WCF system structure
WCF實際上是構建了一個框架,這個框架實現了在互聯系統中各個應用程序之間如何通信。使得開發和設計人員在構建分布式系統中,無需再考慮如何去實現通信相關的問題,更加關注與系統的業務邏輯本身。在WCF框架中,各個應用程序之間的通信是由終結點(Endpoint)來實現的,如圖 6所示。每個終結點由地址(Address)、綁定(Binding)、協定(Contract)和行為(Behavior),其中 Address,Binding,Contract稱為終結點(Endpoint)的ABC,當WCF發送消息時,address描述了消息發送的網絡地址,binding描述了消息的發送方式,contract則是消息的組織操作方式和消息內容[16]。

圖6 WCF程序通信Fig.6 WCF program communication
單庫數據服務主要實現底層數據庫與統一數據模型的關聯和基于統一數據模型的對象數據訪問接口,具體實現步驟如下:
(1)數據庫配置,配置數據庫連接時所需要的信息,如數據庫類型、數據庫名、用戶名、密碼以及連接字符串等,數據庫配置文件采用 XML文件定義。所需信息均采用
(2)對象關系映射,建立統一對象模型與關系數據庫之間的關聯關系,如對象類和數據庫表的對應關系、表字段和類屬性名稱的對應關系等,具體采用XML文件定義。對象與數據庫表之間的定義格式為
(3)數據訪問服務設計,建立面向對象的統一數據模型與底層關系數據庫的關聯之后,設計實現對對象的訪問接口,具體通過 string GetEntityList(string pEntityName,string strHql)和byte[]GetEntityByteValue(string strHql)函數實現數據查詢返回結果,并采用WCF技術實現數據訪問接口的服務模式發布。
數據服務平臺的實現分布式數據訪問的關鍵是對數據服務的管理,主要是實現對數據服務的注冊、查找、更新的功能,本次研究中服務基于統一的訪問接口,所以對數據服務的管理主要是服務位置的管理,及服務URL地址的管理。本次研究通過緩存一個數據服務列表,實現對數據服務的管理,數據服務列表可以通過序列化保存到數據服務源配置文件dataProvider.config中,也可以從 dataProvider.config中反序列化為服務列表。
實現數據的統一訪問主要是對已注冊的分布式數據訪問接口進行訪問,具體訪問流程如圖7所示。通過反序列化 dataProvider.config文件,得到服務列表通過 foreach (string strRemoteAddress in dataP-rovider)逐一訪問,對返回的查詢結構進行整理合并得到最終的查詢結果。

圖7 統一數據查詢訪問流程Fig.7 Unified data query access processes
為了方便專業人員的使用,本平臺設計了海洋地質調查業務模型。海洋地質調查業務模型是根據海洋地質調查規范和現有海洋地質調查數據庫,對海洋地質調查所涉及的業務進行規劃化、統一化、結構化、標準化整理得到的,涵蓋所有海洋地質調查業務,為海洋地質調查業務人員提供數據服務的應用模型。根據業務劃分流程,分析海洋地質調查業務,得到海洋地質調查業務模型,以海洋地質調查中取樣及樣品分析業務域為例,其業務結構如圖8所示。
用戶可以按自己需求選擇業務,如果需要精確查詢,可以有條件地查詢業務數據,如圖9是調用統一數據服務接口開發的業務的條件查詢窗口,可以設置多種查詢條件篩選所需業務數據。
本平臺采用的面向對象數據模型作為統一的數據模型,與傳統的關系數據模型相比,具有繼承性、易用性和可維護性好等優點。平臺用戶不需知道數據的來源,不需要了解具體的數據庫結構,直接根據所熟悉的業務或對象提取數據,提高了數據的共享性、易用性。另外本平臺具有良好的可擴展性和穩定性,方便基于網絡環境的使用,底層數據庫中如果有新的數據單元加入,無需改變平臺程序架構,只需對統一模型進行擴充,對上層應用沒有影響。

圖8 海洋地質調查取樣及樣品分析業務模型結構Fig.8 Structure of Marine Geological Survey sampling and sample analysis business model

圖9 業務條件查詢窗口Fig.9 Query Business Data by conditions

圖10 業務查詢結果展示Fig.10 Results of business query
文中所設計的海洋地質調查數據服務平臺所有功能模塊均采用服務的方式構建,用戶根據實際應用需求既可以訪問單庫數據查詢服務接口,也可以使用統一的數據訪問接口,為以后應用程序的開發使用提供了便利。目前平臺還有一些不足,有待進一步完善。如統一數據模型建設尚不完善,目前只完成了部分建模,需要全面分析各相關單位的數據庫擴充完善;平臺的查詢效率可以繼續優化提高,查詢方式更加多元化,使用戶的使用更加方便。
[1]李新放,劉海行,周林,等.基于 OpenSceneGraph的海洋環境三維可視化系統研究[J].海洋科學,2012,36(1): 54-58.
[2]劉展,楊辰,魏合龍,等.基于 EPICENTRE的海洋鉆探數據庫構建方法研究[J].計算機技術與發展,2012,22(6): 49-52.
[3]宋瑋,王家耀,郭金華.面向對象時空數據模型的研究[J].測繪科學技術學報,2006,28(4): 235-238.
[4]徐翠玲,錢壯志,馬遠新.淺談面向對象的數字地質圖數據模型[J].測繪科學,2007,32(3): 31-35.
[5]戴勤奮,魏合龍,蘇國輝,等.區域海洋地質調查數據庫結構模型[J].計算機應用研究,2004,21(3): 65-67.
[6]馮斌,譚建軍,李紹榮,等.海洋地質調查數據庫管理系統設計與實現[J].計算機工程,2009,35(3):29-31.
[7]孫記紅,劉展,為賀龍,等.油氣勘探鉆錄測數據庫平臺設計[J].計算機工程,2010,36(5): 287-289.
[8]李紹榮,張錫林,陳道華,等.海洋地質調查基礎數據庫模式構建方法[J].海洋技術,2009,28(4): 94-97.
[9]POSC.Energistics E&P business process reference model[R].America:POSC,2009.
[10]王海平,葛珺,王娟.基于 POSC的油田業務分析與建模方法[J].計算機系統應用,2010,19(3): 100-102.
[11]袁滿.POSC數據模型與我國石油工業標準化[EB/OL].[2012-05-25].http://wenku.baidu.com/view/55014b27a 5e9856a5612603b.html.
[12]李杰.基于ORM的輕量級數據持久化技術研究及應用[J].計算機科學,2010,37(9): 190-193.
[13]李斌勇,李慶.基于NHibernate 的ORM映射機制研究[J].計算機技術與發展,2009,19(7): 32-34,37.
[14]李文濤.基于WCF 架構的應用開發研究[J].計算機時代,2011,2: 19-21.
[15]Scott K.Professional WCF Programming[M].America:Wiley Publishing,Inc,2007.
[16]趙慶霞,孫建伶.基于 WCF的服務緩存設計與研究[J].計算機工程與設計,2010,31(14): 3151-3153.