王艷喜 濰坊學(xué)院計算機工程學(xué)院
近幾年,隨著經(jīng)濟水平以及科技水平的不斷提升,云技術(shù)、互聯(lián)網(wǎng)技術(shù)以及物聯(lián)網(wǎng)技術(shù)應(yīng)用進一步廣泛,各類數(shù)據(jù)信息數(shù)量逐漸增大,這為空間數(shù)據(jù)存儲以及分析帶來了巨大挑戰(zhàn),傳統(tǒng)關(guān)系型的數(shù)據(jù)存儲凈模式已經(jīng)無法在日常工作中發(fā)揮更大的作用。因此,對基于NoSQL數(shù)據(jù)庫的空間大數(shù)據(jù)分布式存儲策略研究有著鮮明現(xiàn)實意義。
就目前我國空間存儲技術(shù)發(fā)展情況而言,成熟關(guān)系型數(shù)據(jù)庫是空間數(shù)據(jù)存儲的主流模式,除此之外,集中存儲以及管理空間也是常見模式之一。
立足于空間數(shù)據(jù)與應(yīng)用程序之間的關(guān)系而言,可以將空間引擎體系總結(jié)為以下幾種模式:內(nèi)置、三層結(jié)構(gòu)以及兩層機構(gòu)。以上結(jié)構(gòu)應(yīng)用具有不同效果,但總得來說可以很好的存儲以及處理海量空間數(shù)據(jù)。
就目前地理信息空間數(shù)據(jù)發(fā)展情況而言,數(shù)據(jù)量大、種類多已經(jīng)成為基本特點,傳統(tǒng)空間數(shù)據(jù)存儲處理系統(tǒng)的單一性、集中性存儲方法已經(jīng)無法滿足數(shù)據(jù)處理需求。具體而言,空間數(shù)據(jù)的大數(shù)據(jù)轉(zhuǎn)變,存儲技術(shù)也會發(fā)展改變:①存儲對象的變化。傳統(tǒng)存儲處理系統(tǒng),需要面對各類視頻以及音頻文件,但是系統(tǒng)并不擅長對上述信息進行處理。②存儲能力擴展。從存容量角度而言,傳統(tǒng)數(shù)據(jù)庫無法實現(xiàn)對海量數(shù)據(jù)的精準(zhǔn)維護,并且其本身也不具備良好的擴展性以及橫向延展性。
NoSQL 數(shù)據(jù)庫在近幾年的發(fā)展過程中已經(jīng)得到了較為廣泛的應(yīng)用,并且應(yīng)用效果良好,但是仍然具有一定局限性。例如:在空間數(shù)據(jù)庫中對數(shù)據(jù)的修改是常用操作,但NoSQI 二數(shù)據(jù)庫一般不建議對數(shù)據(jù)進行修改,不慎重的修改操作甚至?xí)驗橐鹣嚓P(guān)存儲數(shù)據(jù)的大量遷移而導(dǎo)致性能急劇下降。并且,從實際應(yīng)用角度而言,NoSQI 二數(shù)據(jù)庫提供的查詢能力非常有限,即使是內(nèi)部衍生出來的MongoDB 也不能滿足GIS 常用查詢的需要。
結(jié)合傳統(tǒng)空間數(shù)據(jù)處理情況,本文提出了一個基于NoSQL 數(shù)據(jù)庫的空間大數(shù)據(jù)分布式存儲策略,該策略在設(shè)計以及應(yīng)用過程中主要是針對傳統(tǒng)矢量以及柵格等各類移動終端大數(shù)據(jù)進行存儲與處理。具體的存儲體系分為內(nèi)存數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫以及NoSQL 數(shù)據(jù)庫三個層級。
空間大數(shù)據(jù)分布式存儲系統(tǒng)具有良好的數(shù)據(jù)存儲以及分析能力,可以為使用者提供多種應(yīng)用功能。從整體角度而言,可以將內(nèi)部存儲系統(tǒng)以及管理系統(tǒng)概括為以下內(nèi)容:存儲系統(tǒng):內(nèi)存數(shù)據(jù)庫、傳統(tǒng)關(guān)系式數(shù)據(jù)庫以及分布式數(shù)據(jù)庫。管理系統(tǒng):節(jié)點管理、數(shù)據(jù)調(diào)度、容錯機制、監(jiān)控系統(tǒng)以及全局日志管理。
具體應(yīng)用流程可以總計為以下內(nèi)容:首先,手機、平板、車載設(shè)備移動終端產(chǎn)生信息,這些信息接入到網(wǎng)關(guān);然后傳輸?shù)酱鎯芾硐到y(tǒng);最后在傳統(tǒng)應(yīng)用的幫助下進行分析數(shù)據(jù)顯示,例如在線數(shù)據(jù)更新、空間數(shù)據(jù)顯示、專題地圖分析以及位置歷史分析結(jié)果等。
本文主要是對空間大數(shù)據(jù)存儲系統(tǒng)進行分析,所以針對三種類型數(shù)據(jù)庫進行簡要研究:①內(nèi)存數(shù)據(jù)庫。該類型數(shù)據(jù)庫具有較高的應(yīng)用價值,因為其本身的數(shù)據(jù)操作速度較快。I/O處理速度大約是傳統(tǒng)數(shù)據(jù)庫的十倍左右。②傳統(tǒng)關(guān)系式數(shù)據(jù)庫。該數(shù)據(jù)庫存在的意義在于為整個系統(tǒng)提供數(shù)據(jù)集中存儲條件以及對外數(shù)據(jù)顯示功能,促使改進之后的系統(tǒng)仍然具備GIS功效,防止系統(tǒng)部分功能發(fā)生退化。③分布式存儲系統(tǒng)。該類系統(tǒng)的基礎(chǔ)是NoSQL 數(shù)據(jù)庫,在實際應(yīng)用過程中,可以將其看做為是整個存儲系統(tǒng)的數(shù)據(jù)大倉。其存在的主要作用為:為空間大數(shù)據(jù)存儲提供必要能力,例如可擴展性能力、高通量能力等。
2.2.1 存儲實現(xiàn)
對于存儲系統(tǒng)而言,最為基本的功能便是可以完成數(shù)據(jù)存儲、實現(xiàn)數(shù)據(jù)存儲,這也是存儲系統(tǒng)設(shè)計與構(gòu)建的基本需求?;诖耍疚慕Y(jié)合NoSQL 數(shù)據(jù)庫基本特點以及MongogDB 數(shù)據(jù)存儲基本特點,構(gòu)建了一個融合狀態(tài)下的數(shù)據(jù)存儲模式,以求實現(xiàn)數(shù)據(jù)庫大數(shù)據(jù)存儲功能。就MongogDB 而言,可以說是建立于NoSQL 數(shù)據(jù)庫基礎(chǔ)之上的一種數(shù)據(jù)庫,與各類數(shù)據(jù)對象之間存在有映射關(guān)系,這也是應(yīng)用MongogDB 可以實現(xiàn)數(shù)據(jù)存儲的基本原因。例如:空間位置信息存儲中,SQLite:Mem 對應(yīng)的是的Text、PostgreSQL 對應(yīng)的是bin、MongogDB 對應(yīng)的是BSON。
2.2.2 組織結(jié)構(gòu)設(shè)計
整個存儲系統(tǒng)中,組織結(jié)構(gòu)設(shè)計十分重要,關(guān)系著系統(tǒng)應(yīng)用效果以及質(zhì)量,為保證存儲系統(tǒng)穩(wěn)定,本文建議采用MongogDB 中的Replica Set 以及Sharding 兩個集群進行構(gòu)建。通過實際試驗發(fā)現(xiàn),應(yīng)用場景對于系統(tǒng)存儲數(shù)據(jù)質(zhì)量有著重要影響,基于此,本文根據(jù)地理范圍基本限定,進行了外部分片,之后進行Sharding 集群的搭建,這樣可以進一步降低外界環(huán)境因素的影響,而Sharding 集群此時可以稱之為滯后集群。
2.2.3 數(shù)據(jù)快速提取技術(shù)
從實際應(yīng)用角度而言,數(shù)據(jù)快速提取往往會受到多種因素的影響,例如數(shù)據(jù)基本組織結(jié)構(gòu)以及空間索引策略等,所謂的空間索引策略其實就是數(shù)據(jù)提取應(yīng)用到的具體方法,不同提取方法最終作用效果效果并不相同,所以提取效果也存在差異性,從此角度而言,空間索引策略可以說是影響數(shù)據(jù)提取速度的根本因素。結(jié)合實際應(yīng)用需求以及測試情況,建議采用元數(shù)據(jù)多級圖幅索引方式進行設(shè)計,因為此種索引方式可以很好的與集群方案相互配合。
2.2.4 數(shù)據(jù)調(diào)度
因為最終構(gòu)建的空間大數(shù)據(jù)存在高效分析以及快速處理需求,所以為保證處理與存儲時間,需要做好數(shù)據(jù)調(diào)度,只有數(shù)據(jù)調(diào)度合理,數(shù)據(jù)提取以及分析才能更加快速。基于此,本文建議將傳統(tǒng)存儲模式設(shè)計為“內(nèi)外存協(xié)同”形式。這樣就可以將經(jīng)常應(yīng)用到的熱點數(shù)據(jù)存儲到數(shù)據(jù)庫中,進一步保證數(shù)據(jù)庫的高通量,不經(jīng)常應(yīng)用的冷數(shù)據(jù)可以采用歸檔形式存儲到NoSQL 數(shù)據(jù)庫或者是傳統(tǒng)數(shù)據(jù)庫當(dāng)中。
2.2.5 訪問接口設(shè)計
訪問接口設(shè)計十分重要,因為關(guān)系著數(shù)據(jù)的輸入以及傳輸,如果訪問接口設(shè)計質(zhì)量存在問題,則數(shù)據(jù)流通將會產(chǎn)生影響,致使整個存儲、處理系統(tǒng)無法正常發(fā)揮作用。該方面的設(shè)計主要集中在傳統(tǒng)關(guān)系式數(shù)據(jù)庫當(dāng)中。本文建議,為傳統(tǒng)數(shù)據(jù)庫提供一個API 端口,改端口中存在一個開源的OGDC。此端口有一個空間數(shù)據(jù)端口的OD—BC,可以在實際應(yīng)用過程中為空間數(shù)據(jù)提供最為基礎(chǔ)的訪問功能,其中不僅包含了Oracle、DB2,而且包含了DM 以及Kingbase 等。除此之外,此種訪問接口設(shè)計還為數(shù)據(jù)并行提供了必要渠道。
綜上所述,隨著數(shù)據(jù)數(shù)量的逐漸增加,空間數(shù)據(jù)存儲暴露出很多問題,而空間大數(shù)據(jù)存儲策略的研究便是從各類問題角度入手,以求可以更好的解決大數(shù)據(jù)存儲、應(yīng)用以及處理等問題。本文提出了以NoSQL 數(shù)據(jù)庫為基礎(chǔ),應(yīng)用分布式存儲方法,對原有系統(tǒng)進行改進,就實際應(yīng)用情況而言,上述改進方法可行且效果良好。