曲騰騰 許貴林 嚴(yán)小敏 劉 顥 程承旗
(1.北京大學(xué) 北京 100871)(2.南寧師范大學(xué)北部灣環(huán)境演變與資源利用教育部重點(diǎn)實(shí)驗(yàn)室 南寧 530001)(3.南寧師范大學(xué)廣西地表過(guò)程與智能模擬重點(diǎn)實(shí)驗(yàn)室 南寧 530001)(4.武漢數(shù)字工程研究所 武漢 430074)
21世紀(jì)是海洋經(jīng)濟(jì)時(shí)代,海洋經(jīng)濟(jì)在各國(guó)國(guó)民經(jīng)濟(jì)中的地位和作用越來(lái)越突出。我黨的十八屆五中全會(huì)上提出,要牢固樹(shù)立創(chuàng)新、協(xié)調(diào)、綠色、開(kāi)放、共享的發(fā)展理念,并就加快轉(zhuǎn)變農(nóng)業(yè)發(fā)展方式以及拓展藍(lán)色經(jīng)濟(jì)空間、壯大海洋經(jīng)濟(jì)、科學(xué)開(kāi)發(fā)海洋資源等方面提出了一系列工作要求[1]。在海洋經(jīng)濟(jì)建設(shè)中,海洋時(shí)空大數(shù)據(jù)體系建設(shè)尤為重要。
海洋時(shí)空大數(shù)據(jù)建設(shè)依托的數(shù)據(jù)來(lái)源多、處理分析復(fù)雜、時(shí)空關(guān)聯(lián)強(qiáng),服務(wù)對(duì)象和服務(wù)形式也將非常廣泛。當(dāng)前海量海洋時(shí)空數(shù)據(jù)的存儲(chǔ)與管理存在著數(shù)據(jù)管理形式單一、靈活性不足等問(wèn)題;另外,大量海洋時(shí)空數(shù)據(jù)處理系統(tǒng)獲取的半結(jié)構(gòu)、非結(jié)構(gòu)性信息難以構(gòu)建高效的索引結(jié)構(gòu)進(jìn)行統(tǒng)一管理與實(shí)時(shí)調(diào)度。由此造成多源異構(gòu)海洋時(shí)空數(shù)據(jù)的服務(wù)信息與集成度較弱,協(xié)同管理應(yīng)用技術(shù)存在瓶頸;多源異構(gòu)海洋時(shí)空數(shù)據(jù)嚴(yán)重缺乏高效的信息檢索和集成能力以及相應(yīng)的方法與工具;多源異構(gòu)海洋時(shí)空數(shù)據(jù)的數(shù)據(jù)挖掘水平也普遍偏低。因此,攻關(guān)更為高效的時(shí)空檢索技術(shù),是海洋時(shí)空大數(shù)據(jù)建設(shè)亟待解決的瓶頸問(wèn)題。
本文針對(duì)多源異構(gòu)海洋時(shí)空大數(shù)據(jù),依托Geo-SOT地球剖分理論[2]與北斗網(wǎng)格編碼技術(shù)[3],利用海洋時(shí)空數(shù)據(jù)的區(qū)位編碼所本身固有的空間關(guān)聯(lián)能力[4],建立了與區(qū)位編碼相對(duì)應(yīng)的地球剖分網(wǎng)格索引大表模型。同一地區(qū)的不同類(lèi)型海洋數(shù)據(jù)索引信息可集中存儲(chǔ)在同一個(gè)大表單元中[5],從而實(shí)現(xiàn)結(jié)構(gòu)化與非結(jié)構(gòu)化一體、柵格與矢量一體、本地與分布式一體的剖分索引。同時(shí)該研究利用1.4億條靜態(tài)海洋環(huán)境數(shù)據(jù)開(kāi)展了區(qū)域時(shí)空查詢(xún)的典型實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明基于此項(xiàng)研究的海洋時(shí)空數(shù)據(jù)檢索響應(yīng)時(shí)間均可保證在100ms以?xún)?nèi)。由此充分驗(yàn)證了地球剖分網(wǎng)格索引大表模型可解決海洋時(shí)空大數(shù)據(jù)索引難、檢索慢的問(wèn)題,有望在未來(lái)進(jìn)一步提高海洋時(shí)空大數(shù)據(jù)的調(diào)度和查詢(xún)檢索服務(wù)的效率。
根據(jù)GeoSOT地球剖分網(wǎng)格理論,任何一個(gè)面片的編碼都可以表示為〈緯向編碼,經(jīng)向編碼〉的二元組形式,面片剖分層次隱含表示在編碼之中[6]。由于這一編碼方案充分考慮了與現(xiàn)有地圖分幅方案的兼容[7],因此采用了緯向和經(jīng)向兩個(gè)方向進(jìn)行編碼。但地圖分幅本質(zhì)上還是為了查找數(shù)據(jù)方便而設(shè)計(jì)的,在使用計(jì)算機(jī)建立海洋數(shù)據(jù)索引時(shí)完全可以采用處理速度更快的一維面片索引碼。
因此我們以面片索引碼為主鍵(Primary Key),建立非關(guān)系型“鍵—值”數(shù)據(jù)庫(kù)(Key-Value Store DB)[8]。非關(guān)系型的“鍵—值”數(shù)據(jù)庫(kù)采用類(lèi)似表的形式組織數(shù)據(jù),將它們組織成一個(gè)“多維”稀疏矩陣,在邏輯上就形成了一張巨大的表。在大表模型的稀疏矩陣中,第一維采用面片索引碼為行主鍵進(jìn)行排序。第二維定義為屬性組,一個(gè)屬性組是包含多屬性列的集合,它們一般具有類(lèi)似的屬性,系統(tǒng)在存儲(chǔ)和訪(fǎng)問(wèn)表時(shí),都是以屬性組為單元組織。第三維即屬性列,理論上,一個(gè)屬性組中屬性列的個(gè)數(shù)不受限制,屬性列的命名方式通常采用“屬性組:屬性列”的方式。
由此,我們?cè)O(shè)計(jì)了如圖1所示的剖分?jǐn)?shù)據(jù)統(tǒng)一組織結(jié)構(gòu)。整個(gè)存儲(chǔ)框架下有許多數(shù)據(jù)表,數(shù)據(jù)表的主鍵是某一層級(jí)的GeoSOT編碼[9],與實(shí)際三維空間中的某一個(gè)體塊唯一對(duì)應(yīng)。同時(shí)由于空間編碼具有遞歸性、唯一性、一致性、有序性的特征,該編碼可直接作為數(shù)據(jù)庫(kù)索引進(jìn)行檢索查詢(xún)。每一行數(shù)據(jù)中記錄了原始數(shù)據(jù)的各類(lèi)信息,例如類(lèi)別、用途、物理屬性等。這種存儲(chǔ)方式能夠在一張表上方便地表達(dá)出同一空間位置上不同來(lái)源、不同類(lèi)別的數(shù)據(jù)信息。
圖1 剖分?jǐn)?shù)據(jù)統(tǒng)一組織結(jié)構(gòu)
由于空間范圍較大時(shí)或者選取網(wǎng)格尺度較為精細(xì)時(shí)網(wǎng)格編碼數(shù)量激增,不利于存儲(chǔ)管理,同時(shí)考慮到海洋時(shí)空大數(shù)據(jù)對(duì)于多尺度的需求,我們選取“分表”的策略來(lái)對(duì)邏輯結(jié)構(gòu)進(jìn)行完善。每一個(gè)表都只存儲(chǔ)某一層級(jí)的編碼所對(duì)應(yīng)的數(shù)據(jù)。每一個(gè)父編碼都保留對(duì)其下一層級(jí)子編碼所在的數(shù)據(jù)表的指針。這樣在該父編碼進(jìn)行查詢(xún)之后,如果需要進(jìn)一步精細(xì)查詢(xún),能夠直接對(duì)應(yīng)到其他表中的子編碼所在的數(shù)據(jù)表。同時(shí),表與表之間的大小可以保持基本統(tǒng)一,有利于實(shí)現(xiàn)分布式管理,在應(yīng)對(duì)超大規(guī)模和高并發(fā)的需求時(shí)能夠保持負(fù)載均衡,提高效率。
本文對(duì)多源海洋時(shí)空數(shù)據(jù)集中每一個(gè)基礎(chǔ)地理要素(點(diǎn)、線(xiàn)、面)或每一景影像或每一數(shù)值場(chǎng)區(qū)域添加一個(gè)全球唯一的標(biāo)識(shí)碼,將GeoSOT編碼和海洋數(shù)據(jù)的原始數(shù)據(jù)屬性值構(gòu)成一條數(shù)據(jù)記錄。海洋數(shù)據(jù)通常是不規(guī)范的結(jié)構(gòu)化數(shù)據(jù),對(duì)多源數(shù)據(jù)的檢索往往是多屬性檢索。本文根據(jù)每一類(lèi)海洋數(shù)據(jù)的屬性特征,分別設(shè)計(jì)如下表所示的邏輯結(jié)構(gòu)視圖,在實(shí)際應(yīng)用中也可以直接利用某類(lèi)數(shù)據(jù)原有的數(shù)據(jù)結(jié)構(gòu)表,只需增加一個(gè)如表1所示的“Geo-SOTcode”編碼列即可。
表1 海洋數(shù)據(jù)的數(shù)據(jù)表邏輯結(jié)構(gòu)(以遙感數(shù)據(jù)為例)
由此可見(jiàn),我們?cè)O(shè)計(jì)的海洋數(shù)據(jù)邏輯結(jié)構(gòu)一般由三部分組成:GeoSOTcode編碼、Column key和詳細(xì)屬性列。以遙感數(shù)據(jù)為例,其中GeoSOTcode編碼是索引的主鍵;Column key列的SatelliteID是遙感數(shù)據(jù)的衛(wèi)星編號(hào);屬性列包含遙感數(shù)據(jù)的其他屬性信息。
海洋數(shù)據(jù)剖分索引大表是實(shí)現(xiàn)海洋數(shù)據(jù)元數(shù)據(jù)索引功能的形式,是指在現(xiàn)有的數(shù)據(jù)層之上添加海洋數(shù)據(jù)剖分索引大表來(lái)實(shí)現(xiàn)從GeoSOTcode編碼到數(shù)據(jù)層中的數(shù)據(jù)標(biāo)識(shí)之間的轉(zhuǎn)化,通過(guò)數(shù)據(jù)標(biāo)識(shí)來(lái)定位查詢(xún)數(shù)據(jù)的存儲(chǔ)位置實(shí)現(xiàn)數(shù)據(jù)查詢(xún)的技術(shù)[10~11]。通過(guò)該技術(shù),可以實(shí)現(xiàn)不同數(shù)據(jù)中心之間海洋數(shù)據(jù)元數(shù)據(jù)的統(tǒng)一查詢(xún),并能夠在數(shù)據(jù)中心內(nèi)部支持關(guān)聯(lián)查詢(xún)和拓?fù)洳樵?xún)。其核心思想是針對(duì)海洋數(shù)據(jù)的時(shí)空信息,即GeoSOTcode編碼建立主鍵索引,然后在剖分索引大表的屬性列上建立二級(jí)索引。第一級(jí)索引是GeoSOTcode編碼索引,即對(duì)空間對(duì)象的區(qū)域位置和時(shí)間進(jìn)行檢索,第二級(jí)索引是對(duì)海洋數(shù)據(jù)的屬性列建立索引達(dá)到多條件檢索。給定一個(gè)GeoSOTcode編碼,通過(guò)第一級(jí)索引就可以找到網(wǎng)格內(nèi)某段時(shí)間范圍內(nèi)的所有數(shù)據(jù)。通過(guò)第二級(jí)索引,可以進(jìn)一步篩選出符合要求的數(shù)據(jù)。
隨著數(shù)據(jù)量的增長(zhǎng),以及不斷有新數(shù)據(jù)插入,海洋數(shù)據(jù)剖分索引大表會(huì)不斷增長(zhǎng)。當(dāng)該表增長(zhǎng)到一定大小時(shí),可設(shè)置剖分索引大表的最大容量,保證海洋數(shù)據(jù)索引大表的結(jié)構(gòu)不變的情況。計(jì)算機(jī)按照先前設(shè)計(jì)的規(guī)則自動(dòng)分裂剖分索引大表,即一分為二,然后把分裂后子索引大表由其它的主機(jī)維護(hù),分裂后的表可以獨(dú)立增長(zhǎng),再進(jìn)行分裂,如此反復(fù)。由于分裂出來(lái)的子表被分布在不同的主機(jī)上維護(hù),對(duì)大表的操作演化成對(duì)各子表的操作,處理效率顯然高于對(duì)整個(gè)大表的操作。又因?yàn)榫W(wǎng)格索引碼行鍵按照八叉樹(shù)遍歷的Z序排列,即位置相鄰網(wǎng)格被盡可能地組織在相同或相鄰的子表中,從而保證了數(shù)據(jù)訪(fǎng)問(wèn)效率。
在海洋數(shù)據(jù)剖分索引大表中,索引數(shù)據(jù)在存儲(chǔ)前經(jīng)過(guò)了排序和壓縮,各類(lèi)屬性信息都被連接為字符串并按照屬性列的字典序排列。某一張大表在它的生長(zhǎng)過(guò)程中會(huì)分裂為許多子表,新產(chǎn)生的子表可以被指定到任意主機(jī)上維護(hù)。為了快速地找到子表所在位置,我們還設(shè)計(jì)了一個(gè)描述子表索引的全局元數(shù)據(jù)表,負(fù)責(zé)保存和維護(hù)系統(tǒng)中所有子表的索引。在索引大表基礎(chǔ)上,以GeoSOT提供的八叉樹(shù)編碼索引(O-tree索引[12])為主體,將R樹(shù)索引嫁接在上面,形成一種新型高效的空間索引結(jié)構(gòu)——GeoSOT剖分索引。
該索引是以 O-tree索引為主枝,將 R-tree[13]嫁接到上面,形成一棵混合的樹(shù)型結(jié)構(gòu)。這種方式的核心是將一顆大的R-tree分解成若干小的R-tree,將每一棵小的R-tree嫁接到O-tree的對(duì)應(yīng)枝上,這樣,合成的O&R-tree一方面保持了O-tree固定空間索引的優(yōu)勢(shì),另一方面,將那些無(wú)法用固定網(wǎng)格管理的空間對(duì)象(跨網(wǎng)格的對(duì)象)用R-tree管理起來(lái)。還有就是,新形成的O&R-tree在每個(gè)O-tree節(jié)點(diǎn)上,生成了一棵小的R-tree,將大的整體復(fù)雜的R-tree分散在小范圍內(nèi)管理進(jìn)行管理,理論上,對(duì)于R-tree的任意一枝理論上都可以嫁接到O-tree上,最極端的情況,某一枝也可以隸屬于O-tree的根節(jié)點(diǎn)。
3.1.1 實(shí)驗(yàn)環(huán)境
1)硬件環(huán)境
本實(shí)驗(yàn)使用5臺(tái)計(jì)算機(jī),其中1個(gè)作為Master節(jié)點(diǎn),剩余4個(gè)作為Slave節(jié)點(diǎn)。單臺(tái)計(jì)算機(jī)配置如表2所示。
表2 單臺(tái)計(jì)算機(jī)硬件環(huán)境配置表
2)軟件環(huán)境
本實(shí)驗(yàn)部署了分布式HBase環(huán)境,每臺(tái)計(jì)算機(jī)安裝軟件版本如表3所示。
表3 單臺(tái)計(jì)算機(jī)軟件環(huán)境配置表
3.1.2 實(shí)驗(yàn)數(shù)據(jù)
為了驗(yàn)證地球剖分網(wǎng)格索引大表模型對(duì)海洋時(shí)空數(shù)據(jù)檢索的有效性,實(shí)驗(yàn)中使用了包含少量基礎(chǔ)海洋地理信息數(shù)據(jù)和1.4億條不同大小的仿真遙感元數(shù)據(jù)的靜態(tài)海洋環(huán)境數(shù)據(jù)。
其中海洋地理信息數(shù)據(jù)包括廣西龍門(mén)港區(qū)域的基礎(chǔ)地理信息數(shù)據(jù)、某海洋環(huán)境數(shù)值預(yù)報(bào)數(shù)據(jù)(海溫、海浪、洋流、DEM等)、衛(wèi)星元數(shù)據(jù)(MODIS、Landsat等)和氣象預(yù)報(bào)數(shù)據(jù)(降水量、溫度、風(fēng)速等)。詳細(xì)數(shù)據(jù)源文件總結(jié)如表4所示。
表4 實(shí)驗(yàn)使用海洋地理信息數(shù)據(jù)源表
此外為了擴(kuò)充數(shù)據(jù)量至億級(jí),以驗(yàn)證剖分索引大表模型在海量數(shù)據(jù)一體化組織與管理中的有效性,我們另外增加了模擬遙感元數(shù)據(jù)。模擬數(shù)據(jù)隨機(jī)生成了1億條全球范圍不同區(qū)域、小于1°×1°空間范圍的遙感數(shù)據(jù),4000萬(wàn)條全球范圍不同區(qū)域、大于1°×1°空間范圍的遙感數(shù)據(jù),從而模擬各類(lèi)遙感元數(shù)據(jù),總原始數(shù)據(jù)記錄數(shù)量共1.4億條。模擬遙感元數(shù)據(jù)的生成步驟如下:
1)隨機(jī)生成一個(gè)坐標(biāo)(left,down),left的取值范圍是[-180°,180°),down的取值范圍是[-90°,90°)。
2)隨機(jī)生成沿東西方向的長(zhǎng)度length和南北方向的長(zhǎng)度width。在生成大于1°×1°空間范圍的遙感數(shù)據(jù)時(shí),length和width均小于5°;在生成小于1°×1°空間范圍的遙感數(shù)據(jù)時(shí),length和width均小于1°。
3)根據(jù)生成的left和length計(jì)算right=left+length,如 果 right>180°,則 right=right-360°;up=down+width,如果up>90°,則up=90°。
本文分別采用數(shù)據(jù)記錄ID、經(jīng)緯度與時(shí)間戳、空間編碼和時(shí)空編碼分別作主鍵索引的方式對(duì)同一時(shí)間跨度內(nèi)不同空間尺度的區(qū)域進(jìn)行區(qū)域時(shí)空查詢(xún)實(shí)驗(yàn),以驗(yàn)證基于時(shí)空編碼的剖分索引大表模型在時(shí)空數(shù)據(jù)查詢(xún)中較其他方式的有效性,結(jié)果如表5所示。
表5 不同條件下的時(shí)空范圍查詢(xún)實(shí)驗(yàn)結(jié)果(單位:ms)
由表中實(shí)驗(yàn)結(jié)果可知,基于時(shí)空編碼剖分索引的區(qū)域查詢(xún)方法效率最高,相較于現(xiàn)有方法:比基于記錄ID的方式可提升近百倍,比基于經(jīng)緯度加時(shí)間戳的方式,提升約數(shù)十倍,比基于空間網(wǎng)格編碼加時(shí)間的方式,提升約五至十倍。特別是在常用的空間范圍公里(km)級(jí),時(shí)間范圍分鐘(min)級(jí)的時(shí)空檢索范圍前提下,基于時(shí)空編碼剖分索引的區(qū)域查詢(xún)效果能夠滿(mǎn)足檢索響應(yīng)時(shí)間均保證在100ms以?xún)?nèi),顯現(xiàn)出了優(yōu)越的時(shí)空數(shù)據(jù)檢索性能。這主要是因?yàn)椋?/p>
1)面向空間組織管理的剖分索引規(guī)??刂苾?yōu)勢(shì):針對(duì)海洋環(huán)境數(shù)據(jù)組織的時(shí)空編碼方法直接面向空間管理而非面向數(shù)據(jù)對(duì)象管理,盡管遙感數(shù)據(jù)規(guī)模在1.4億條級(jí)別,但其對(duì)應(yīng)的空間范圍是全球的,對(duì)應(yīng)的某一層級(jí)剖分網(wǎng)格數(shù)量也是固定的。剖分索引大表的規(guī)模根據(jù)選擇的剖分層級(jí)不同存在變化,但數(shù)據(jù)規(guī)模始終遠(yuǎn)少于原始數(shù)據(jù)記錄億條級(jí)別的體量,常常表現(xiàn)為千萬(wàn)甚至百萬(wàn)級(jí)別,因而在時(shí)空檢索中剖分索引大表有更少的索引主鍵,也具有更好的時(shí)空檢索效率。
2)分布式數(shù)據(jù)組織框架的并行化優(yōu)勢(shì):將海洋環(huán)境數(shù)據(jù)部署在多個(gè)服務(wù)器節(jié)點(diǎn)上,不僅使數(shù)據(jù)組織管理框架具有更好的可擴(kuò)展性,而且在數(shù)據(jù)檢索中通過(guò)多節(jié)點(diǎn)并發(fā)的任務(wù)執(zhí)行手段也能夠充分利用各服務(wù)器的計(jì)算性能,進(jìn)一步凸顯剖分索引數(shù)據(jù)組織的效率優(yōu)勢(shì)。
本文面對(duì)多源異構(gòu)海洋時(shí)空大數(shù)據(jù)缺乏高效時(shí)空檢索技術(shù)的瓶頸問(wèn)題,依托GeoSOT地球剖分理論建立了地球剖分網(wǎng)格索引大表模型,闡述了索引大表剖分組織結(jié)構(gòu)、多源數(shù)據(jù)表邏輯結(jié)構(gòu)以及索引大表優(yōu)化與分裂后索引大表組織方法。同時(shí)利用1.4億條靜態(tài)海洋環(huán)境數(shù)據(jù)開(kāi)展了區(qū)域時(shí)空查詢(xún)的典型實(shí)驗(yàn),以驗(yàn)證剖分網(wǎng)格索引大表模型對(duì)海洋時(shí)空數(shù)據(jù)檢索的有效性。實(shí)驗(yàn)結(jié)果表明在億條數(shù)據(jù)規(guī)模下,海洋時(shí)空數(shù)據(jù)檢索耗時(shí)可達(dá)毫秒(ms)級(jí),從而驗(yàn)證了分布式環(huán)境下的剖分索引大表在海洋時(shí)空數(shù)據(jù)檢索中的高效性。
本文雖然在面向海洋時(shí)空大數(shù)據(jù)組織檢索研究上取得了新的進(jìn)展,但實(shí)際應(yīng)用中仍有很多不足需要進(jìn)一步研究改進(jìn):本文所提出的索引模型尚需要通過(guò)反復(fù)試驗(yàn)和驗(yàn)證,從實(shí)驗(yàn)室環(huán)境下的模擬數(shù)據(jù)測(cè)試,到海洋現(xiàn)場(chǎng)環(huán)境下的實(shí)地測(cè)試,隨著應(yīng)用場(chǎng)景不斷接近真實(shí),理論、方法與技術(shù)也需要隨之不斷地改進(jìn)和完善,使之更穩(wěn)定有效。