房云龍 趙鐵成 潘江勇
【摘 要】為高效集成存儲航空氣象結構化數(shù)據(jù),提出一種基于XML文件的“存儲任務模型”。根據(jù)氣象數(shù)據(jù)的特點,“存儲任務”分為“數(shù)據(jù)收集”、“格式轉換”和“集成存儲”三個子任務,提取子任務處理過程中所有的參數(shù)作為XML文件的元素標簽,以一定的方式集中整合?!按鎯θ蝿铡迸cXML文件一一對應,便于增加、改變、刪除不同類型的數(shù)據(jù)存儲。利用基于XML文件的“存儲任務模型”,可以方便的設計程序完成不同類型結構化數(shù)據(jù)的存儲,提高了存儲程序的可移植性和可擴展性。
【關鍵詞】XML文件;存儲過程模型;民航氣象;結構化數(shù)據(jù);集成存儲
中圖分類號: TP316 文獻標識碼: A 文章編號: 2095-2457(2018)11-0104-003
DOI:10.19694/j.cnki.issn2095-2457.2018.11.044
0 引言
民航氣象數(shù)據(jù)是開展航空氣候統(tǒng)計評估及進行航空科學研究的基礎,是推動航空氣象科學發(fā)展的原動力。存儲民航氣象數(shù)據(jù)對提升航空預報的準確率、開展典型歷史個例全面分析、建立數(shù)值天氣預報產品的統(tǒng)計釋用、建立多源氣象探測數(shù)據(jù)融合系統(tǒng)等工作具有十分重要的意義。
民航氣象數(shù)據(jù)具有數(shù)據(jù)量大、時效性高、種類豐富的特點。目前,部分機場民航氣象部門存儲數(shù)據(jù)還處于手動存儲階段,計算機存儲數(shù)據(jù)也多為“單獨程序負責單獨數(shù)據(jù)”的狀態(tài),擴展性和移植型較差,還沒有一套系統(tǒng)、完善、同時便于預報員操作的自動化存儲過程。因此,有必要開展民航氣象數(shù)據(jù)存儲技術方面的工作,為氣象科學研究及業(yè)務建設提供數(shù)據(jù)基礎。
民航氣象數(shù)據(jù)可分為結構化數(shù)據(jù)和非結構化數(shù)據(jù)[1]。結構化數(shù)據(jù)也稱作行數(shù)據(jù),由二維表結構來表達和實現(xiàn)數(shù)據(jù)邏輯,嚴格地遵循數(shù)據(jù)格式與長度規(guī)范,可以通過關系型數(shù)據(jù)庫進行存儲和管理[2]。很多民航氣象數(shù)據(jù)是標準的結構化數(shù)據(jù)。本文以青島機場民航氣象數(shù)據(jù)為例,介紹了一種簡易的基于XML文件的“存儲過程模型”,以系統(tǒng)集成的存儲民航氣象結構化數(shù)據(jù)。
1 青島機場結構化氣象數(shù)據(jù)
目前青島機場可以獲得的結構化氣象數(shù)據(jù)包括民航數(shù)據(jù)和中國氣象局數(shù)據(jù)兩大類。其中民航數(shù)據(jù)有機場自動觀測系統(tǒng)數(shù)據(jù)(AWOS)、自動氣象站數(shù)據(jù)(AWS)、航空器氣象數(shù)據(jù)下傳(AMDAR)、機場風廓線雷達數(shù)據(jù)、民航飛行氣象情報等。中國氣象局數(shù)據(jù)包括:常規(guī)地面、高空探測數(shù)據(jù)、青島市自動站數(shù)據(jù)、青島市氣象局風廓線雷達數(shù)據(jù)、山東省自動站數(shù)據(jù)、山東省閃電定位數(shù)據(jù)等,具體見表1。
2 基于XML文件的“存儲過程模型”的建立
XML(EXtensible Markup Language,可擴展標記語言),是一種用于標記電子文件使其具有結構性的標記語言。XML主要用來傳輸和存儲數(shù)據(jù),通過XML技術,數(shù)據(jù)能夠存儲在獨立的XML文件中,以純文本格式進行存儲,提供了一種獨立于軟件和硬件的數(shù)據(jù)存儲方法,可以在不兼容的系統(tǒng)之間輕松地交換數(shù)據(jù)[3-4]。
鑒于XML文件的優(yōu)勢和特點,本文以XML文件為基礎建立數(shù)據(jù)“存儲任務模型”。存儲任務是指在計算機進行存儲數(shù)據(jù)過程中,按照一定的順序、方式、邏輯、自動完成某種類型數(shù)據(jù)收集、格式轉換、集成存儲的過程。每種類型數(shù)據(jù)的存儲都唯一對應一個存儲任務,每個存儲任務又唯一對應一個XML類型的屬性文件。
所有“存儲任務”對應的XML文件根元素統(tǒng)一命名為
2.1 數(shù)據(jù)收集
數(shù)據(jù)收集是指按照指定時間間隔、次序和遴選邏輯從原始數(shù)據(jù)源獲取數(shù)據(jù)的過程。青島機場原始結構化氣象數(shù)據(jù)為位于不同服務器的文本文件,可采用ftp方式實現(xiàn)數(shù)據(jù)收集工作。這樣在
2.2 格式轉換
結構化資料的原始數(shù)據(jù)是大量結構固定的文本文件,不同類數(shù)據(jù)具有不同的文件格式和更新頻率。原始文件缺測數(shù)據(jù)各不相同,轉換后統(tǒng)一定義為-99999;不同行數(shù)據(jù)之間統(tǒng)一以“回車換行符”分隔。為便于集中處理,定義基于csv格式的dbcsv格式文件。csv是一種通用的文本文件格式,通過逗號分隔存儲表格數(shù)據(jù),但csv不是單一的、定義明確的格式[4-5]。為方便處理, dbcsv的統(tǒng)一格式為:所有文件均為ASCII文本文件,后綴名為dbcsv;文件內容第一行為數(shù)據(jù)列名,對應將來數(shù)據(jù)入庫的表的字段名,第二行之后為數(shù)據(jù);所有列和數(shù)據(jù)之間以tab分隔。dbcsv本質也是csv文件,但規(guī)范更加嚴格,是集成存儲方案中重要的臨時數(shù)據(jù)格式。經(jīng)格式轉換后的dbcsv文件嚴格地遵循數(shù)據(jù)格式與長度規(guī)范,便于解析文件內容并將數(shù)據(jù)存儲到關系型數(shù)據(jù)庫保存。
在格式轉換過程中,一級標簽
2.3 集成存儲
集成存儲子任務主要進行數(shù)據(jù)入庫管理。青島機場氣象臺以MySQL作為存儲數(shù)據(jù)庫,因此集成存儲子任務中各參數(shù)設計以符合MySQL規(guī)則為依據(jù),具體標簽結構見表3。
數(shù)據(jù)庫地址、庫名、表名等即為入庫存儲的數(shù)據(jù)庫對應的信息,“新建表頻率< createTableFrq>”提供兩種選擇,即按月建表或按年建表。如果氣象數(shù)據(jù)每年的記錄數(shù)在500萬以下,選擇按年建表,否則選擇按月建表。例如amdar數(shù)據(jù)每年的記錄數(shù)超過2000萬,為保證查詢效率,選擇按月建表?!霸黾颖碇麈I
3 存儲任務模型的應用
基于XML文件的“存儲任務”模型是一個XML類型的單獨文件,其內容包含了數(shù)據(jù)收集、格式轉換及集成存儲全過程的所有信息。XML文件是w3c(萬維網(wǎng)聯(lián)盟)推薦的存儲和傳輸數(shù)據(jù)的標準格式,與程序及數(shù)據(jù)庫無關,主流的編程語言如Java、C、VS、python等都支持XML機制,可以方便的加載XML內部信息。由于“存儲任務”和XML一一對應,且XML是單獨的文件,因此可以通過增加、改變或刪除XML文件實現(xiàn)增加、改變或刪除數(shù)據(jù)的存儲,提高了數(shù)據(jù)存儲程序的可移植性和可擴展性。
需要指出的是,本文介紹的“存儲任務模型”,是數(shù)據(jù)存儲的創(chuàng)建模型,并非物理實現(xiàn)數(shù)據(jù)存儲。用戶可以根據(jù)實際需求,按照模型的流程進行編程實現(xiàn)數(shù)據(jù)存儲,也可以整合既有的數(shù)據(jù)存儲工具,實現(xiàn)任務的集約化。
4 結束語
本文介紹了一種簡單方便的基于XML文件的“存儲任務模型”,用于集中存儲民航氣象領域中大量的結構化數(shù)據(jù)。根據(jù)氣象數(shù)據(jù)的特點,“存儲任務”分為“數(shù)據(jù)收集”、“格式轉換”和“集成存儲”三個子任務。三個子任務在模型中分別對應著實現(xiàn)其功能的各項參數(shù),以XML標簽方式體現(xiàn)。利用基于XML文件的“存儲任務”模型,可以方便的設計程序完成不同類型結構化數(shù)據(jù)的存儲,提高了存儲程序的可移植性和可擴展性。
【參考文獻】
[1]王若曈,黃向東,張博.羅兵海量氣象數(shù)據(jù)實時解析與存儲系統(tǒng)的設計與實現(xiàn)[J].計算機工程與科學.2015,37(11):245-2054.
[2]潘順,金遠平,歐陽曄.結構化數(shù)據(jù)到XML數(shù)據(jù)的語義映射[J].東南大學學報(自然科學版).2002,32(3):331-334.
[3]孫永麗,劉成新.XML技術及其應用[J].中國電化教育,2002,19(3):115-117.
[4]趙艷妮,郭華磊.基于XML異構數(shù)據(jù)庫遷移技術研究[J].計算機與數(shù)字工程.2018(1):129-133.
[5]李金,利用CSV格式將新生數(shù)據(jù)錄入ILASII的快捷方法[J].圖書情報導刊.2015(12):148-149.
[6]吳慶晨,周偉,孫江艷.基于條件選擇的CSV文件數(shù)據(jù)挖掘算法研究[J].電腦編程技巧與維護.2017(11):54-56.