韓春花,張 歡,張俊明
(1.國家海洋信息中心 天津市 300171; 2.青島地球軟件技術有限公司 青島市 266012)
我國大洋調(diào)查始于上個世紀80年代初,至今已先后執(zhí)行了近40 個航次,獲取了大量的數(shù)據(jù)資料,內(nèi)容涵蓋水文、氣象、生物、化學、地質(zhì)、地球物理等多個學科,數(shù)據(jù)資料類型多樣,結構復雜,數(shù)據(jù)量大,是我國大洋工作的重要基礎,是政府進行相關決策的重要信息支撐,對其進行科學有效的管理,使其充分發(fā)揮作用至關重要。目前,我國大洋調(diào)查獲取的各類數(shù)據(jù)資料由大洋資料中心統(tǒng)一匯集、整理與管理?!笆濉逼陂g,大洋資料中心通過建設大洋數(shù)據(jù)管理與共享平臺實現(xiàn)大洋數(shù)據(jù)資料的管理與共享[1],大洋數(shù)據(jù)管理與共享平臺的核心是大洋數(shù)據(jù)庫,將大洋調(diào)查獲取的不同類型、不同結構的原始數(shù)據(jù)資料準確、自動、批量地加載入具有統(tǒng)一標準規(guī)范的大洋數(shù)據(jù)庫中是大洋數(shù)據(jù)管理的基礎和至關重要的工作。隨著計算機技術的飛速發(fā)展,目前將外部文件加載到數(shù)據(jù)庫有多種方法,常用的包括:可用Powerbuild、SQL*LOADER 等工具將Excel、Word 等外部數(shù)據(jù)加載到oracle 數(shù)據(jù)庫[2-6]。但是對于大洋數(shù)據(jù)庫來說,還無法直接利用現(xiàn)有的數(shù)據(jù)加載工具進行加載。有必要開發(fā)專門的大洋調(diào)查數(shù)據(jù)加載系統(tǒng),作為大洋數(shù)據(jù)管理與共享平臺的基礎技術工具,以實現(xiàn)大洋數(shù)據(jù)的高效、批量、準確加載。
大洋數(shù)據(jù)庫內(nèi)容包括大洋調(diào)查獲取的各類專業(yè)數(shù)據(jù)、研究成果及綜合信息等內(nèi)容。①專業(yè)數(shù)據(jù):包括大洋各航次開展的海洋水文、海面氣象、海洋生物、海洋化學、海洋地質(zhì)、海洋地球物理調(diào)查等獲取的原始數(shù)據(jù)資料、后處理數(shù)據(jù)、樣品分析測試與鑒定結果數(shù)據(jù)等內(nèi)容。②研究成果:包括大洋各研究開發(fā)項目或課題研究報告、整編數(shù)據(jù)、成果圖件,以及研發(fā)的數(shù)據(jù)庫、程序軟件、論文等內(nèi)容。③綜合信息:包括大洋各航次的調(diào)查日期、調(diào)查單位、參加人員、主要設備、航跡等內(nèi)容。
從數(shù)據(jù)管理的角度,將大洋數(shù)據(jù)歸納為:元數(shù)據(jù)、載體數(shù)據(jù)、基礎數(shù)據(jù)、標準化數(shù)據(jù)和專題數(shù)據(jù)5 個層次。①元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù),在大洋數(shù)據(jù)庫中采用核心元數(shù)據(jù),并能夠利用核心元數(shù)據(jù)進行導航。②載體數(shù)據(jù):匯集的第一手數(shù)據(jù),存于光盤或硬盤載體上,主要用于備查。③基礎數(shù)據(jù):在載體數(shù)據(jù)的基礎上,對其進行分類、整理、篩選后形成的數(shù)據(jù)集;④標準化數(shù)據(jù):依據(jù)一定的數(shù)據(jù)文件標準記錄格式,經(jīng)標準化處理和質(zhì)量控制之后形成的格式統(tǒng)一、標準統(tǒng)一的標準化數(shù)據(jù)集。⑤專題數(shù)據(jù):在標準化數(shù)據(jù)集基礎上,依據(jù)特定的使用需求,研制的統(tǒng)計分析數(shù)據(jù)、圖形產(chǎn)品等。這5 個層次的數(shù)據(jù)既相互獨立又有內(nèi)部關聯(lián)[7]。通過元數(shù)據(jù)可以方便地了解到全部大洋數(shù)據(jù)的基本情況;載體數(shù)據(jù)是最完整、最原始的大洋數(shù)據(jù),但一般不直接利用;基礎數(shù)據(jù)是經(jīng)過整理和處理后的原始數(shù)據(jù),是整個大洋數(shù)據(jù)的基礎;標準化數(shù)據(jù)是具有統(tǒng)一標準的數(shù)據(jù),可直接供用戶使用;基礎數(shù)據(jù)并不一定全部都能形成標準化數(shù)據(jù)。專題數(shù)據(jù)的應用性最強,可直接提供用戶使用。
大洋數(shù)據(jù)存儲方式有如下幾種:①電子表格文件存儲的數(shù)據(jù)文件,數(shù)據(jù)文件的第一行是表頭信息,包含列項和計量單位,從第二行開始記錄數(shù)據(jù),每列數(shù)據(jù)與表頭對應,樣品分析測試數(shù)據(jù)多采用此種存儲方式;②數(shù)據(jù)說明+數(shù)據(jù)實體:此種方式一般用來記錄特殊結構的數(shù)據(jù),如多波束、重力、磁力、地震等原始數(shù)據(jù),數(shù)據(jù)說明文件是一個電子表格或文本文件,用來記錄數(shù)據(jù)的空間位置、時間范圍、數(shù)據(jù)內(nèi)容、數(shù)據(jù)量等說明信息,采用一個相對地址來指向數(shù)據(jù)實體;③具有標準格式的ascII 碼文本文件:此種方式一般用來記錄具有標準記錄格式的數(shù)據(jù),如CTD、ADCP、走航氣象等標準化數(shù)據(jù)集。
根據(jù)不同類型、不同層次、不同存儲方式的大洋數(shù)據(jù)特點,筆者設計了不同的數(shù)據(jù)加載方式。大洋數(shù)據(jù)的加載方式歸納為以下4 種:①加載數(shù)據(jù)文件至數(shù)據(jù)庫表:此種加載方式適用于采用電子表格直接記錄的數(shù)據(jù)文件。電子表格文件的第一行是描述信息,與數(shù)據(jù)庫表字段相對應。大洋數(shù)據(jù)中的化學、地質(zhì)樣品分析測試數(shù)據(jù)多采用此方式加載。②加載清單文件同時上傳數(shù)據(jù)文件到服務器指定目錄:這種加載方式適用于非明碼的數(shù)據(jù)文件,將數(shù)據(jù)說明文件加載至對應的數(shù)據(jù)庫表中,同時將數(shù)據(jù)實體上傳到服務器指定位置,通過說明文件記錄的位置信息能夠準確定位到數(shù)據(jù)實體文件。大洋數(shù)據(jù)中的重力、磁力、淺剖、地震、多波束等原始調(diào)查數(shù)據(jù)采用此方式加載[8~13]。③加載數(shù)據(jù)文件到數(shù)據(jù)庫表同時備份數(shù)據(jù)文件:按照一定的規(guī)則解析數(shù)據(jù)文件中的有關信息并將其加載到數(shù)據(jù)庫指定表中,同時備份數(shù)據(jù)文件到服務器指定目錄。這種方式一般用來加載具有標準格式的ascII 碼文本文件,如CTD、ADCP、走航ADCP 標準化數(shù)據(jù)集多采用此方式加載。④抽取/統(tǒng)計相關信息到數(shù)據(jù)庫表:從其他數(shù)據(jù)庫表中自動提取或統(tǒng)計信息加載到新的數(shù)據(jù)庫表中[14-16]。這種加載方式主要用于專題數(shù)據(jù)和元數(shù)據(jù)的加載。
依據(jù)不同的專業(yè)數(shù)據(jù)類型、數(shù)據(jù)層次和加載方式,基于C++語言封裝好的類庫MFC,設計開發(fā)了大洋數(shù)據(jù)加載系統(tǒng)。該加載系統(tǒng)可實現(xiàn)對各類大洋專業(yè)數(shù)據(jù)、研究成果及綜合信息的數(shù)據(jù)校驗與加載。系統(tǒng)界面友好,操作簡便,維護方便,靈活性強(圖3)。
加載系統(tǒng)采用模塊化設計思路,核心模塊包括:配置文件、參數(shù)設置、文件校驗和日志管理4 個模塊,整個大洋數(shù)據(jù)加載系統(tǒng)的算法設計如圖2 所示。
圖1 大洋數(shù)據(jù)加載系統(tǒng)界面
大洋數(shù)據(jù)的類型多種多樣,不同時期的同一種數(shù)據(jù)類型的內(nèi)容與結構時常發(fā)生變化,如果完全用人工進行調(diào)整將花費大量的人力,也容易出。在大洋數(shù)據(jù)加載系統(tǒng)中,通過制作各種數(shù)據(jù)類型的配置文件,將數(shù)據(jù)庫中的表結構與數(shù)據(jù)說明文件、數(shù)據(jù)文件和格式化文本文件建立關聯(lián),通過計算機程序自動進行查找與匹配,再經(jīng)過可視化界面進行人工干預與調(diào)整,可靈活實現(xiàn)不同類型、不同結構數(shù)據(jù)的加載。無論數(shù)據(jù)庫結構或是數(shù)據(jù)文件結構有變動時,只需維護配置文件即可。制作配置文件的過程是:選擇待加載的數(shù)據(jù)文件和數(shù)據(jù)庫表,在表格視圖中顯示數(shù)據(jù)文件中列與數(shù)據(jù)庫表中的字段的對應情況,當數(shù)據(jù)庫中的字段與數(shù)據(jù)清單文件中的字段不一致無法自動匹配時,采用手動匹配,確保對應無誤后,程序?qū)⒈砀褚晥D中的對應關系形成XML 格式的配置文件(圖3)。
參數(shù)設置模塊的功能主要包括數(shù)據(jù)庫連接、服務器連接及初始化字典表等。通過該模塊的參數(shù)設置,可實現(xiàn)加載系統(tǒng)與數(shù)據(jù)庫、服務器的連接,指定加載目標位置,保證數(shù)據(jù)配置文件與目標數(shù)據(jù)庫結構類型一致。如數(shù)據(jù)庫、服務器乃至數(shù)據(jù)庫結構有所改變時,只需更改相關參數(shù)即可。在數(shù)據(jù)庫維護過程中,如數(shù)據(jù)庫結構有所改變,則可通過初始化字典表來實現(xiàn)加載程序的自動更新。
數(shù)據(jù)加載入庫的正確性、唯一性將直接影響到數(shù)據(jù)的專業(yè)應用,因此在加載數(shù)據(jù)前進行數(shù)據(jù)校驗尤為重要[17]。大洋數(shù)據(jù)加載系統(tǒng)的數(shù)據(jù)校驗主要包括數(shù)據(jù)的規(guī)范性校驗、范圍校驗和重復性校驗。①規(guī)范性校驗:針對待加載的數(shù)據(jù)文件格式、內(nèi)容、規(guī)則的規(guī)范性進行校驗。校驗的主要內(nèi)容包括:比對待加載數(shù)據(jù)清單文件的列項與相應的配置文件中的列項是否一致、驗證每條記錄的各個數(shù)據(jù)要素的數(shù)據(jù)類型、長度、精度是否符合數(shù)據(jù)庫標準等。②范圍校驗:依據(jù)經(jīng)驗對異常值進行判別。在校驗程序中內(nèi)置一套范圍參數(shù),在進行數(shù)據(jù)校驗時進行范圍判別,找出超出范圍的數(shù)據(jù)并在日志中進行提示,由用戶進行判別此數(shù)據(jù)是否合法、是否進行加載。③重復性校驗:比對待加載的數(shù)據(jù)記錄是否已經(jīng)在數(shù)據(jù)庫中存在,如果存在,則不進行加載。在數(shù)據(jù)加載前必須進行數(shù)據(jù)校驗,校驗成功方可進行數(shù)據(jù)加載,如校驗失敗則可通過日志管理進行瀏覽、查找和更正。
圖2 大洋加載系統(tǒng)的算法設計
圖3 配置文件的制作
日志管理模塊的主要功能是方便用戶查看對加載系統(tǒng)進行操作的各種記錄,包括加載數(shù)據(jù)的時間、內(nèi)容、類型、數(shù)量、是否加載成功等內(nèi)容。日志內(nèi)容以列表框的形式展示,同時為了滿足用戶更方便的對日志進行有效的管理,程序還提供一鍵快捷的操作,包括清空列表、刪除選中、輸出文件、打開日志、導出所選等功能。
目前大洋加載系統(tǒng)已經(jīng)實現(xiàn)了大洋資料目錄、大洋載體數(shù)據(jù)、大洋基礎數(shù)據(jù)、大洋專題數(shù)據(jù)四大類數(shù)據(jù)下110 個小類大洋數(shù)據(jù)向大洋數(shù)據(jù)庫的加載。大洋數(shù)據(jù)庫是一個高效管理大洋海量數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫管理系統(tǒng)利用B/S 系統(tǒng)結構,通過圖形、表格、關鍵字等多種檢索模式,實現(xiàn)各類數(shù)據(jù)的在線查詢、檢索。針對各類數(shù)據(jù)特點,大洋數(shù)據(jù)加載系統(tǒng)在數(shù)據(jù)加載及數(shù)據(jù)校驗方面提供了多種有效的手段,保證數(shù)據(jù)快速、準確入庫,通過完善的數(shù)據(jù)和用戶分級分類管理體制,可將數(shù)據(jù)推到用戶桌面,為大洋科研和相關工作提供數(shù)據(jù)檢索和決策支持。
大洋數(shù)據(jù)加載系統(tǒng)在Microsoft windows 操作系統(tǒng)下運行,依據(jù)大洋數(shù)據(jù)的類型與特點,采用專業(yè)軟件開發(fā),通過配置文件、參數(shù)設置、數(shù)據(jù)校驗和日志管理等模塊,實現(xiàn)大洋數(shù)據(jù)的快速、準確加載。運用該加載系統(tǒng),大洋資料中心完成了大洋“十二五”期間所有航次的調(diào)查數(shù)據(jù)加載,加載效果良好,該系統(tǒng)已成為大洋資料中心數(shù)據(jù)管理的重要基礎技術手段之一。
[1] 韓春花,梁建峰,張俊明,等.大洋數(shù)據(jù)管理與共享平臺設計,計算機與現(xiàn)代化,2012,7:218-221.
[2] 姚琦云.將外部文件中的數(shù)據(jù)加載到Oracle 表的若干方法[J].電信技術,2000,8:45-46.
[3] 周敏.如何實現(xiàn)ORACLE 外部文件數(shù)據(jù)的自動加載[J].金融電子化,2000,11:14-17.
[4] 滕永昌.將Excel 數(shù)據(jù)加載到Oracle9i 數(shù)據(jù)庫[J].電腦知識與技術:學術交流,2006,9(26):126.
[5] 張希.文本數(shù)據(jù)文件向遠程ORACLE 數(shù)據(jù)庫加載的實現(xiàn)方法[J].計算機系統(tǒng)應用,1996,12:45-46.
[6] 姜典言,吳濤,張麗茹.海量數(shù)據(jù)裝載工具SQL Loader 技術分析[J].無線電工程,2012,42(5):57-60.
[7] 石綏祥,雷波.中國數(shù)字海洋——理論與實踐[M].北京:海洋出版社,2011.
[8] 唐江浪,李剛.基于GeoFrame 二維地震數(shù)據(jù)加載的研究與應用[J].軟件,2013(4):23-25,56.
[9] 梁宇,苗放,陳富龍.基于World Wind 的數(shù)據(jù)加載方法的研究[J].電腦與電信,2014,1:22-26.
[10] 王舒遲,邢會民.勘探開發(fā)動靜態(tài)數(shù)據(jù)庫數(shù)據(jù)加載研究[J].天然氣與石油,2013(6):13-15,69.
[11] 孟照旭,于會松,趙愛國,丁韋.全準噶爾盆地解釋項目數(shù)據(jù)庫地震數(shù)據(jù)加載方法[J].新疆石油地質(zhì),2009,30(3):376-378.
[12] 孫強,孫龍清.統(tǒng)計數(shù)據(jù)加載模型的研究與實現(xiàn)[J].微計算機信息,2009,18:155-157.
[13] 張守昌,吳雅麗,施大廣,等.油田地震勘探數(shù)據(jù)建設探索[J].中國管理信息化,2013,22:45-47.
[14] 先曉兵,常晉義.數(shù)據(jù)倉庫實現(xiàn)中ETL 的應用研究[J].計算機與現(xiàn)代化,2007,10:43-46.
[15] 熊忠陽,張玉芳,吳中福.數(shù)據(jù)倉庫數(shù)據(jù)加載技術[J].重慶大學學報(自然科學版),2002,25(2):106-108.
[16] 孫安健,王星,閆曉瑜.通用ETL 工具的研究與實現(xiàn)[J].計算機應用與軟件,2012,29(12):175-178,210.
[17] 劉麗麗,莊成三,周艷芳.基于XML 與.NET Remoting 的數(shù)據(jù)傳輸與加載[J].計算機與現(xiàn)代化,2004,5:81-83.