譚凱中 , 秦 勃, 何亞文
(1. 中國海洋大學(xué)信息科學(xué)與工程學(xué)院, 山東 青島 266100; 2. 中國石油大學(xué)(華東)海洋與空間信息學(xué)院, 山東 青島 266580)
近年來,臺風(fēng)、颶風(fēng)、風(fēng)暴潮等各類海洋現(xiàn)象和災(zāi)害發(fā)生日益頻繁。如何利用已有的大量海洋現(xiàn)象特征數(shù)據(jù)對各類海域中海洋現(xiàn)象的生成、演變進行分析、預(yù)測和追蹤,從而達到海洋現(xiàn)象過程的可視化分析、災(zāi)害預(yù)警等目的是目前研究的熱點。實現(xiàn)海洋現(xiàn)象過程時空數(shù)據(jù)的組織與高效表達,是達到上述目標以及后期海洋時空數(shù)據(jù)分析、海洋時空模式挖掘等相關(guān)需求的基礎(chǔ)。
實現(xiàn)海洋現(xiàn)象過程時空數(shù)據(jù)的組織與高效表達,需要建立針對海洋現(xiàn)象過程的對象數(shù)據(jù)組織模型。連續(xù)漸變的時空現(xiàn)象的組織與表達一直是地理信息科學(xué)領(lǐng)域的熱點和難點問題,文獻[1]提出了一種模擬地理過程的數(shù)據(jù)模型開發(fā)手段,對現(xiàn)有的動態(tài)建模方法進行補充,更詳細地描述了系統(tǒng)在每個時間步長中的狀態(tài)。文獻[2]提出了時空變化追蹤查詢地理現(xiàn)象動態(tài)交互框架,該框架將動態(tài)現(xiàn)象的信息組織為靜態(tài)結(jié)構(gòu)、過程和場景的層次結(jié)構(gòu)。文獻[3]提出了過程思想的“事件-過程-狀態(tài)”地理現(xiàn)象的時空分級表達結(jié)構(gòu),實現(xiàn)了縱向時間尺度上地理動態(tài)信息的表達。文獻[4-5]對時空過程進行了不同角度的語義描述,建立了多種時空過程信息表達與組織模型。文獻[6]提出了過程對象的BNF范式組織,基于海洋時空過程模型構(gòu)建了原型系統(tǒng)。除去數(shù)據(jù)模型之外,可擴展標記語言XML等獨立的數(shù)據(jù)交換格式和管理方法作為信息的載體,可用于數(shù)據(jù)庫、地理空間數(shù)據(jù)之間的數(shù)據(jù)交換和數(shù)據(jù)編碼[7-8],美國環(huán)境系統(tǒng)研發(fā)公司開發(fā)shapefile空間數(shù)據(jù)開發(fā)格式借助點、線、面刻畫地理空間數(shù)據(jù)對象,也是目前業(yè)界的一個開放標準。
除了數(shù)據(jù)入庫前的預(yù)處理以外,還需要對信息多元結(jié)構(gòu)復(fù)雜的海洋時空數(shù)據(jù)建立空間數(shù)據(jù)索引。常見的空間索引技術(shù)包括二叉樹類型空間索引、基于B樹的空間索引以及空間目標填充曲線等索引技術(shù)。其中R樹類型的空間索引是B樹在多維空間的擴展,具有結(jié)構(gòu)平衡、空間利用率和查詢效率高等特點。在R樹的分布式并行構(gòu)建方面,文獻[12]設(shè)計了非共享并行環(huán)境下的Master-client R樹空間數(shù)據(jù)索引結(jié)構(gòu),通過搜索Master R樹葉子節(jié)點包含的空間數(shù)據(jù)對象所在clientR樹的client id 進行進一步空間查詢,同時在現(xiàn)有的云平臺和分布式技術(shù)上也提出了一些并行構(gòu)建R樹的方法[13-14]。文獻[15-16]提出了利用混合空間數(shù)據(jù)索引管理高密度點云數(shù)據(jù)的方法,以滿足大量點云數(shù)據(jù)的高效處理需求。文獻[17]針對NoSQL數(shù)據(jù)庫的時空查詢問題,提出了一種適用于HBASE的雙層架構(gòu)的時空索引STEHIX, 并基于此結(jié)構(gòu)設(shè)計并優(yōu)化了空間范圍查詢和KNN查詢。
由于現(xiàn)有的時空數(shù)據(jù)研究大多局限于二維地理空間數(shù)據(jù)的存儲與查詢,在三維時變過程數(shù)據(jù)處理方面探索較少。本文針對海洋現(xiàn)象過程時空數(shù)據(jù)的高效檢索與數(shù)據(jù)組織問題,首先設(shè)計了海洋現(xiàn)象過程的對象數(shù)據(jù)組織模型?;诖藬?shù)據(jù)組織模型,提出了一種面向過程的海洋時空數(shù)據(jù)檢索算法。為保證算法的檢索效率,設(shè)計了三維空間海洋時空數(shù)據(jù)分片策略,并在數(shù)據(jù)分片策略之上構(gòu)建分布式R樹空間數(shù)據(jù)索引,以實現(xiàn)基于云平臺的海洋現(xiàn)象過程時空數(shù)據(jù)存儲與檢索系統(tǒng)。
海洋現(xiàn)象具有時刻變化的動態(tài)特征,因此海洋現(xiàn)象過程是一個連續(xù)漸變的時空過程。由于數(shù)據(jù)采集技術(shù)的限制,目前發(fā)布的海洋觀測數(shù)據(jù)是按照某一長度的時間間隔進行采集的,所采集的時空數(shù)據(jù)是離散時變的。因此,為了支持后續(xù)數(shù)據(jù)的高效檢索,在數(shù)據(jù)組織階段以一系列海洋現(xiàn)象狀態(tài)對象的變化過程模擬海洋現(xiàn)象的連續(xù)漸變過程。海洋現(xiàn)象過程對象的BNF范式組織如下:
ProcecessID標識海洋現(xiàn)象過程,ProcecessType標識海洋現(xiàn)象過程類型,Time標識海洋現(xiàn)象從生成到消亡的時間周期,SubProcess標識海洋現(xiàn)象過程所包含的子過程。從數(shù)據(jù)檢索的語義上描述,海洋現(xiàn)象過程可以進一步分解為一系列子過程。海洋現(xiàn)象過程對象的子過程具有類似的組織結(jié)構(gòu),其BNF范式組織如下:
其中SubProcess唯一標識海洋現(xiàn)象過程的子過程,Time用于描述子過程的時態(tài),Space描述空間信息及其隨時間t的變化關(guān)系,
記錄上一子過程與下一子過程的指針。例如海洋現(xiàn)象過程從生成至消亡可分解為幾個生命周期階段,使用海洋現(xiàn)象階段對象表述完整海洋現(xiàn)象過程中的生命周期階段,其BNF范式組織如下:
::= 海洋現(xiàn)象的各階段有著固定的時間順序,所以除了ID標識符等屬性外,還需記錄前一個以及下一個要發(fā)生的海洋現(xiàn)象階段對象,分別使用PreviousStageID、NextStageID記錄。
海洋現(xiàn)象狀態(tài)對象可用于組織海洋現(xiàn)象過程或子過程對象,主要包含空間描述和時態(tài)描述,且空間特征不隨時間變化。其BNF范式表示如下:
::= StatusID標簽唯一標識一個海洋現(xiàn)象狀態(tài)對象,Space標簽為空間屬性,Time標簽描述時態(tài),Attributes標簽用于表示其他屬性特征。SquID用于標志海洋現(xiàn)象狀態(tài)對象所屬的子過程。
1.2 海洋現(xiàn)象過程對象數(shù)據(jù)組織模型XML描述方式
海洋現(xiàn)象過程時空數(shù)據(jù)的存儲與分布式檢索系統(tǒng)以XML作為海洋現(xiàn)象過程的對象數(shù)據(jù)組織模型的表述語言,本文以臺風(fēng)為例對時空過程進行組織。
海洋現(xiàn)象臺風(fēng)的時空過程或子過程對應(yīng)狀態(tài)集合S,S={S1,S2,S3…Sn}。當(dāng)抽取臺風(fēng)的中心位置、風(fēng)圈半徑等信息為主要特征時,每個海洋現(xiàn)象狀態(tài)Sn包含了時間屬性tn,中心位置On以及一組分層的空間形態(tài)特征集合,每一層可近似看作以O(shè)n為中心的一定半徑范圍內(nèi)的區(qū)域Cl。因此tn時刻狀態(tài)對應(yīng)的空間特征可描述為:
,其中l(wèi)max為最大層數(shù)。每一層的區(qū)域范圍與時間屬性t以及層數(shù)l有關(guān)即(t,l)→r,此處的層數(shù)也可近似看作高程。 海洋現(xiàn)象臺風(fēng)的特征數(shù)據(jù)包括臺風(fēng)中心,近中心最大風(fēng)速、各級風(fēng)圈半徑,層高與氣壓變化等特點,其中時間、中心位置空間特征、層數(shù)等為海洋現(xiàn)象狀態(tài)對象檢索前需提供的鍵屬性。臺風(fēng)的狀態(tài)對象XML描述如圖1所示,臺風(fēng)的時空過程對象XML描述如圖2所示。
圖1 狀態(tài)對象XML描述
圖2 臺風(fēng)時空過程對象XML描述
數(shù)據(jù)模型中以每個采樣時間點對應(yīng)一個海洋現(xiàn)象狀態(tài)對象,臺風(fēng)的各海洋現(xiàn)象狀態(tài)對象除時間屬性外還包含位置信息和空間結(jié)構(gòu)信息,位置信息以臺風(fēng)中心經(jīng)緯度坐標(lat,lon)表示,每一時刻的臺風(fēng)中心位置可構(gòu)成完整的臺風(fēng)路徑信息??臻g結(jié)構(gòu)則是一個三維體模型。數(shù)據(jù)采樣是分層且離散的,因此三維體模型采用面模型表示。每一層對應(yīng)的二維平面形狀表示待檢索的區(qū)域。由于臺風(fēng)邊界信息不規(guī)則且極為復(fù)雜,為了在檢索階段保證數(shù)據(jù)的完整性并為后續(xù)的海洋現(xiàn)象特征數(shù)據(jù)分析提供可靠的數(shù)據(jù)支撐,以距離臺風(fēng)中心7級風(fēng)圈半徑以內(nèi)區(qū)域表示待查詢范圍,以一百公里作為距離單位,完成每一層的空間結(jié)構(gòu)信息組織。
2 海洋現(xiàn)象過程時空數(shù)據(jù)相關(guān)索引設(shè)計
2.1 三維空間海洋時空數(shù)據(jù)分片策略
海洋時空數(shù)據(jù)處理在時間和空間上存在一定的連續(xù)性,并且海洋時空數(shù)據(jù)檢索查詢有一個重要特點:存儲的海洋時空數(shù)據(jù)集規(guī)模很大,但是待檢索的數(shù)據(jù)結(jié)果集規(guī)模不大。因為海洋時空數(shù)據(jù)處理通常計算量很大,例如某條臺風(fēng)路徑上的風(fēng)場、氣壓和降雨量等數(shù)據(jù)的實時計算和可視化等應(yīng)用,如果輸入的數(shù)據(jù)檢索結(jié)果集規(guī)模太大則難以滿足數(shù)據(jù)處理的時效性。因此設(shè)計一種合理的空間數(shù)據(jù)對象分片策略,通過劃分空間區(qū)域?qū)Q髸r空數(shù)據(jù)場進行分片可以更好的支持海洋現(xiàn)象過程時空數(shù)據(jù)的檢索工作。
三維空間區(qū)域的劃分工作最終會以海洋時空數(shù)據(jù)分片的方式將數(shù)據(jù)預(yù)處理階段得到的海洋時空數(shù)據(jù)輸出到云平臺。因此三維空間區(qū)域的劃分方式需要綜合考慮數(shù)據(jù)分片文件大小和分區(qū)劃分依據(jù)兩方面問題。分片數(shù)據(jù)量大小可以結(jié)合具體系統(tǒng)考量,盡管區(qū)域劃分階段形成的網(wǎng)格較細,可以降低后續(xù)數(shù)據(jù)檢索階段帶來的數(shù)據(jù)冗余,檢索查詢效率較高。但由于數(shù)據(jù)存儲平臺的限制,大量小文件會引發(fā)數(shù)據(jù)存儲平臺效率低下的問題,例如HDFS分布式文件系統(tǒng)中常見的數(shù)據(jù)塊設(shè)置大小為64MB、128MB等。當(dāng)分片文件大小遠大于系統(tǒng)數(shù)據(jù)分塊大小時,也會引發(fā)存儲端的數(shù)據(jù)冗余。因此數(shù)據(jù)分片文件的大小最好接近于具體數(shù)據(jù)存儲系統(tǒng)的文件分塊大小,且文件分塊不宜過大,應(yīng)根據(jù)具體的應(yīng)用需求加以調(diào)整。
算法首先輸入海洋時空數(shù)據(jù)對象的分區(qū)數(shù)量,根據(jù)經(jīng)度方向和緯度方向的分區(qū)數(shù)量分別計算每個分區(qū)跨越的經(jīng)緯度latInterval、lonInterval,然后計算待分區(qū)數(shù)據(jù)對象的三維索引信息grid3DIdx,grid3DIdx包含了數(shù)據(jù)對象的經(jīng)度、緯度和高度信息。由于海洋現(xiàn)象過程時空數(shù)據(jù)的檢索是一個分層查詢的過程,所以需要根據(jù)數(shù)據(jù)對象所在層數(shù)劃分區(qū)域。最后通過空間數(shù)據(jù)對象的三維索引信息及每個方向上的分區(qū)數(shù)量計算傳入數(shù)據(jù)對象的分區(qū)ID。
區(qū)域劃分的依據(jù)主要是數(shù)據(jù)的時間信息和空間信息。海洋時空數(shù)據(jù)以時間為最外層進行組織,由于海洋現(xiàn)象過程時空數(shù)據(jù)的檢索時間跨度不會太長,因此可以以年為單位劃分在最上層,也就是同一區(qū)域的海洋時空數(shù)據(jù)對應(yīng)的年份相同。下層子區(qū)域則以數(shù)據(jù)所在層數(shù)為單位進行第二次劃分,然后按照經(jīng)緯度劃分得到最終的數(shù)據(jù)分片文件。空間區(qū)域劃分是連續(xù)的,數(shù)據(jù)分區(qū)階段的主要工作則是按照數(shù)據(jù)對象的經(jīng)度、維度和層數(shù)三個維度加以分區(qū)。下面是三維空間海洋時空數(shù)據(jù)分片過程中數(shù)據(jù)分區(qū)的算法描述,其中經(jīng)緯度的兩個方向以均勻網(wǎng)格的形式加以劃分,算法1給出了數(shù)據(jù)分區(qū)算法的描述。
算法1:數(shù)據(jù)分區(qū)算法
輸入:point,partitionNum,levels
輸出:partitionID
1./*計算分區(qū)跨越的經(jīng)緯度*/
2.latInterval= 180/partitionNum.x
3.lonInterval= 360/partitionNum.y
4./*計算數(shù)據(jù)對象所在分區(qū)的索引*/
5.grid3DIdx.x= (90+point.x)/latIntervel
6.grid3DIdx.y=point.y/lonIntervel
7.grid3DIdx.level=point.level
8./*計算分區(qū)ID*/
9.partitionID=grid3DIdx.level*partionNum.x*partionNum.y+grid3DIdx.x*partionNum.y+grid3DIdx.y。
2.2 基于空間數(shù)據(jù)分區(qū)的R樹分布式空間索引算法
本文結(jié)合面向過程的海洋時空數(shù)據(jù)檢索算法思想設(shè)計基于空間數(shù)據(jù)分區(qū)的R樹分布式空間索引算法。以全球風(fēng)場為例,構(gòu)建的索引結(jié)構(gòu)如圖3所示。
圖3 基于數(shù)據(jù)分區(qū)的R樹索引
索引構(gòu)建的核心思想是基于三維空間海洋時空數(shù)據(jù)分片設(shè)計R樹分布式空間索引的基本數(shù)據(jù)結(jié)構(gòu),構(gòu)造的空間數(shù)據(jù)索引是一種單級的時空數(shù)據(jù)索引。在分區(qū)邊界信息分布式統(tǒng)計階段中,首先要分布式統(tǒng)計每個數(shù)據(jù)分片內(nèi)的海洋時空數(shù)據(jù)空間屬性信息,計算出數(shù)據(jù)分片的各維度邊界信息,建立最小外接矩形。使用數(shù)據(jù)分片在分布式存儲平臺上的文件查找路徑作為數(shù)據(jù)索引描述,將數(shù)據(jù)分片的最小外接矩形和文件查找路徑(I0,I1,Path)作為數(shù)據(jù)分片的索引信息描述。每個數(shù)據(jù)分片代表一個分區(qū),因此數(shù)據(jù)分片內(nèi)存儲的海洋時空數(shù)據(jù)對象每個空間維度的最大值和最小值就構(gòu)成了當(dāng)前數(shù)據(jù)分區(qū)的最小外接矩形。
索引信息收集階段主要對上述數(shù)據(jù)索引描述進行收集并構(gòu)建索引信息描述集。遍歷索引信息描述集中的每個索引信息描述,并作為空間數(shù)據(jù)對象插入到R樹中,基于STR算法[18]構(gòu)建當(dāng)前層的全局R樹空間數(shù)據(jù)索引。構(gòu)建完成后分布式統(tǒng)計下一層的海洋時空數(shù)據(jù)分片文件信息,重復(fù)執(zhí)行上述過程。
圖3標注了近地面的3層大氣,全球風(fēng)場數(shù)據(jù)共分為17層標準大氣,三維空間數(shù)據(jù)分片策略根據(jù)數(shù)據(jù)的經(jīng)度、維度和層數(shù)進行區(qū)域劃分,通過分區(qū)階段形成的網(wǎng)格完成R樹索引的分層構(gòu)建。
3 面向過程的海洋時空數(shù)據(jù)檢索
3.1 面向過程的海洋時空數(shù)據(jù)檢索算法的設(shè)計
海洋現(xiàn)象過程時空數(shù)據(jù)的檢索操作可以轉(zhuǎn)換為時空數(shù)據(jù)集合到時空過程數(shù)據(jù)集合的映射。由于海洋現(xiàn)象過程時空數(shù)據(jù)實際上是特定時間和空間區(qū)域范圍的海洋時空數(shù)據(jù)集合,因此數(shù)據(jù)的檢索包含空間屬性信息過濾和時間屬性信息過濾兩個過程,空間和時間屬性信息的過濾條件來自待檢索海洋現(xiàn)象過程對象所包含的一系列海洋現(xiàn)象狀態(tài)對象的空間和時態(tài)特征信息。海洋現(xiàn)象狀態(tài)對象的空間特征信息屬于不隨時間變化的靜態(tài)空間信息,時態(tài)信息的時間區(qū)間范圍較短或者僅包含某個時間采樣點。海洋時空數(shù)據(jù)經(jīng)過兩個階段的過濾篩選最終得到海洋現(xiàn)象過程時空數(shù)據(jù)。因此海洋現(xiàn)象過程時空數(shù)據(jù)的分布式檢索可以采用單機-單機并行-分布式并行-單機的模式執(zhí)行,這里以Master-worker并行模式為例,總體上分為如下幾個過程:
(1)加載海洋現(xiàn)象過程的對象數(shù)據(jù)模型信息,將各個狀態(tài)的描述信息讀取到主節(jié)點的內(nèi)存中,根據(jù)海洋現(xiàn)象狀態(tài)的描述信息首先生成一個空間屬性約束條件。
(2)主節(jié)點進程根據(jù)空間屬性約束條件查找空間數(shù)據(jù)索引,篩選出需要讀取的海洋時空數(shù)據(jù)分片。
(3)Worker節(jié)點進程根據(jù)空間屬性約束條件分布式并行過濾每個分片內(nèi)的海洋時空數(shù)據(jù)。
(4)Worker節(jié)點進程根據(jù)時間屬性約束條件分布式并行過濾海洋時空數(shù)據(jù)。
(5)主節(jié)點進程收集滿足約束條件的海洋時空數(shù)據(jù),并進行排序。最終合并構(gòu)造成完整的海洋現(xiàn)象過程數(shù)據(jù)對象并保存至分布式存儲平臺。
算法2描述了三維空間下海洋現(xiàn)象過程時空數(shù)據(jù)的檢索流程,由于不同時間的海洋現(xiàn)象狀態(tài)數(shù)據(jù)相對獨立,其中數(shù)據(jù)分片的篩選過程可以在主節(jié)點內(nèi)存中并行查找數(shù)據(jù)分片,以多核多線程的方式搜索R樹索引。數(shù)據(jù)過濾過程在具體實現(xiàn)過程中以分布式并行的方式完成。
算法2:海洋現(xiàn)象過程時空數(shù)據(jù)檢索
輸入:最大層數(shù)level,時空過程對象Process,R樹空間數(shù)據(jù)索引
輸出:結(jié)果集result
1.result← {}
2.forl← 1tolevel
3.forstate∈Process
4.range←getRange(state,l)
5.RangeSet←
6.endfor
7.splits←Query(Rtree,RangeSet)
8.dataset←LoadData(splits)
9.filterResult←spaceFilter(dataset,rangeSet)
10.result←timeFilter(dataset,rangeSet)
11.endfor
12.sort(result)
3.2 面向過程的海洋時空數(shù)據(jù)檢索算法的實現(xiàn)
本文以海洋現(xiàn)象臺風(fēng)為例描述海洋現(xiàn)象過程時空數(shù)據(jù)的檢索過程,如圖4所示。
圖4 臺風(fēng)時空過程數(shù)據(jù)檢索
海洋現(xiàn)象過程對象的時空特征預(yù)先組織在XML數(shù)據(jù)模型文件中,在元數(shù)據(jù)信息加載階段首先讀取各個海洋現(xiàn)象狀態(tài)對象在當(dāng)前層的空間特征,以臺風(fēng)路徑上的臺風(fēng)中心和風(fēng)圈半徑構(gòu)成空間距離數(shù)據(jù)對象。算法的空間屬性信息過濾階段可通過分布式距離連接查詢(將一組較小的數(shù)據(jù)點集和另一組空間數(shù)據(jù)對象集合以距離為約束條件進行連接的查詢操作)實現(xiàn),其中的空間距離數(shù)據(jù)對象即距離連接操作的左集。集合構(gòu)建完畢后進入數(shù)據(jù)分片篩選階段。
在分片篩選階段分區(qū)數(shù)據(jù)集的規(guī)模遠小于海洋時空數(shù)據(jù)集,此過程不會超出單機的處理能力,因此可采用單機并行方式利用多核多線程實現(xiàn)數(shù)據(jù)分區(qū)的并行查詢。主節(jié)點各線程根據(jù)傳入的坐標點及相應(yīng)的空間距離調(diào)用R樹分布式空間索引,篩選出與滿足空間查詢區(qū)域相交的海洋時空數(shù)據(jù)分片并獲取描述信息,應(yīng)用程序主線程將分片描述與空間距離數(shù)據(jù)對象傳入到距離約束查詢階段。
距離約束查詢是一個數(shù)據(jù)的分布式過濾過程,通過傳入的分片索引描述讀取分布式文件系統(tǒng)的存儲路徑,構(gòu)造海洋時空數(shù)據(jù)對象集合即距離連接操作的右集。此時集群系統(tǒng)的任務(wù)調(diào)度器根據(jù)待處理的數(shù)據(jù)分區(qū)向worker節(jié)點分發(fā)任務(wù),worker節(jié)點進程在過濾過程中利用空間距離數(shù)據(jù)對象生成數(shù)據(jù)過濾的判定條件,通過多任務(wù)并行處理的方式實現(xiàn)海洋時空數(shù)據(jù)對象的空間屬性信息過濾,將滿足判定條件的數(shù)據(jù)對象傳遞到時間屬性信息過濾階段。
時間屬性信息過濾的完成需要構(gòu)造一個時間屬性過濾器。在距離連接查詢之后海洋時空數(shù)據(jù)對象會與海洋現(xiàn)象狀態(tài)的ID關(guān)聯(lián)。在具體實現(xiàn)中可以在過濾操作之前構(gòu)建一個海洋現(xiàn)象過程的時空關(guān)系集合,數(shù)據(jù)集合不包含海洋現(xiàn)象狀態(tài)的具體信息,以元組(id,position,time)的形式存儲,從而減少了內(nèi)存占用空間。由于集合信息是只讀的,主節(jié)點以共享變量的方式將集合數(shù)據(jù)廣播到各Worker節(jié)點。根據(jù)當(dāng)前海洋現(xiàn)象狀態(tài)的時間屬性信息生成過濾判定條件構(gòu)造時間屬性過濾器。Worker節(jié)點進程在接收到數(shù)據(jù)處理任務(wù)和廣播變量后,提取傳入到時間屬性過濾器的時間屬性信息,若對應(yīng)的時刻與當(dāng)前海洋現(xiàn)象狀態(tài)的時間屬性信息不一致,則海洋時空數(shù)據(jù)對象不符合過濾判定條件。經(jīng)過兩步過濾可以收集到各海洋現(xiàn)象狀態(tài)對象的海洋時空數(shù)據(jù)集。所有符合過濾判定條件的海洋時空數(shù)據(jù)對象將進入到數(shù)據(jù)的收集過程。
主節(jié)點進程的收集過程負責(zé)收集經(jīng)過空間和時間屬性信息過濾之后屬于各個海洋現(xiàn)象狀態(tài)的海洋時空數(shù)據(jù)對象。若當(dāng)前檢索的層數(shù)并未達到最大層,則需要加載海洋現(xiàn)象過程對象在下一層的信息描述,直至各層數(shù)據(jù)收集完畢,進入合并與排序過程。先進行數(shù)據(jù)對象集合的合并工作,再依據(jù)所屬狀態(tài)進行數(shù)據(jù)集的劃分,按照層數(shù)、緯度、經(jīng)度的順序進行排序,最后將得到的海洋現(xiàn)象過程對象數(shù)據(jù)寫入到分布式存儲平臺中。
由于全球范圍的海洋時空數(shù)據(jù)集合以數(shù)據(jù)分片的方式均勻分布在各節(jié)點,臺風(fēng)的運動軌跡是連續(xù)的,經(jīng)過篩選后的數(shù)據(jù)分片所代表空間范圍則是多個在經(jīng)度和緯度上保持連續(xù)的地理空間區(qū)域,這些子區(qū)域的數(shù)據(jù)分片分布式存儲在集群中的各個節(jié)點。當(dāng)采用計算節(jié)點和存儲節(jié)點統(tǒng)一部署時,每個Worker節(jié)點處理的數(shù)據(jù)分區(qū)規(guī)模差距不大,從而在一定程度上保證了分布式并行處理過程中的負載均衡。
在基于GeoSpark的算法實現(xiàn)過程中,主要通過PointRDD抽象來實現(xiàn)數(shù)據(jù)集的篩選。通過讀取數(shù)據(jù)模型中的時空特征信息構(gòu)造空間距離數(shù)據(jù)對象,可利用Geometry抽象的Circle子類實現(xiàn)構(gòu)造,并對生成的空間距離數(shù)據(jù)對象進行劃分。在距離約束查詢中向PointRDD的構(gòu)造函數(shù)中傳入數(shù)據(jù)分片文件路徑構(gòu)造海洋時空數(shù)據(jù)集,根據(jù)空間距離數(shù)據(jù)對象集合設(shè)計一個空間屬性判定器并代入到RDD中的fillter算子中進行分布式過濾,也可將連接操作的左右集直接代入到JoinQuery內(nèi)置的空間連接查詢算子中實現(xiàn)過濾,并在后續(xù)數(shù)據(jù)的收集過程中分離空間距離數(shù)據(jù)對象。時間屬性過濾可將構(gòu)造好的時間屬性過濾器代入到filter算子中實現(xiàn)。操作完成后進行一次collect操作,將分布在各個節(jié)點上的數(shù)據(jù)匯聚到主節(jié)點上進行收集。
3.3 海洋現(xiàn)象過程時空數(shù)據(jù)存儲與檢索系統(tǒng)
海洋現(xiàn)象過程時空數(shù)據(jù)存儲與檢索系統(tǒng)提供了海洋時空數(shù)據(jù)預(yù)處理與組織、海洋時空數(shù)據(jù)存儲與索引構(gòu)建以及海洋現(xiàn)象過程時空數(shù)據(jù)分布式并行檢索與存儲等基本功能,并最終為相關(guān)的海洋現(xiàn)象過程時空數(shù)據(jù)應(yīng)用系統(tǒng)提供數(shù)據(jù)服務(wù),系統(tǒng)總體架構(gòu)如圖5所示。
圖5 系統(tǒng)架構(gòu)圖
系統(tǒng)包含三層架構(gòu),最下層的處理對象為不同來源的海洋數(shù)據(jù),例如衛(wèi)星遙感數(shù)據(jù)、觀測數(shù)據(jù)與海洋模擬數(shù)據(jù)等。系統(tǒng)針對不同類型的海洋時空數(shù)據(jù)進行統(tǒng)一的整理和組織,并將用戶抽取的海洋現(xiàn)象過程時空特征集組織為XML格式的數(shù)據(jù)模型信息,上傳至海洋時空數(shù)據(jù)存儲系統(tǒng),為數(shù)據(jù)存儲系統(tǒng)提供數(shù)據(jù)來源。存儲層包含三個方面的數(shù)據(jù):海洋現(xiàn)象過程數(shù)據(jù)組織模型(XML文件)、不同種類不同年份的海洋時空數(shù)據(jù)(TSV文件)以及存儲于數(shù)據(jù)倉庫的海洋現(xiàn)象過程對象數(shù)據(jù)。存儲平臺以分布式內(nèi)存文件系統(tǒng)HDFS與多級異構(gòu)存儲介質(zhì)為核心構(gòu)建,并利用基于Raft一致性算法的分布式協(xié)調(diào)服務(wù)ZooKeeper實現(xiàn)高可用支持模塊,滿足數(shù)據(jù)存儲的可靠性以及高可用性。最上層為海洋現(xiàn)象過程時空數(shù)據(jù)檢索系統(tǒng),系統(tǒng)通過數(shù)據(jù)存儲接口完成與存儲平臺的訪問控制和交互。當(dāng)系統(tǒng)接收到檢索客戶端發(fā)來的索引建立或更新請求時,索引構(gòu)建模塊根據(jù)收到的索引構(gòu)建參數(shù)對海洋時空數(shù)據(jù)進行分區(qū),并基于數(shù)據(jù)分區(qū)構(gòu)建R樹空間數(shù)據(jù)索引。當(dāng)系統(tǒng)接收到檢索客戶端發(fā)送的數(shù)據(jù)檢索請求時,檢索系統(tǒng)將檢索參數(shù)傳遞給分布式檢索引擎,實現(xiàn)對海洋現(xiàn)象過程時空數(shù)據(jù)的分布式并行檢索,最后調(diào)用數(shù)據(jù)持久化模塊將檢索結(jié)果集導(dǎo)入至數(shù)據(jù)倉庫。
4 實驗
4.1 實驗設(shè)計
實驗通過測試海洋現(xiàn)象過程時空數(shù)據(jù)存儲與檢索系統(tǒng)的相關(guān)功能模塊,以臺風(fēng)的海洋現(xiàn)象過程時空數(shù)據(jù)檢索為基礎(chǔ),設(shè)計了對照實驗組,分別測試了海洋現(xiàn)象過程時空數(shù)據(jù)查詢在基于海洋時空數(shù)據(jù)對象構(gòu)建的R樹空間數(shù)據(jù)索引和基于空間數(shù)據(jù)分區(qū)構(gòu)建的R樹空間數(shù)據(jù)索引上的執(zhí)行效率?;诤Q髸r空數(shù)據(jù)對象構(gòu)建的R樹空間數(shù)據(jù)索引將每個采樣點記錄的海洋時空數(shù)據(jù)對象的空間屬性信息作為葉節(jié)點中存儲的空間索引描述信息,根據(jù)數(shù)據(jù)的分區(qū)分布式構(gòu)建多個R樹空間數(shù)據(jù)索引,在算法執(zhí)行過程中將每個數(shù)據(jù)分區(qū)內(nèi)的R樹空間數(shù)據(jù)索引讀取到內(nèi)存緩存中,通過匯總每個分區(qū)內(nèi)的查詢結(jié)果實現(xiàn)所有海洋時空數(shù)據(jù)對象的過濾功能。
實驗使用的海洋時空數(shù)據(jù)主要來自于NOAA的NCEP再分析數(shù)據(jù)集,地理網(wǎng)格經(jīng)度分別為2.5°,1.25°與0.83°,共分為17層,數(shù)據(jù)量大小為37.4、147.9和332.0 GB,經(jīng)過解析處理和插值加密等預(yù)處理操作以TSV文件格式預(yù)先存儲在分布式文件系統(tǒng)中。實驗使用的臺風(fēng)中心、路徑、7級風(fēng)圈半徑等參數(shù)信息匯總了中國氣象網(wǎng)以及各地海洋預(yù)報臺網(wǎng)站發(fā)布的公開數(shù)據(jù),其中的2018年第22號臺風(fēng)山竹的參數(shù)信息整合為本次實驗的XML數(shù)據(jù)模型信息。實驗集群共包含12個物理節(jié)點,Spark集群包含1個Master節(jié)點與11個Worker節(jié)點,每個Worker節(jié)點使用了6 GB內(nèi)存存儲。高可用模塊使用了3個節(jié)點存儲日志和相關(guān)配置信息。
4.2 實驗結(jié)果與分析
實驗設(shè)計了兩種不同的索引方案對臺風(fēng)的海洋現(xiàn)象過程時空數(shù)據(jù)查詢進行測試,方案一使用了基于海洋時空數(shù)據(jù)對象構(gòu)建的R樹空間數(shù)據(jù)索引,方案二使用了基于空間數(shù)據(jù)分區(qū)構(gòu)建的R樹空間數(shù)據(jù)索引。檢索對象為臺風(fēng)山竹的時空過程,檢索的時間區(qū)間范圍為2018年的9月11日6 時—15日8時,氣壓范圍為300~1 000 hPa。實驗結(jié)果如表1,2所示。
表1 方案一檢索效率
表2 方案二檢索效率
表1記錄了方案1的查詢時間和效率,指標中的1v1~lv7為檢索算法在查詢1~7層數(shù)據(jù)所消耗的時間。方案一在37.4 GB數(shù)據(jù)集上的分層平均查詢時間為8.2 s,檢索結(jié)果集大小為378.0 kB,檢索速率為6.6 kB/s;在147.9 GB數(shù)據(jù)集上的分層平均查詢時間為49.3 s,檢索結(jié)果集大小為1 525.8 kB,檢索速率為4.4 kB/s;在332.0 GB數(shù)據(jù)集上的分層平均查詢時間為95.7 s,檢索結(jié)果集大小為3 461.1 kB,檢索速率為5.2 kB/s。
表2記錄了方案2的查詢時間和效率。方案二中算法在37.4 GB數(shù)據(jù)集上的分層平均查詢時間為1.0 s,檢索結(jié)果集大小為378.0 kB,檢索速率為51.7 kB/s;在147.9 GB數(shù)據(jù)集上的分層平均查詢時間為3.7 s,檢索結(jié)果集大小為1 525.8 kB,檢索速率為58.4 kB/s;在332.0 GB數(shù)據(jù)集上的分層平均查詢時間為8.8 s,檢索結(jié)果集大小為3 461.1 kB,檢索速率為56.1 kB/s。
在海洋現(xiàn)象過程時空數(shù)據(jù)的查詢實驗中,數(shù)據(jù)檢索的總查詢時間為實驗的核心指標,總查詢時間的增長趨勢如圖6所示。在對照組1中,方案一總查詢時間為57.5 s,方案二為7.3 s,方案二的查詢速度比方案一快了7.85倍。在對照組2中,方案一總查詢時間為345.4 s,方案二為26.1 s,方案二的查詢速度比方案一快了13.2倍。在對照組2中,方案一總查詢時間為669.6 s,方案二為61.6 s,方案二的查詢速度比方案一快了10.9倍。橫向?qū)Ρ葋砜?,方案二的查詢速度明顯較快,且隨著數(shù)據(jù)量增大查詢效率進一步拉大。
圖6 查詢時間增長趨勢圖
經(jīng)過分析可知,方案一的查詢時間相對數(shù)據(jù)量的增長速率較高,不過總體上趨近于線性增長。主要原因是該查詢方案構(gòu)建的索引策略在空間屬性信息過濾階段需要訪問各個數(shù)據(jù)分區(qū)內(nèi)的R樹,如果數(shù)據(jù)集的規(guī)模超過了集群Worker節(jié)點的內(nèi)存緩存限制時,部分數(shù)據(jù)分區(qū)需要保存在硬盤上,數(shù)據(jù)量增大時磁盤內(nèi)的數(shù)據(jù)分區(qū)所占比例越來越高,從而逐步降低查詢性能。方案二的查詢時間增長率較低,原因在于該方案通過R樹空間數(shù)據(jù)索引查詢海洋時空數(shù)據(jù)對象所在分片文件的位置,因此在數(shù)據(jù)過濾的效率主要與分片篩選階段搜索到的分片文件數(shù)量以及每個分片文件的數(shù)據(jù)量有關(guān)。當(dāng)數(shù)據(jù)精度提高,而分片文件數(shù)據(jù)量大小保持不變,將使得空間區(qū)域的劃分更加細致。這樣使得分片篩選得到的數(shù)據(jù)冗余更小,存儲和檢索效率也得到進一步提升。
圖7為兩種方案在不同數(shù)據(jù)集上的索引構(gòu)建時間對比圖。對比可得,方案一的索引構(gòu)建效率較高,但兩者索引構(gòu)建效率的比率并未拉開明顯差距,因此在保證數(shù)據(jù)檢索效率的前提下,方案二的索引構(gòu)建效率可以接受。雖然方案二因數(shù)據(jù)分區(qū)降低了索引構(gòu)建效率,但查詢效率穩(wěn)定高效,能夠應(yīng)對海洋現(xiàn)象過程時空數(shù)據(jù)的檢索和處理需求。
圖7 索引建立時間對比圖
5 結(jié)語
針對海洋現(xiàn)象過程時空數(shù)據(jù)的組織與檢索問題,首先根據(jù)檢索查詢的語義提出了一種海洋現(xiàn)象過程對象數(shù)據(jù)組織模型,以支持后續(xù)數(shù)據(jù)檢索。在面向過程的海洋時空檢索算法中結(jié)合了分布式計算與R樹空間數(shù)據(jù)索引等技術(shù),實現(xiàn)了檢索階段的空間屬性信息過濾和時間屬性信息過濾,同時為了更好的優(yōu)化算法執(zhí)行效率,設(shè)計了三維空間數(shù)據(jù)分片策略對海洋時空數(shù)據(jù)場進行空間區(qū)劃劃分,形成的每個海洋時空數(shù)據(jù)分片做為數(shù)據(jù)分區(qū),并基于空間數(shù)據(jù)分區(qū)構(gòu)建R樹空間數(shù)據(jù)索引,通過查找R樹篩選海洋時空數(shù)據(jù)分片。實驗結(jié)果表明,面向過程的海洋時空數(shù)據(jù)檢索算法能夠?qū)崿F(xiàn)海洋現(xiàn)象過程時空數(shù)據(jù)的快速有效檢索。由于實驗所使用的數(shù)據(jù)量和數(shù)據(jù)種類有限,后續(xù)的研究中有待于收集更為完備的數(shù)據(jù),在更大規(guī)模的數(shù)據(jù)集上測試,進一步提高和優(yōu)化數(shù)據(jù)檢索的效率。
猜你喜歡上下分片與詞的時空佈局 詞學(xué)(2022年1期)2022-10-27利用狀態(tài)歸約處理跨分片交易的多輪驗證方案① 計算機系統(tǒng)應(yīng)用(2022年5期)2022-06-27物聯(lián)網(wǎng)區(qū)塊鏈中基于演化博弈的分片算法 電子科技大學(xué)學(xué)報(2022年3期)2022-05-28跨越時空的相遇 四川黨的建設(shè)(2022年8期)2022-04-28鏡中的時空穿梭 GIS空間數(shù)據(jù)與地圖制圖融合技術(shù) 炎黃地理(2019年1期)2019-09-10基于模糊二分查找的幀分片算法設(shè)計與實現(xiàn) 火控雷達技術(shù)(2018年4期)2019-01-15玩一次時空大“穿越” 作文大王·低年級(2018年10期)2018-12-06時空之門 小獼猴智力畫刊(2016年5期)2016-05-14