李博,王斌,葉穎,王鵬,孫成龍,閆秦
(國家海洋技術中心 天津 300112)
海洋環境預報事業是一項社會公益性事業,對促進海洋經濟發展、保障沿海地區人民群眾的生命財產安全具有重要的意義。海洋環境預報離不開觀測數據的支持,海洋觀測數據具有實時性和連續性要求高,需要長期觀測等特點[1]。因此,快速、有效、準確地對觀測到的海洋水文、氣象數據進行存儲、處理就尤為重要。目前,我國海洋水文氣象觀測數據在管理和使用上存在數據共享機制不健全、沒有統一的數據結構以及數據管理方式不合理等問題[2]。這些問題嚴重地影響了觀測數據的質量,并影響到海洋災害預報的準確性。
為此,本研究提出了基于SQL Server的數據庫設計方案,通過對數據庫的級聯更新等實現了數據分級存儲,提高了數據管理效率。同時,利用UML建立系統模型,將數據管理模塊設計為一個獨立的模塊,提高數據管理的獨立性。
根據《GBT 14914-2006 海濱觀測規范》,氣象觀測要素主要有:風速、風向、相對濕度、氣溫、氣壓、降雨量和能見度等。水文觀測要素主要有:表層海水溫度、表層海水鹽度和潮汐等。其中,水文要素、氣象要素分別以北京時間24 時(不含24時)和20時(不含20時)為日界。
因此,海洋站水文氣象自動觀測系統主要完成對多種來源、多種時相、多種精確度的海洋水文氣象基礎數據進行有效存儲與管理,構建包含實時數據、歷史數據、整點數據的綜合性數據存儲系統[3]。通過該數據管理系統既可實現將觀測數據上傳至各級海洋環境預報部門,又可滿足海洋臺站本地使用。考慮到系統的模塊化設計,還要為數據管理系統留有對外可進行二次編程的接口(圖1)。

圖1 海洋水文氣象數據管理系統用例分析
數據多重存儲體現在同一數據既要存儲到本地數據庫中又要存儲到相應的文件中。存儲在本地數據庫中的數據即可用于本地管理與存儲,也可用于數據的查找和對外提供二次開發接口。存儲在文件中的數據以文本文件的格式被傳輸至海洋環境預報單位[4]。
數據分級管理主要體現在數據庫結構設計上。將水文、氣象觀測數據進行分級存儲,分為臨時數據存儲表和最終數據存儲表。臨時存儲表中存儲當前小時進入數據管理系統的數據,并在后續小時數據進入系統后將臨時數據表中數據打包插入最終數據表中。臨時數據表限定數據量閾值,超過設定閾值后臨時數據表數據將被自動刪除。最終數據表每個觀測要素一個表,記錄該數據當天數據,包括該要素當天各整點數據值、數據極值和當天每分鐘的數據值。
根據觀測數據使用對象的不同[5],將系統進行模塊化設計為:數據上傳模塊和本地數據管理模塊。數據上傳模塊將實時觀測數據上傳至海洋環境預報單位;本地數據管理模塊用于海洋觀測站本地數據管理與存儲,并對外提供二次開發接口。此外,該模塊可根據業務需求生成數據上傳模塊所用的數據文件。系統結構類見圖2。

