張金華,尹小磊,朱萬里
(1.海南省海洋監測預報中心???570206;2.黃河勘測規劃設計有限公司鄭州 450008)
海南省數字海洋數據庫建設總結與探討
張金華1,尹小磊2,朱萬里1
(1.海南省海洋監測預報中心???570206;2.黃河勘測規劃設計有限公司鄭州 450008)
2011年5月海南省“數字海洋”908-03項目通過了國家海洋局908項目辦組織的會議驗收,整體工作有了一個階段性的完結。在國家908項目統一的信息標準規范下,海南省省級節點建設了一系列海洋相關數據庫,符合海洋信息基礎平臺建設要求,為海洋綜合管理與服務信息應用系統的開發奠定了堅實的數據基礎。本篇文章主要是以海洋環境基礎資料數據庫的建設作為示例,說明該省數據庫建設的經驗,并探討不足之處,以便改進后續的工作。
數字海洋;908-03項目;海洋環境基礎資料數據庫
海南省“數字海洋”信息基礎框架建設是我國“數字海洋”工程建設的重要組成部分,通過“數字海洋”建設使該省的海洋信息化能力和水平適應海洋事業發展的需要,與國內相關行業領域的信息化建設相接軌,為該省海洋行政管理事業服務。海南省“數字海洋”建設始終以保護海洋環境、提高海洋管理水平、促進海洋經濟發展為目標,緊緊圍繞海域使用管理、海洋防災減災和海洋環境保護等業務工作開展實施。在數據庫建設方面相繼建設了基礎地理信息庫、海洋環境基礎資料數據庫、專題信息庫等各有特色的數據庫系統。其中,海洋環境基礎資料數據庫建設是任務最重、規模最大,也相對復雜的數據庫系統,因此主要對其進行探討研究。該數據庫包括海洋水文、海洋氣象、海洋物理、海洋化學、海洋生物生態、海洋底質、懸浮體、海洋地球物理、海洋地形地貌9個方面的內容,形成了一個涵蓋眾多海洋相關調查資料的數據系統,為后續的應用程序開發、數據查詢、分析提供基礎數據平臺。
海洋環境基礎資料數據庫的建設主要包括建空庫、數據審核整理、數據錄入3個方面的工作。詳細流程如圖1所示。

圖1 海洋環境基礎資料數據庫建設流程圖
首先在服務器上安裝好oracle數據庫管理系統[1],以國家下發的物理數據模型PDM[2]為基礎進行建庫,并以國家下發的建庫標準和相關技術方案作為這一模型檢查的依據。雖然物理數據模型是嚴格按照建庫標準和相關技術方案建立的,但是在對整個模型進行檢查的過程中仍發現存在些許錯誤,并進行最后改正,同時通過檢查也更進一步了解整個數據庫模型。其中物理數據模型PDM(Physical Data Model)是由Powerdesigner軟件建立的數據庫物理實現模型,包括軟件和數據存儲結構,其對象主要有:表(Table)、表中的列(Table column)、主碼和外碼(Primary key and Foreign key),參照(Reference)、索引(Index)、視圖(View)等。它用圖形的形式表示數據的物理組織,并生成數據庫的創建和修改腳本,定義完整性觸發器和約束,生成擴展屬性,使得數據在數據庫中能夠保持完整性和一致性[3]。通過Powerdesigner軟件,把改正后的PDM物理數據模型轉化成SQL數據庫腳本文件。以海洋環境基礎資料數據庫中的生物數據PDM模型為例,如圖2所示,主要表示出各個數據表之間的關系。其中1∶n表示的一對多的關系,一個生物采樣航次信息對應多個站位,同時一個站位又采集多種類別水樣等原始資料,通過試驗得到浮游動物和葉綠素等多種類別信息數據,而一個采樣信息,如微生物采樣信息又分別對應一個測定信息和一個鑒定信息,當然有的只有其中的一項。

