魏 爽,楊 明,陳曄峰,吳書(shū)成,吳 彬,魯奕岑
(1.浙江省氣象信息網(wǎng)絡(luò)中心,浙江 杭州 310002;2.湖州市氣象局,浙江 湖州 313000)
隨著全球氣候變暖,自然災(zāi)害增多,強(qiáng)降水、冰雹、雷電、干旱等極端天氣氣候事件頻發(fā)。加強(qiáng)氣候觀測(cè),提高防災(zāi)減災(zāi)能力成為普遍關(guān)注的問(wèn)題[1-2]。氣象自動(dòng)站為局部區(qū)域的氣象預(yù)報(bào)服務(wù)和災(zāi)害監(jiān)測(cè)提供了大量觀測(cè)資料,使有效捕捉中小尺度天氣系統(tǒng)成為可能[3]。隨著數(shù)據(jù)量的增加,數(shù)據(jù)環(huán)境復(fù)雜度增強(qiáng),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)方式已不能滿足大數(shù)據(jù)的業(yè)務(wù)需求[4-5]。如何合理有效地存儲(chǔ)大量數(shù)據(jù)記錄[6],實(shí)現(xiàn)高并發(fā)情況下的高速存儲(chǔ),同時(shí)在毫秒級(jí)時(shí)間內(nèi)提供查詢統(tǒng)計(jì)服務(wù),是當(dāng)前氣象業(yè)務(wù)部門(mén)亟需解決的難題。
為滿足氣象預(yù)警、決策服務(wù)、氣候評(píng)估等業(yè)務(wù)需求,各級(jí)氣象部門(mén)陸續(xù)建立了氣象資料存儲(chǔ)系統(tǒng)[7]。文獻(xiàn)[8]提出國(guó)家級(jí)氣象資料存儲(chǔ)檢索系統(tǒng)(簡(jiǎn)稱NMARS)的設(shè)計(jì)思路和技術(shù)路線,在向國(guó)家級(jí)氣象業(yè)務(wù)、科研提供資料檢索服務(wù)的同時(shí),也為社會(huì)用戶提供所需資料;高祝宇等[9]開(kāi)發(fā)了一套針對(duì)氣象業(yè)務(wù)的數(shù)據(jù)服務(wù)系統(tǒng),以Web 服務(wù)方式提供數(shù)據(jù)接口,實(shí)現(xiàn)對(duì)氣象數(shù)據(jù)服務(wù)的統(tǒng)一管理;王海賓等[10]為服務(wù)2009 年上海世博會(huì)等大型活動(dòng),設(shè)計(jì)并實(shí)現(xiàn)了基于Oracle 的長(zhǎng)三角自動(dòng)站數(shù)據(jù)庫(kù)系統(tǒng),實(shí)時(shí)處理長(zhǎng)三角地區(qū)的自動(dòng)站資料并入庫(kù),極大擴(kuò)展了資料的共享度;劉尉等[11]基于Oracle 關(guān)系型數(shù)據(jù)庫(kù),對(duì)任意時(shí)段氣候數(shù)據(jù)統(tǒng)計(jì)流程進(jìn)行優(yōu)化,優(yōu)化后的統(tǒng)計(jì)流程在任意時(shí)間任意時(shí)段均可保持很高的效率。
隨著云存儲(chǔ)技術(shù)的飛速發(fā)展,分布式云存儲(chǔ)成為解決海量數(shù)據(jù)存儲(chǔ)的最有效手段[11-12]。陳京華等[13]利用分布式技術(shù)構(gòu)建了基于“分布式關(guān)系型數(shù)據(jù)庫(kù)+事業(yè)型數(shù)據(jù)庫(kù)+列式數(shù)據(jù)庫(kù)+表格系統(tǒng)+分布式文件系統(tǒng)”的混合型大數(shù)據(jù)服務(wù)中心模式,進(jìn)行數(shù)據(jù)存儲(chǔ)、管理和服務(wù),極大提升了數(shù)據(jù)影響力;雷鳴等[14]、陳效杰等[15]采用Hadoop/Hive 集群優(yōu)勢(shì),存儲(chǔ)和處理氣象數(shù)據(jù)集,實(shí)際應(yīng)用效果很好。已有研究表明,采用云關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu),能夠有效提高氣象數(shù)據(jù)存儲(chǔ)效率,滿足大規(guī)模氣象數(shù)據(jù)在業(yè)務(wù)應(yīng)用中對(duì)存儲(chǔ)查詢和處理速度的要求[16-18]。本文針對(duì)地面氣象數(shù)據(jù)特點(diǎn)和氣象業(yè)務(wù)服務(wù)需求,充分利用分布式應(yīng)用服務(wù)和云存儲(chǔ)技術(shù),提出一種基于分布式云存儲(chǔ)技術(shù)的任意時(shí)段數(shù)據(jù)統(tǒng)計(jì)方法,為相關(guān)單位開(kāi)展類似業(yè)務(wù)提供借鑒。
統(tǒng)計(jì)方法的規(guī)范和統(tǒng)一是保證氣候統(tǒng)計(jì)數(shù)據(jù)準(zhǔn)確性、連續(xù)性和均一性的最基本條件之一[19-20]。《全國(guó)地面氣候資料統(tǒng)計(jì)方法》和《地面氣象觀測(cè)規(guī)范》等規(guī)定了氣象國(guó)家級(jí)自動(dòng)站(簡(jiǎn)稱國(guó)家站)的統(tǒng)計(jì)方法和不完整記錄的處理方法。為獲得高質(zhì)量的區(qū)域站統(tǒng)計(jì)資料,滿足本地實(shí)際業(yè)務(wù)需求,本文參考上述規(guī)范有關(guān)規(guī)定,根據(jù)省內(nèi)區(qū)域站歷年站點(diǎn)個(gè)數(shù)、觀測(cè)數(shù)據(jù)完整性等情況,設(shè)計(jì)了區(qū)域站小時(shí)、日、旬、月、年數(shù)據(jù)統(tǒng)計(jì)方法,能保證各要素統(tǒng)計(jì)數(shù)據(jù)完整率在80%以上。
規(guī)范的數(shù)據(jù)存儲(chǔ)既能與國(guó)家局大數(shù)據(jù)云平臺(tái)數(shù)據(jù)存儲(chǔ)同步,提高檢索功能和服務(wù)效率,又易于地面多要素相關(guān)分析。本文遵循標(biāo)準(zhǔn)、規(guī)范先行原則,參照國(guó)家局CI?MISS 數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范[21],以支撐氣象數(shù)據(jù)預(yù)報(bào)服務(wù)、科研應(yīng)用需求為目標(biāo),在氣象云存儲(chǔ)數(shù)據(jù)平臺(tái)基礎(chǔ)上設(shè)計(jì)了實(shí)時(shí)歷史一體化數(shù)據(jù)云存儲(chǔ)方法,規(guī)范定義存儲(chǔ)表結(jié)構(gòu)、索引、約束等項(xiàng)目。
氣象國(guó)家站建站時(shí)間較長(zhǎng)(杭州站1951 年建站),區(qū)域站站點(diǎn)個(gè)數(shù)多(2020 年約3 400 站),實(shí)時(shí)與歷史一體化數(shù)據(jù)量非常龐大。為滿足快速獲取數(shù)據(jù)需求,針對(duì)結(jié)構(gòu)化的地面統(tǒng)計(jì)數(shù)據(jù),采用主鍵、屬性和值3 個(gè)部分存儲(chǔ),如表1所示。
Table 1 Statistical data storage structure表1 統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
應(yīng)用云關(guān)系型數(shù)據(jù)庫(kù)分庫(kù)分表技術(shù),每個(gè)分庫(kù)負(fù)責(zé)數(shù)據(jù)讀寫(xiě)操作,分散整體訪問(wèn)壓力,有效提高數(shù)據(jù)存儲(chǔ)和服務(wù)效率。以支撐氣象數(shù)據(jù)查詢統(tǒng)計(jì)及預(yù)報(bào)、科研應(yīng)用需求為目標(biāo),建立自動(dòng)站小時(shí)、日、旬、月、年數(shù)據(jù)統(tǒng)計(jì)應(yīng)用表,形成基于云平臺(tái)的地面實(shí)時(shí)歷史一體化長(zhǎng)序列統(tǒng)計(jì)數(shù)據(jù)庫(kù),滿足業(yè)務(wù)系統(tǒng)和用戶對(duì)數(shù)據(jù)的各類應(yīng)用需求,如圖1 和表2 所示。
Table 2 Storage strategy of statistical database表2 數(shù)據(jù)庫(kù)存儲(chǔ)策略
一般情況下,對(duì)于質(zhì)量控制后的數(shù)據(jù),統(tǒng)計(jì)值要事先存儲(chǔ)在數(shù)據(jù)庫(kù)表中,在進(jìn)行任意時(shí)段數(shù)據(jù)實(shí)時(shí)統(tǒng)計(jì)時(shí),取已保存的統(tǒng)計(jì)結(jié)果及少量數(shù)據(jù)進(jìn)行合并統(tǒng)計(jì)運(yùn)算,即可得到最終的統(tǒng)計(jì)結(jié)果。以此原則開(kāi)展任意時(shí)段數(shù)據(jù)的實(shí)時(shí)統(tǒng)計(jì),可降低實(shí)時(shí)數(shù)據(jù)的讀取和統(tǒng)計(jì)時(shí)間,大大提高數(shù)據(jù)查詢效率。
本文選取日、月為時(shí)間單位,對(duì)任意時(shí)段在時(shí)間軸上進(jìn)行分解,設(shè)計(jì)任意時(shí)段數(shù)據(jù)統(tǒng)計(jì)流程。定義任意時(shí)段起始日期為t1,結(jié)束日期為t2,判斷開(kāi)始日期月增加1 與結(jié)束日期減少1 之前邏輯關(guān)系。將任意時(shí)段分解為兩種情形:①日數(shù)據(jù);②日數(shù)據(jù)、月數(shù)據(jù)。由圖2 確定各分解情形對(duì)應(yīng)的起止日期和讀取的數(shù)據(jù)庫(kù)表,進(jìn)而直接通過(guò)語(yǔ)句查詢統(tǒng)計(jì)數(shù)據(jù)結(jié)果。
其中,y1*m1表示年和月,*代表月份的變化可能引起年的變化,Month表示月表,Day表示日表。針對(duì)任意時(shí)段統(tǒng)計(jì)查詢,應(yīng)用年數(shù)據(jù)可以減少統(tǒng)計(jì)量,但無(wú)形中增加了判識(shí)流程時(shí)間復(fù)雜度。經(jīng)實(shí)例分析后,確定以日、月為統(tǒng)計(jì)單位較為合適。
Fig.1 Statistical database based on cloud platform stores real-time long series ground historical data圖1 基于云平臺(tái)的地面實(shí)時(shí)歷史長(zhǎng)序列統(tǒng)計(jì)數(shù)據(jù)庫(kù)
Fig.2 Data decomposition and identification process of arbitrary data statistical method圖2 任意數(shù)據(jù)統(tǒng)計(jì)方法資料分解判識(shí)流程
從時(shí)間跨度和并發(fā)數(shù)兩個(gè)角度來(lái)評(píng)估查詢時(shí)效,分別調(diào)用原關(guān)系型數(shù)據(jù)庫(kù)(SQL Server)和云關(guān)系型數(shù)據(jù)庫(kù),采用平均耗費(fèi)時(shí)間統(tǒng)計(jì)方法對(duì)兩種數(shù)據(jù)環(huán)境查詢效率進(jìn)行對(duì)比和評(píng)估。
檢驗(yàn)程序運(yùn)行于內(nèi)網(wǎng)服務(wù)器,服務(wù)器基本硬件配置為:2.5GHz CPU,64G 內(nèi)存,操作系統(tǒng)Windows 64 位。
為檢驗(yàn)不同時(shí)間跨度任意時(shí)段數(shù)據(jù)的查詢效率,設(shè)定3 種業(yè)務(wù)中常用的查詢個(gè)例進(jìn)行對(duì)比分析。查詢要素選擇氣溫、雨量、風(fēng)向風(fēng)速、氣壓、濕度、能見(jiàn)度等常用要素,統(tǒng)計(jì)量包括最大值、最小值、累計(jì)量、日數(shù)、排名等,每次查詢同一條件均重復(fù)10 次,取10 次平均耗時(shí)作為這一條件的最終耗時(shí)進(jìn)行計(jì)算。
2.2.1 歷年統(tǒng)計(jì)值查詢
初始日期設(shè)定為1 月1 日,以10 天為增長(zhǎng)單位確定循環(huán)的結(jié)束日期,查詢每個(gè)時(shí)間段內(nèi)區(qū)域站歷年(2004-2020年)統(tǒng)計(jì)值,結(jié)果如圖3 所示(彩圖掃OSID 碼可見(jiàn),下同)。原關(guān)系型數(shù)據(jù)庫(kù)查詢平均耗時(shí)隨時(shí)間跨度遞增,由0.78s 增加至3.05s,而云關(guān)系型數(shù)據(jù)庫(kù)任意時(shí)段的時(shí)間跨度查詢耗時(shí)均保持在0.6~0.8s 之間,可見(jiàn)云關(guān)系型數(shù)據(jù)庫(kù)性能較好,文中提出的任意時(shí)段數(shù)據(jù)統(tǒng)計(jì)方法效果明顯。
Fig.3 Map comparison of query time for statistical values over the years圖3 歷年統(tǒng)計(jì)值查詢耗時(shí)對(duì)比
2.2.2 任意時(shí)段30 年統(tǒng)計(jì)值查詢
初始日期和增長(zhǎng)單位同上,查詢每個(gè)時(shí)間段內(nèi)國(guó)家站30 年(1981-2010 年)統(tǒng)計(jì)值。數(shù)據(jù)量由國(guó)家站站數(shù)×天數(shù)×30 年=75×10×30=22 500 增加至75×360×30=810 000,是初始時(shí)段的36 倍。通過(guò)圖4 可以得到類似結(jié)論,查詢?cè)P(guān)系型數(shù)據(jù)庫(kù)平均耗時(shí)突變次數(shù)較多,呈緩慢遞增趨勢(shì);而云關(guān)系型數(shù)據(jù)庫(kù)查詢返回結(jié)果的時(shí)間介于0.01~0.03s 之間,穩(wěn)定性較好。
Fig.4 Map comparison of query time of 30-year statistical value in any period圖4 任意時(shí)段30 年統(tǒng)計(jì)值查詢耗時(shí)對(duì)比
2.2.3 任意時(shí)段統(tǒng)計(jì)值查詢
初始日期設(shè)定為2008 年1 月1 日,以30 天為增長(zhǎng)單位確定循環(huán)的結(jié)束日期,查詢每個(gè)時(shí)段內(nèi)區(qū)域站統(tǒng)計(jì)量。2008 年區(qū)域站站點(diǎn)數(shù)×天數(shù)=1 045×30=31 350,2020 年區(qū)域站站點(diǎn)數(shù)×天數(shù)=3 400×30×150=15 300 000,后者約增長(zhǎng)488 倍。從圖5 可以看出,原關(guān)系型數(shù)據(jù)庫(kù)平均耗時(shí)起初突變次數(shù)較多,隨后平緩增長(zhǎng)至0.72s;而云關(guān)系型數(shù)據(jù)庫(kù)平均耗時(shí)保持在0.1~0.3s 之間,并未隨著數(shù)據(jù)量的驟增發(fā)生明顯變化。通過(guò)對(duì)比兩個(gè)數(shù)據(jù)庫(kù)的耗時(shí)可以發(fā)現(xiàn),云關(guān)系型數(shù)據(jù)庫(kù)對(duì)提升數(shù)據(jù)統(tǒng)計(jì)效率作用非常明顯。
Fig.5 Map comparison of query time statistics in any period圖5 任意時(shí)段統(tǒng)計(jì)值查詢耗時(shí)對(duì)比
以極端天氣多用戶查詢進(jìn)行實(shí)驗(yàn),在10、50、100、500、1 000 不同用戶數(shù)情況下,為了盡量使兩者測(cè)試環(huán)境一致,分別在原關(guān)系型和云關(guān)系型數(shù)據(jù)庫(kù)中設(shè)定相同的統(tǒng)計(jì)任務(wù),記錄并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)響應(yīng)時(shí)間。圖6 為并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)性能對(duì)比情況。
并發(fā)數(shù)為10 時(shí),原關(guān)系型和云關(guān)系型數(shù)據(jù)庫(kù)平均耗時(shí)分別為101ms 和33ms;并發(fā)數(shù)增長(zhǎng)至1 000 時(shí),兩者分別為6 429ms 和592ms。由此看出,應(yīng)用云分布式存儲(chǔ)技術(shù),在高并發(fā)情況下,數(shù)據(jù)量越大,云關(guān)系型數(shù)據(jù)庫(kù)性能提高越明顯,本例提升了1 個(gè)數(shù)量級(jí),較好滿足了高并發(fā)統(tǒng)計(jì)數(shù)據(jù)需求。
Fig.6 Map comparison of query time in different concurrency圖6 不同并發(fā)數(shù)查詢耗時(shí)對(duì)比
本文利用云關(guān)系型數(shù)據(jù)服務(wù)建立了地面實(shí)時(shí)歷史一體化長(zhǎng)序列統(tǒng)計(jì)應(yīng)用數(shù)據(jù)庫(kù),并實(shí)現(xiàn)了任意時(shí)段數(shù)據(jù)統(tǒng)計(jì)方法。分布式數(shù)據(jù)服務(wù)的應(yīng)用不僅緩解了單臺(tái)數(shù)據(jù)庫(kù)服務(wù)器的運(yùn)行壓力,還滿足了用戶實(shí)時(shí)高并發(fā)訪問(wèn)需求,實(shí)現(xiàn)了硬件資源利用最大化。以日、月為統(tǒng)計(jì)單位,提出的任意時(shí)段數(shù)據(jù)統(tǒng)計(jì)方法能夠進(jìn)一步提高統(tǒng)計(jì)效率,且統(tǒng)計(jì)耗時(shí)不會(huì)隨著數(shù)據(jù)量的增大出現(xiàn)明顯變化。該研究成果通過(guò)氣象云大數(shù)據(jù)平臺(tái)數(shù)據(jù)服務(wù)系統(tǒng)提供數(shù)據(jù)服務(wù),為浙江氣象防災(zāi)減災(zāi)決策服務(wù)平臺(tái)等多個(gè)業(yè)務(wù)系統(tǒng)提供云數(shù)據(jù)支撐,應(yīng)用效果良好,對(duì)相關(guān)平臺(tái)開(kāi)發(fā)具有一定的指導(dǎo)作用。隨著氣象業(yè)務(wù)的快速發(fā)展,對(duì)于數(shù)據(jù)查詢服務(wù)的時(shí)效性要求會(huì)越來(lái)越高,數(shù)據(jù)的高效存儲(chǔ)和個(gè)性化服務(wù)仍需不斷完善,以滿足更高的業(yè)務(wù)需求。