圖2 海洋水文氣象數據管理系統結構類圖
針對上述業務需求,采用了Visual Studio C#2010 作為軟件開發平臺,數據庫系統采用SQL Server 2005。其中,Visual Studio C#2010是一種現代的完全面向對象的程序開發語言,它使得程序員能夠在新的微軟.NET 平臺上快速開發種類豐富的應用程序。.NET 平臺提供了大量的工具和服務,能夠最大限度地發掘和使用計算及通信能力[6]。
SQL Server 2005 能提供大型系統所需的數據庫服務,可實現成千上萬的用戶同時連接。SQL Server 2005 為這樣的環境提供了全面的保護,具有防止問題發生的安全措施,可在多個用戶之間有效地分配可用資源。此外,還可以在一臺計算機上運行多個SQL Server 2005 實例[7]。
海洋站水文氣象觀測數據要在海洋觀測站、海洋中心站、海區預報中心及國家預報中心等各單位使用,其中:海洋觀測站端僅使用本站數據;海洋中心站使用本中心站下屬各海洋站數據;海區預報中心使用本海區下屬各海洋站數據;國家預報中心使用所有海洋站的數據。這些數據是連續不間斷產生和使用的。因此,在建立海洋站水文氣象數據庫時,必須考慮大規模數據的存儲問題。在建立數據庫的同時,構建出符合海洋觀測預報業務的數據模型,設計了水文要素臨時數據表(tempdata_sw 表)、氣象要素臨時數據表(tempdata_qx 表)和風要素臨時存儲表(tempdata_wi表)、風要素數據存儲表(WI表)、相對濕度數據存儲表(HU 表)、氣溫數據存儲表(AT表)、氣壓數據存儲表(BP 表)、降雨量數據存儲表(RN 表)、能見度數據存儲表(VB 表)、海水溫度數據存儲表(WT 表)、海水鹽度數據存儲表(SL表)、潮位數據存儲表(WL 表)等多個表格。其中,臨時表每個要素每小時1 行數據,用于存放近3d每分鐘生成的實時數據。數據存儲表每個要素每天1 行數據,用于存放整點值數據、極值數據以及該天每分鐘數據(表1至表5)。

表1 tempdata_sw表

續表

表2 tempdata_qx表

表3 tempdata_wi表

表4 氣溫數據存儲表(AT表)

表5 海水溫度數據存儲表(WT 表)
以上5個表為數據庫邏輯結構設計所需的表,其中表1至表3為臨時數據存儲表,表4為氣象要素數據表、表5 為水文要素數據表,其余水文氣象要素數據正式表的表結構與表4和表5結構一致。此外,風要素表結構中DataXX 為風向值與風速值的組合,即“風向值 風速值”。
3.2.1 數據庫觸發器設計
結構化查詢語言Structure Query Language(SQL)是專門為數據庫建立的操作命令集,是一種功能齊全的數據庫語言。SQL 主要由兩部分組成:DDL(Data Definition Language)和DML(Data Manipulation Language)。其中,DDL 是建立數據庫表及列的指令群,DML 是操作數據庫記錄的指令群。以下SQL 語句實現了海洋水文氣象數據庫觸發器的設計。
create trigger tri_sw//更改水文各要素整點值,以潮位要素為例。
on tempdata_sw
for update
if update(m00)
begin
update WL set wdXX=i.m00where zh=i.zh and type=’WL’and date=i.sdate+’XX’
end
上述程序以潮位(WL)數據為例,實現了水文要素的數據臨時表向正式表的級聯更新。其中,水文要素數據更新為本時刻00 分數據到正式表本小時的更新。
3.2.2 程序設計及運行結果
根據上述業務需求,對數據管理模塊(表6)進行了程序開發,設計實現了以下幾個程序對外調用的接口。

表6 水文氣象數據管理模塊情況
利用以上函數接口,實現了水文氣象數據管理,并被海洋站上位機軟件調用,完成了海洋站水文氣象數據的管理。
系統利用數據庫技術和面向對象技術,整合現有觀測設備的數據類型,實現了海洋觀測數據的自動化管理,有效降低了海洋觀測系統的管理成本,同時系統為海洋觀測數據的模塊化管理和使用提供了對外接口。實現了海洋水文氣象觀測數據的模塊化和業務化應用,為進一步提高海洋觀測預報的精細化水平,更好服務于海洋經濟發展管理的支持能力奠定了基礎。
[1]秦明慧,李平,戴永壽,等.海洋臺站數據管理及動態發布系統的設計[J].海洋預報,2010,27(3):66-71.
[2]吳向榮,陳宇東,李郅明,等.海洋臺站觀測數據生成環節及質控分析[J].海洋開發與管理,2014,31(4):34-37.
[3]中國國家標準化委員會.GB/T14914—2006海濱觀測規范[S].2006.
[4]林春梅,余麒祥,曹宇峰,等.淺談海洋臺站工作的管理[J].海洋開發與管理,2013,30(4):44-47.
[5]俞永慶.自動海洋氣象監測數據庫及其Web開發應用[J].海洋預報,2006,23(1):81-84.
[6]劉維學.SQL Server查詢優化器原理與優化實力分析[J].計算機技術與發展,2013,23(11):108-111.
[7]劉維學,喬麗平.SQL Server數據庫DML觸發器的研究與應用[J].計算機技術與發展,2013,23(11):66-69.