邱新忠
(1.浙江省第一測(cè)繪院,浙江 杭州 310012)
基于MongoDB GridFS的地圖瓦片數(shù)據(jù)存儲(chǔ)研究
邱新忠1
(1.浙江省第一測(cè)繪院,浙江 杭州 310012)
從地圖瓦片數(shù)據(jù)存儲(chǔ)方式入手,分析了ArcGIS地圖瓦片存儲(chǔ)散列式和緊湊式的優(yōu)缺點(diǎn),從而引入基于MongoDB GridFS的地圖瓦片存儲(chǔ)方式。通過對(duì)常規(guī)地圖瓦片存儲(chǔ)與基于MongoDB GridFS的地圖瓦片存儲(chǔ)的讀取效率進(jìn)行性能測(cè)試和對(duì)比分析得出,基于MongoDB GridFS的地圖瓦片存儲(chǔ)在大數(shù)據(jù)量時(shí)有著明顯優(yōu)勢(shì)。
地圖瓦片;ArcGIS;MongoDB GridFS
隨著互聯(lián)網(wǎng)地圖服務(wù)應(yīng)用的不斷發(fā)展,地圖瓦片成為一種新的地理信息數(shù)據(jù)表達(dá)方式。常規(guī)地圖瓦片存儲(chǔ)大多采用文件目錄形式進(jìn)行組織,但隨著地圖瓦片數(shù)據(jù)量的不斷增長(zhǎng),文件目錄形式在數(shù)據(jù)遷移、備份、讀取效率等方面面臨著諸多問題,如一個(gè)百萬數(shù)量級(jí)的地圖瓦片文件目錄,如果進(jìn)行遷移或備份,至少需要2~3 h。為了解決這些問題,本文引入基于MongoDB GridFS的地圖瓦片數(shù)據(jù)存儲(chǔ)方式。
地圖瓦片是近年來發(fā)展起來的一種新型地理信息數(shù)據(jù)表達(dá)方式。它通過將地理信息數(shù)據(jù)預(yù)先可視化處理,并按照一定規(guī)則進(jìn)行切片,切片后的數(shù)據(jù)就稱之為地圖瓦片。常見的地圖瓦片切割技術(shù)為四叉樹金字塔模型,如圖1所示。由地圖瓦片切割模型的原理,決定了地圖瓦片數(shù)量呈現(xiàn)2倍率的指數(shù)增長(zhǎng)。研究如何對(duì)地圖瓦片進(jìn)行高效存儲(chǔ),以提高地圖瓦片的調(diào)用速度,具有重要意義。
圖1 四叉樹金字塔模型
常規(guī)地圖瓦片數(shù)據(jù)存儲(chǔ)大多采用文件目錄形式,以下分別以ArcGIS地圖瓦片存儲(chǔ)之散列式和緊湊式對(duì)比分析其優(yōu)缺點(diǎn)。
1.1 常規(guī)地圖瓦片存儲(chǔ)之散列式
以ArcGIS Server 9.3地圖瓦片存儲(chǔ)為例,切片組織基于計(jì)算機(jī)文件系統(tǒng)的存儲(chǔ)組織方式,這種組織方式具有良好的索引性能,用戶可以通過級(jí)別、行號(hào)、列號(hào)快速定位到某一張瓦片。但是對(duì)于計(jì)算機(jī)文件系統(tǒng)來說,在一個(gè)文件目錄里,隨著文件數(shù)的不斷增加,系統(tǒng)對(duì)文件的讀取效率將急劇下降,如在Windows的NTFS文件系統(tǒng)中,當(dāng)某個(gè)文件夾存儲(chǔ)的文件總數(shù)超過2 000時(shí),文件讀取的效率已明顯降低。
1.2 常規(guī)地圖瓦片存儲(chǔ)之緊湊式
以ArcGIS Server 10.0地圖瓦片存儲(chǔ)為例,切片組織與之前散列式存儲(chǔ)有了較大改進(jìn),雖然也是基于計(jì)算機(jī)文件系統(tǒng)的存儲(chǔ)組織方式,但是這種存儲(chǔ)格式占用空間更少,復(fù)制遷移更方便。由于這種數(shù)據(jù)存儲(chǔ)特點(diǎn)(每個(gè)bundle數(shù)據(jù)包存儲(chǔ)16 384個(gè)瓦片文件),具體讀取單個(gè)瓦片時(shí),需要根據(jù)bundle數(shù)據(jù)存儲(chǔ)格式進(jìn)行解析。目前ESRI官方?jīng)]有提供外部讀取接口,如采用這種存儲(chǔ)格式,需購(gòu)置ArcGIS Server商業(yè)地圖軟件。
綜上所述,對(duì)于互聯(lián)網(wǎng)地圖服務(wù)應(yīng)用來說,以上2種方式各有利弊。散列式存儲(chǔ)無需購(gòu)置商業(yè)軟件,但對(duì)大數(shù)據(jù)量存儲(chǔ)效率不高;緊湊式存儲(chǔ)雖然解決了大數(shù)據(jù)量備份、遷移等問題,但對(duì)于用戶來說,需購(gòu)置ArcGIS Server大型商業(yè)地圖軟件才能應(yīng)用。
2.1 MongoDB GridFS簡(jiǎn)介
MongoDB是一個(gè)開源、NoSQL的文檔型數(shù)據(jù)庫(kù)。MongoDB使用一種類似JSON的BSON格式進(jìn)行數(shù)據(jù)存儲(chǔ),由于這種數(shù)據(jù)存儲(chǔ)格式的松散性,可以存儲(chǔ)多種復(fù)雜的數(shù)據(jù)類型。
GridFS是MongoDB中用戶存儲(chǔ)大對(duì)象的工具。GridFS將每個(gè)文件對(duì)象分成2部分存儲(chǔ):文件的實(shí)際內(nèi)容(二進(jìn)制數(shù)據(jù))被存在一個(gè)集合(fs.chunks)中;文件有關(guān)的meta數(shù)據(jù)(如文件名、大小、用戶自定義的屬性等)將會(huì)被存在另一個(gè)集合(fs.files)中。GridFS會(huì)將大文件對(duì)象分割成多個(gè)小的文件片段(chunk),每個(gè)片段一般容量為256 K,每個(gè)片段將作為MongoDB的一個(gè)文檔被存儲(chǔ)在Chunks集合中。如此,就實(shí)現(xiàn)了分布式數(shù)據(jù)庫(kù)文件存儲(chǔ)。
2.2 MongoDB GridFS地圖瓦片存儲(chǔ)
MongoDB作為一種存儲(chǔ)JSON格式的數(shù)據(jù)庫(kù),對(duì)地圖瓦片存儲(chǔ)無疑是恰當(dāng)不過的。通過為每張瓦片建立索引“_id”(如瓦片的行列號(hào)及級(jí)別),如圖2所示,瓦片讀取時(shí)即可利用key-value鍵值對(duì)唯一獲取該張瓦片。
圖2 MongoDB地圖瓦片組織
為了將常規(guī)地圖瓦片存儲(chǔ)導(dǎo)入MongoDB,首先需要開發(fā)導(dǎo)入工具。如圖3所示,通過該工具可以非常便捷地將常規(guī)文件目錄組織的瓦片存儲(chǔ)導(dǎo)入MongoDB GridFS。
圖3 瓦片入庫(kù)工具
以浙江省地圖瓦片數(shù)據(jù)為例,浙江省陸域面積約10.18萬km2,僅占全國(guó)面積的1.06%,是中國(guó)面積最小的省份之一。浙江省處于北緯27°~31.5°、東經(jīng)118°~123.5°之間。按照國(guó)際通用的地圖瓦片切割規(guī)則,以西經(jīng)180°、北緯90°為切圖原點(diǎn),向東向南按行列遞增,瓦片規(guī)格256像素×256像素,瓦片分辨率及分級(jí)如表1所示。
表1 地圖瓦片分級(jí)表
根據(jù)浙江省范圍,全省7~17級(jí)瓦片數(shù)量近400萬,其中17級(jí)達(dá)到280多萬,單目錄文件數(shù)達(dá)2 000以上。通過對(duì)常規(guī)地圖瓦片存儲(chǔ)與基于MongoDB的地圖瓦片存儲(chǔ)在地圖瓦片讀取效率方面的比較,探索瓦片讀取的性能。由于地圖瓦片讀取都是通過Web形式進(jìn)行的,因此,在性能測(cè)試之前,先編寫2個(gè)Web服務(wù),分別讀取常規(guī)地圖瓦片存儲(chǔ)以及基于MongoDB的地圖瓦片存儲(chǔ)(限于篇幅,讀取常規(guī)地圖瓦片存儲(chǔ)的代碼略)。Web服務(wù)均以IIS作為Web服務(wù)器進(jìn)行發(fā)布。
測(cè)試工具采用LoadRunner 11.0,測(cè)試環(huán)境由一臺(tái)客戶機(jī)及一臺(tái)服務(wù)器組成,如表2所示,網(wǎng)絡(luò)帶寬為100 Mb/s。
表2 測(cè)試環(huán)境詳細(xì)情況
采用LoadRunner對(duì)2個(gè)Web服務(wù)進(jìn)行并發(fā)性測(cè)試,分別以10個(gè)用戶、20個(gè)用戶、50個(gè)用戶、100個(gè)用戶作為并發(fā)測(cè)試對(duì)象,測(cè)試結(jié)果如表3、圖4、圖5所示。
表3 試結(jié)果表
圖5 單目錄文件大于2 000時(shí)的結(jié)果比較
從圖4、圖5可知,當(dāng)常規(guī)地圖瓦片存儲(chǔ)單目錄文件數(shù)小于1 000時(shí),平均響應(yīng)時(shí)間與MongoDB地圖瓦片存儲(chǔ)基本一致;當(dāng)常規(guī)地圖瓦片存儲(chǔ)單目錄文件數(shù)大于2 000時(shí),平均響應(yīng)時(shí)間明顯大于MongoDB地圖瓦片存儲(chǔ)的響應(yīng)時(shí)間。
可見,MongoDB地圖瓦片存儲(chǔ)在大數(shù)據(jù)量方面有著明顯優(yōu)勢(shì),但對(duì)系統(tǒng)內(nèi)存的占用要求很高。如何改進(jìn)MongoDB的內(nèi)存占用量還有待進(jìn)一步研究。
[1] 陳超,王亮,閆浩文,等.一種基于NoSQL的地圖瓦片數(shù)據(jù)存儲(chǔ)技術(shù)[J].測(cè)繪科學(xué),2013(1):142-143
[2] 郭武士.基于MongoDB GridFS的圖片存儲(chǔ)方案的實(shí)現(xiàn)[J].四川工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2011(4):39-41
[3] 張恩,張廣弟,蘭磊.基于MongoDB的海量空間數(shù)據(jù)存儲(chǔ)和并行[J].地理空間信息,2014,12(1):46-48
[4] 陳慧英. 基于NoSQL數(shù)據(jù)庫(kù)的海量天文圖像分布存儲(chǔ)研究[D].昆明:昆明理工大學(xué),2012
[5] CH/Z 9011-2011 地理信息公共服務(wù)平臺(tái):電子地圖數(shù)據(jù)規(guī)范[S].
P208
B
1672-4623(2016)02-0050-03
10.3969/j.issn.1672-4623.2016.02.018
邱新忠,高級(jí)工程師,注冊(cè)測(cè)繪師,主要從事地理信息技術(shù)管理及應(yīng)用。
2014-09-02。
項(xiàng)目來源:浙江省地理空間數(shù)據(jù)交換和共享平臺(tái)資助項(xiàng)目([2008]353)。