圖2 數據表結構示例圖
通過已安裝好的oracle數據庫管理軟件,運行生成的SQL腳本,生成各個表及相關的約束條件等,建設空庫。利用oracle數據庫管理系統,對建立的數據庫系統進行檢查,查看表格完整性、約束完整性、表格字段及相關屬性信息,達到完全符合國家此項目的建庫要求。
由于收集到的數據格式不能直接導入數據庫,要對數據進行審核,數據文件類型有txt和excel兩種形式。格式上總體結構按照國家的標準執行,但是具體要求則完全沒有按照標準。由于國家規定的標準數據格式經過一次大的改動,所以一些收集的數據是按照舊的格式要求處理的數據,收集的數據無法直接利用國家下發的數據導入軟件導入。因此要對數據進行整理,采用了兩種方法處理:第一,把數據加工成國家軟件要求的格式;第二,把數據加工成自己規定的數據格式。
將數據加工成國家下發錄入軟件要求格式的數據,可以直接利用此軟件錄入;加工成自定義數據格式,通過計算機和人工處理生成與數據庫表相對應的文本文件,使用SQLLoader編寫代碼有很強的靈活性,正好適合現有數據格式多樣[6]的特點,因此采用SQLLoader自由格式數據的裝載[4]方式,編寫代碼導入文本文件數據。SQLLoader是Oracle提供的一個將外部文本文件的數據裝載到表中的工具,該工具可以在一個裝載會話中將數據裝載到多張表中,也可以從多個文件中讀取數據,并且可以有選擇地裝載數據[4]。同時SQLLoader在裝載數據時會形成輸出文件,包括日志文件、壞文件和丟棄文件,從中我們可以清楚地查看數據的錄入情況,對不能錄入的數據查找錯誤,修改后重新裝載,避免了數據的丟失。生物微生物采樣數據錄入部分代碼如下:
OPTIONS(ERRORS=-1)
LOAD DATA
INFILE'C:shengwuweishengwushuju.txt'
INTO TABLE shengwuweishengwutable APPEND
TRAILING NULLCOLS
(
字段1 TERMINATED BY",",
字段2 TERMINATED BY",",
字段3 TERMINATED BY",",
...
字段4 TERMINATED BY",")
探討了國家數據庫模型建設的依據和方法,以及在錄入數據時的經驗和不足。
國家數據庫建設模型主要是依據《海洋數據應用記錄格式》GB/T12460-2006[5]國家標準建立。仍以生物為例,其包括初級生產力、葉綠素、微生物等多個類別的采樣信息、測定信息、鑒定信息等。在國標中對于生物的每一類信息都分別有一個航次站位信息表,一個測定數據表和一個說明記錄表,但是在實際情況中一個航次不可能只做一個類別的采樣,比如只做微生物或初級生產力采樣,更多的情況是多個類別在一個航次一起采樣,這種情況下航次站位表對于這幾個類別就會基本相同,因此為避免數據冗余,國家數據庫建模專家采用了把生物各個類別的航次站位表抽取其中共同的字段建立了航次表和站位表兩個表,同時根據各個類別采樣的特殊性結合測定數據表建立各個類別采樣信息表,再根據測定數據表建立了測定信息表,一些類別再加一個鑒定信息表。最后抽象成了多個生物類別共有一個航次信息表和一個站位表,有自己的采樣信息表和測定信息表及鑒定信息表,如圖2,其中箭頭是外鍵表指向主鍵表。這種處理方式雖然避免了數據冗余,在數據庫建模上是最好的一種方式,能夠使整個數據入庫后形成一個相互聯系的整體,有助于后續的應用開發,但是在約束完整性上提出了更高的要求,數據的格式更加復雜,對數據錄入也提出了更高的要求。
雖然有了圖2中的一種關系,但是如何在數據庫中體現這種關系,把不在一個數據表中但在一個航次中的數據組成一個整體,方便查詢、修改等操作,這就引入了數據庫中一個非常重要的概念主外鍵[2],而在數據庫模型中很難且沒有必要用有實際意義的字段設置為主外鍵來完成約束完整性,所以專家在建模時采用了加一個沒有實際意義的虛字段作為主外鍵字段,目的就是完整性約束,達到目的。如圖3中PKEY字段和FKEY字段,分別是該表的主鍵字段和外鍵字段。另外主鍵字段也作為首鍵字段,類型是NUMBER,同時也作為索引字段,可以大副提高數據的查詢效率。
一部分數據是國家下發的軟件完成入庫的,但是國家下發的軟件格式要求苛刻,把數據加工成符合國家軟件的要求再錄入費時長,效率低,所以對數據進行了另外的格式處理,用SQLloader編寫代碼導入數據,不斷完善數據錄入代碼,方便及時地錄入數據。但是這也存在一定的問題,就是匯交上的數據呈多源性、多態性和多樣性特點[7],整理數據很難有一種統一的模式,在自動化處理方面很難實現。同時無論是國家下發軟件錄入,還是編寫代碼錄入,都要進行數據整理,數據重復加工必然有數據丟失的問題。

圖3 約束完整性示例圖
各項數據庫已經建立完成,部分數據已經錄入,但是整個“數字海洋”系統是一個要長期運行的系統,后續數據的收集入庫將是一個非常重要的工作,如何使數據準確、格式明確、數據錄入方便是整個系統豐富充實的前提。對于整個系統,數據是基礎,應用是目標。第一,在數據上應該理清以下工作思路,首先是明確數據來源:哪些數據是一次性的數據,哪些是定期數據,找到數據來源,理順數據提交制度;其次是規范數據格式,與數據制作單位溝通好確定一種合理的數據格式,一方以此制作數據,一方以此驗收,避免多方加工數據造成數據丟失和扭曲;最后是數據錄入,這一項與前兩項環環相扣,做到數據及時有效錄入。第二,明確數據的開發應用方向,首先清晰認識數據的性質,做到定期更新的數據動態應用,一次性的數據得到合理展示;其次明確服務對象,加深對服務對象需求的分析,同時清楚數據的功能,做到對服務對象確實起到服務作用;第三,開發海南特色,以有利于自身和相關應用部門的工作開展為目標,開發實用的應用系統。海南省節點系統是一個數據不斷充實、功能不斷完善、新功能逐步添加、在很長一段時間內動態改進的系統。主要以海洋環境基礎資料數據庫為例,論述了海南省“數字海洋”節點數據庫建設的過程和對一些問題的解決方法,因知識有限,可能所采用的方法不是最好的,一些地方的處理有不適當的情況,望批評指正。
[1]路川,胡欣杰.oracle 10g寶典[M].北京:電子工業出版社,2008.
[2]趙韶平,徐茂生,周勇華,等.PowerDesigenr系統分析與建模[M].北京:清華大學出版社,2010.
[3]劉紅玉,杜清運,蔡忠亮.基于PowerDesigner的空間數據庫建庫技術[J].測繪信息與工程,2001,32(3):24-26.
[4]張巖,趙霽.Oracle中數據裝載與數據重組的研究[J].計算機應用,2004,24(4):185-187.
[5]GB/T 12460-2006.海洋數據應用記錄格式[S].北京:中國標準出版社,2006.
[6]薛惠芬,張義鈞.海洋資料基礎數據庫模式設計技術[J].海洋信息,2003(2):1-4.
[7]張峰,石綏祥,殷汝廣,等.數字海洋中數據體系結構研究[J].海洋通報,2009,28(4):1-8.
2011-10-24