李博,王斌,葉穎,王鵬,孫成龍,閆秦
(國(guó)家海洋技術(shù)中心 天津 300112)
海洋環(huán)境預(yù)報(bào)事業(yè)是一項(xiàng)社會(huì)公益性事業(yè),對(duì)促進(jìn)海洋經(jīng)濟(jì)發(fā)展、保障沿海地區(qū)人民群眾的生命財(cái)產(chǎn)安全具有重要的意義。海洋環(huán)境預(yù)報(bào)離不開觀測(cè)數(shù)據(jù)的支持,海洋觀測(cè)數(shù)據(jù)具有實(shí)時(shí)性和連續(xù)性要求高,需要長(zhǎng)期觀測(cè)等特點(diǎn)[1]。因此,快速、有效、準(zhǔn)確地對(duì)觀測(cè)到的海洋水文、氣象數(shù)據(jù)進(jìn)行存儲(chǔ)、處理就尤為重要。目前,我國(guó)海洋水文氣象觀測(cè)數(shù)據(jù)在管理和使用上存在數(shù)據(jù)共享機(jī)制不健全、沒有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)管理方式不合理等問題[2]。這些問題嚴(yán)重地影響了觀測(cè)數(shù)據(jù)的質(zhì)量,并影響到海洋災(zāi)害預(yù)報(bào)的準(zhǔn)確性。
為此,本研究提出了基于SQL Server的數(shù)據(jù)庫(kù)設(shè)計(jì)方案,通過對(duì)數(shù)據(jù)庫(kù)的級(jí)聯(lián)更新等實(shí)現(xiàn)了數(shù)據(jù)分級(jí)存儲(chǔ),提高了數(shù)據(jù)管理效率。同時(shí),利用UML建立系統(tǒng)模型,將數(shù)據(jù)管理模塊設(shè)計(jì)為一個(gè)獨(dú)立的模塊,提高數(shù)據(jù)管理的獨(dú)立性。
根據(jù)《GBT 14914-2006 海濱觀測(cè)規(guī)范》,氣象觀測(cè)要素主要有:風(fēng)速、風(fēng)向、相對(duì)濕度、氣溫、氣壓、降雨量和能見度等。水文觀測(cè)要素主要有:表層海水溫度、表層海水鹽度和潮汐等。其中,水文要素、氣象要素分別以北京時(shí)間24 時(shí)(不含24時(shí))和20時(shí)(不含20時(shí))為日界。
因此,海洋站水文氣象自動(dòng)觀測(cè)系統(tǒng)主要完成對(duì)多種來源、多種時(shí)相、多種精確度的海洋水文氣象基礎(chǔ)數(shù)據(jù)進(jìn)行有效存儲(chǔ)與管理,構(gòu)建包含實(shí)時(shí)數(shù)據(jù)、歷史數(shù)據(jù)、整點(diǎn)數(shù)據(jù)的綜合性數(shù)據(jù)存儲(chǔ)系統(tǒng)[3]。通過該數(shù)據(jù)管理系統(tǒng)既可實(shí)現(xiàn)將觀測(cè)數(shù)據(jù)上傳至各級(jí)海洋環(huán)境預(yù)報(bào)部門,又可滿足海洋臺(tái)站本地使用??紤]到系統(tǒng)的模塊化設(shè)計(jì),還要為數(shù)據(jù)管理系統(tǒng)留有對(duì)外可進(jìn)行二次編程的接口(圖1)。
圖1 海洋水文氣象數(shù)據(jù)管理系統(tǒng)用例分析
數(shù)據(jù)多重存儲(chǔ)體現(xiàn)在同一數(shù)據(jù)既要存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù)中又要存儲(chǔ)到相應(yīng)的文件中。存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)即可用于本地管理與存儲(chǔ),也可用于數(shù)據(jù)的查找和對(duì)外提供二次開發(fā)接口。存儲(chǔ)在文件中的數(shù)據(jù)以文本文件的格式被傳輸至海洋環(huán)境預(yù)報(bào)單位[4]。
數(shù)據(jù)分級(jí)管理主要體現(xiàn)在數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)上。將水文、氣象觀測(cè)數(shù)據(jù)進(jìn)行分級(jí)存儲(chǔ),分為臨時(shí)數(shù)據(jù)存儲(chǔ)表和最終數(shù)據(jù)存儲(chǔ)表。臨時(shí)存儲(chǔ)表中存儲(chǔ)當(dāng)前小時(shí)進(jìn)入數(shù)據(jù)管理系統(tǒng)的數(shù)據(jù),并在后續(xù)小時(shí)數(shù)據(jù)進(jìn)入系統(tǒng)后將臨時(shí)數(shù)據(jù)表中數(shù)據(jù)打包插入最終數(shù)據(jù)表中。臨時(shí)數(shù)據(jù)表限定數(shù)據(jù)量閾值,超過設(shè)定閾值后臨時(shí)數(shù)據(jù)表數(shù)據(jù)將被自動(dòng)刪除。最終數(shù)據(jù)表每個(gè)觀測(cè)要素一個(gè)表,記錄該數(shù)據(jù)當(dāng)天數(shù)據(jù),包括該要素當(dāng)天各整點(diǎn)數(shù)據(jù)值、數(shù)據(jù)極值和當(dāng)天每分鐘的數(shù)據(jù)值。
根據(jù)觀測(cè)數(shù)據(jù)使用對(duì)象的不同[5],將系統(tǒng)進(jìn)行模塊化設(shè)計(jì)為:數(shù)據(jù)上傳模塊和本地?cái)?shù)據(jù)管理模塊。數(shù)據(jù)上傳模塊將實(shí)時(shí)觀測(cè)數(shù)據(jù)上傳至海洋環(huán)境預(yù)報(bào)單位;本地?cái)?shù)據(jù)管理模塊用于海洋觀測(cè)站本地?cái)?shù)據(jù)管理與存儲(chǔ),并對(duì)外提供二次開發(fā)接口。此外,該模塊可根據(jù)業(yè)務(wù)需求生成數(shù)據(jù)上傳模塊所用的數(shù)據(jù)文件。系統(tǒng)結(jié)構(gòu)類見圖2。
圖2 海洋水文氣象數(shù)據(jù)管理系統(tǒng)結(jié)構(gòu)類圖
針對(duì)上述業(yè)務(wù)需求,采用了Visual Studio C#2010 作為軟件開發(fā)平臺(tái),數(shù)據(jù)庫(kù)系統(tǒng)采用SQL Server 2005。其中,Visual Studio C#2010是一種現(xiàn)代的完全面向?qū)ο蟮某绦蜷_發(fā)語言,它使得程序員能夠在新的微軟.NET 平臺(tái)上快速開發(fā)種類豐富的應(yīng)用程序。.NET 平臺(tái)提供了大量的工具和服務(wù),能夠最大限度地發(fā)掘和使用計(jì)算及通信能力[6]。
SQL Server 2005 能提供大型系統(tǒng)所需的數(shù)據(jù)庫(kù)服務(wù),可實(shí)現(xiàn)成千上萬的用戶同時(shí)連接。SQL Server 2005 為這樣的環(huán)境提供了全面的保護(hù),具有防止問題發(fā)生的安全措施,可在多個(gè)用戶之間有效地分配可用資源。此外,還可以在一臺(tái)計(jì)算機(jī)上運(yùn)行多個(gè)SQL Server 2005 實(shí)例[7]。
海洋站水文氣象觀測(cè)數(shù)據(jù)要在海洋觀測(cè)站、海洋中心站、海區(qū)預(yù)報(bào)中心及國(guó)家預(yù)報(bào)中心等各單位使用,其中:海洋觀測(cè)站端僅使用本站數(shù)據(jù);海洋中心站使用本中心站下屬各海洋站數(shù)據(jù);海區(qū)預(yù)報(bào)中心使用本海區(qū)下屬各海洋站數(shù)據(jù);國(guó)家預(yù)報(bào)中心使用所有海洋站的數(shù)據(jù)。這些數(shù)據(jù)是連續(xù)不間斷產(chǎn)生和使用的。因此,在建立海洋站水文氣象數(shù)據(jù)庫(kù)時(shí),必須考慮大規(guī)模數(shù)據(jù)的存儲(chǔ)問題。在建立數(shù)據(jù)庫(kù)的同時(shí),構(gòu)建出符合海洋觀測(cè)預(yù)報(bào)業(yè)務(wù)的數(shù)據(jù)模型,設(shè)計(jì)了水文要素臨時(shí)數(shù)據(jù)表(tempdata_sw 表)、氣象要素臨時(shí)數(shù)據(jù)表(tempdata_qx 表)和風(fēng)要素臨時(shí)存儲(chǔ)表(tempdata_wi表)、風(fēng)要素?cái)?shù)據(jù)存儲(chǔ)表(WI表)、相對(duì)濕度數(shù)據(jù)存儲(chǔ)表(HU 表)、氣溫?cái)?shù)據(jù)存儲(chǔ)表(AT表)、氣壓數(shù)據(jù)存儲(chǔ)表(BP 表)、降雨量數(shù)據(jù)存儲(chǔ)表(RN 表)、能見度數(shù)據(jù)存儲(chǔ)表(VB 表)、海水溫度數(shù)據(jù)存儲(chǔ)表(WT 表)、海水鹽度數(shù)據(jù)存儲(chǔ)表(SL表)、潮位數(shù)據(jù)存儲(chǔ)表(WL 表)等多個(gè)表格。其中,臨時(shí)表每個(gè)要素每小時(shí)1 行數(shù)據(jù),用于存放近3d每分鐘生成的實(shí)時(shí)數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)表每個(gè)要素每天1 行數(shù)據(jù),用于存放整點(diǎn)值數(shù)據(jù)、極值數(shù)據(jù)以及該天每分鐘數(shù)據(jù)(表1至表5)。
表1 tempdata_sw表
續(xù)表
表2 tempdata_qx表
表3 tempdata_wi表
表4 氣溫?cái)?shù)據(jù)存儲(chǔ)表(AT表)
表5 海水溫度數(shù)據(jù)存儲(chǔ)表(WT 表)
以上5個(gè)表為數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)所需的表,其中表1至表3為臨時(shí)數(shù)據(jù)存儲(chǔ)表,表4為氣象要素?cái)?shù)據(jù)表、表5 為水文要素?cái)?shù)據(jù)表,其余水文氣象要素?cái)?shù)據(jù)正式表的表結(jié)構(gòu)與表4和表5結(jié)構(gòu)一致。此外,風(fēng)要素表結(jié)構(gòu)中DataXX 為風(fēng)向值與風(fēng)速值的組合,即“風(fēng)向值 風(fēng)速值”。
3.2.1 數(shù)據(jù)庫(kù)觸發(fā)器設(shè)計(jì)
結(jié)構(gòu)化查詢語言Structure Query Language(SQL)是專門為數(shù)據(jù)庫(kù)建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫(kù)語言。SQL 主要由兩部分組成:DDL(Data Definition Language)和DML(Data Manipulation Language)。其中,DDL 是建立數(shù)據(jù)庫(kù)表及列的指令群,DML 是操作數(shù)據(jù)庫(kù)記錄的指令群。以下SQL 語句實(shí)現(xiàn)了海洋水文氣象數(shù)據(jù)庫(kù)觸發(fā)器的設(shè)計(jì)。
create trigger tri_sw//更改水文各要素整點(diǎn)值,以潮位要素為例。
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)數(shù)據(jù)為例,實(shí)現(xiàn)了水文要素的數(shù)據(jù)臨時(shí)表向正式表的級(jí)聯(lián)更新。其中,水文要素?cái)?shù)據(jù)更新為本時(shí)刻00 分?jǐn)?shù)據(jù)到正式表本小時(shí)的更新。
3.2.2 程序設(shè)計(jì)及運(yùn)行結(jié)果
根據(jù)上述業(yè)務(wù)需求,對(duì)數(shù)據(jù)管理模塊(表6)進(jìn)行了程序開發(fā),設(shè)計(jì)實(shí)現(xiàn)了以下幾個(gè)程序?qū)ν庹{(diào)用的接口。
表6 水文氣象數(shù)據(jù)管理模塊情況
利用以上函數(shù)接口,實(shí)現(xiàn)了水文氣象數(shù)據(jù)管理,并被海洋站上位機(jī)軟件調(diào)用,完成了海洋站水文氣象數(shù)據(jù)的管理。
系統(tǒng)利用數(shù)據(jù)庫(kù)技術(shù)和面向?qū)ο蠹夹g(shù),整合現(xiàn)有觀測(cè)設(shè)備的數(shù)據(jù)類型,實(shí)現(xiàn)了海洋觀測(cè)數(shù)據(jù)的自動(dòng)化管理,有效降低了海洋觀測(cè)系統(tǒng)的管理成本,同時(shí)系統(tǒng)為海洋觀測(cè)數(shù)據(jù)的模塊化管理和使用提供了對(duì)外接口。實(shí)現(xiàn)了海洋水文氣象觀測(cè)數(shù)據(jù)的模塊化和業(yè)務(wù)化應(yīng)用,為進(jìn)一步提高海洋觀測(cè)預(yù)報(bào)的精細(xì)化水平,更好服務(wù)于海洋經(jīng)濟(jì)發(fā)展管理的支持能力奠定了基礎(chǔ)。
[1]秦明慧,李平,戴永壽,等.海洋臺(tái)站數(shù)據(jù)管理及動(dòng)態(tài)發(fā)布系統(tǒng)的設(shè)計(jì)[J].海洋預(yù)報(bào),2010,27(3):66-71.
[2]吳向榮,陳宇東,李郅明,等.海洋臺(tái)站觀測(cè)數(shù)據(jù)生成環(huán)節(jié)及質(zhì)控分析[J].海洋開發(fā)與管理,2014,31(4):34-37.
[3]中國(guó)國(guó)家標(biāo)準(zhǔn)化委員會(huì).GB/T14914—2006海濱觀測(cè)規(guī)范[S].2006.
[4]林春梅,余麒祥,曹宇峰,等.淺談海洋臺(tái)站工作的管理[J].海洋開發(fā)與管理,2013,30(4):44-47.
[5]俞永慶.自動(dòng)海洋氣象監(jiān)測(cè)數(shù)據(jù)庫(kù)及其Web開發(fā)應(yīng)用[J].海洋預(yù)報(bào),2006,23(1):81-84.
[6]劉維學(xué).SQL Server查詢優(yōu)化器原理與優(yōu)化實(shí)力分析[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(11):108-111.
[7]劉維學(xué),喬麗平.SQL Server數(shù)據(jù)庫(kù)DML觸發(fā)器的研究與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(11):66-69.