国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MongoDB的電子地圖瓦片數(shù)據(jù)存儲(chǔ)和服務(wù)研究

2014-02-19 03:47邱儒瓊鄭麗娜
地理空間信息 2014年6期
關(guān)鍵詞:電子地圖瓦片入庫(kù)

邱儒瓊,鄭麗娜,李 兵

(1.中國(guó)地質(zhì)大學(xué)(武漢),湖北 武漢430074;2.湖北省基礎(chǔ)地理信息中心,湖北 武漢 430074)

隨著瓦片[1](Tile)的概念被提出,利用金字塔模型緩存地圖瓦片的模式代替?zhèn)鹘y(tǒng)WebGIS 地圖模式構(gòu)建WebGIS 地圖框架,大大提高了網(wǎng)絡(luò)地圖的響應(yīng)速度,具有良好的用戶體驗(yàn)。在國(guó)家地理信息公共服務(wù)平臺(tái)設(shè)計(jì)中,明確將電子地圖緩存服務(wù)[2]作為主要的地圖服務(wù)標(biāo)準(zhǔn)之一。它是將傳統(tǒng)的電子地圖在服務(wù)器端以瓦片的形式預(yù)生成,并利用一定的算法組織并存儲(chǔ)在服務(wù)器磁盤空間下。但這些緩存瓦片不同于正常的文件,瓦片的大小從1 KB到20 KB,瓦片具有“總個(gè)數(shù)多、單個(gè)文件小”的特點(diǎn)。如果采用基于文件系統(tǒng)的傳統(tǒng)方式保存,將會(huì)面臨以下挑戰(zhàn):

1)文件的量級(jí)飛速增長(zhǎng),在達(dá)到了單機(jī)操作系統(tǒng)的查詢性能瓶頸,或超過(guò)單機(jī)硬盤的擴(kuò)容范圍時(shí),需要在文件系統(tǒng)級(jí)別上擴(kuò)展和優(yōu)化。

2)由于文件的備份不方便,導(dǎo)致文件系統(tǒng)訪問(wèn)的故障轉(zhuǎn)移和修復(fù)出現(xiàn)問(wèn)題。

3)由于瓦片服務(wù)是靠將文件轉(zhuǎn)換為二進(jìn)制比特流,再通過(guò)客戶端軟件接收二進(jìn)制流,再將多個(gè)瓦片拼接為整張圖像的機(jī)制[3],限制了瓦片服務(wù)的發(fā)布無(wú)法實(shí)現(xiàn)分布式。

針對(duì)上面的問(wèn)題,本文探討了采用主流NoSQL數(shù)據(jù)庫(kù)MongoDB,利用Nginx、memcahced緩存優(yōu)化機(jī)制,以數(shù)字湖北地理空間框架建設(shè)和湖北省內(nèi)的部分?jǐn)?shù)字城市地理框架建設(shè)等瓦片數(shù)據(jù)存儲(chǔ)為例,探索新的服務(wù)發(fā)布模式,滿足緩存服務(wù)的高并發(fā)性、大數(shù)據(jù)量的訪問(wèn)。

1 MongoDB概述

MongoDB[4]是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),由C++語(yǔ)言編寫,旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富、最像關(guān)系數(shù)據(jù)庫(kù)的。2007年10月,MongoDB由10gen團(tuán)隊(duì)所發(fā)展,2009年2月首度推出[5]。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是它支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。

選擇MongoDB這個(gè)軟件,首先MongoDB是滿足一些研究所需的必要條件。它是一種區(qū)別于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的文件式新型數(shù)據(jù)庫(kù),是適合現(xiàn)代網(wǎng)絡(luò)應(yīng)用并基于分布式的平臺(tái)、高度事務(wù)性的系統(tǒng),可以幫助解決一些棘手的問(wèn)題,同時(shí)還支持云計(jì)算架構(gòu)的伸縮性。其次,MongoDB軟件本身是開源的,源代碼完全公開,而且有專門的研發(fā)團(tuán)隊(duì)保證這個(gè)軟件可以持續(xù)更新。最后MongoDB軟件的研發(fā)初衷是解決在線視頻網(wǎng)站、在線社交網(wǎng)站以及在線購(gòu)物網(wǎng)站中海量視頻、圖片、文檔的存儲(chǔ)、管理和訪問(wèn)問(wèn)題,這種視頻、圖片和文檔單純從文件的類型來(lái)看,其本質(zhì)與海量瓦片本身是同類的。

2 基于MongoDB的瓦片存儲(chǔ)和服務(wù)研究

2.1 研究路線

地圖數(shù)據(jù)以海量著稱,如何有效地組織地圖數(shù)據(jù),使其被高效地訪問(wèn),是必須考慮的問(wèn)題。在WebGIS 中,客戶端經(jīng)常向服務(wù)器發(fā)送地圖圖形數(shù)據(jù)的請(qǐng)求,為了便于傳輸和減輕服務(wù)器端的壓力[6],可以建立金字塔式的地圖圖形瓦片,將瓦片存儲(chǔ)在MongoDB中,并建立服務(wù)器端緩存,客戶端只需到緩存中下載需要的圖片。

在整個(gè)研究過(guò)程中,設(shè)計(jì)了一套從“瓦片存儲(chǔ)—瓦片服務(wù)實(shí)現(xiàn)—瓦片讀取”的技術(shù)方案。首先驗(yàn)證使用MongoDB可以滿足瓦片的存儲(chǔ)、服務(wù)的發(fā)布和調(diào)用;其次通過(guò)對(duì)比驗(yàn)證MongoDB和文件式管理在數(shù)據(jù)拷貝、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)訪問(wèn)效率上的性能指數(shù);最后通過(guò)分析MongoDB與文件式管理的劣勢(shì),在數(shù)據(jù)訪問(wèn)時(shí)增加“高速內(nèi)存緩存機(jī)制”中間件,優(yōu)化MongoDB技術(shù)方案,并在同環(huán)境下,完成前面性能指標(biāo)的對(duì)比測(cè)試。

2.2 基于MongoDB的瓦片數(shù)據(jù)存儲(chǔ)和服務(wù)實(shí)現(xiàn)

研究測(cè)試的MongoDB數(shù)據(jù)庫(kù)以瓦片類型為單位,以湖北省影像電子地圖瓦片和影像注記瓦片作為研究對(duì)象,在MongoDB數(shù)據(jù)庫(kù)中創(chuàng)建了hubeiImage和hubeiImageLabel兩個(gè)數(shù)據(jù)庫(kù)實(shí)例。同時(shí),MongoDB中存放的基本單元為BsonDocument對(duì)象,設(shè)計(jì)BsonDocument對(duì)象為65 536個(gè)瓦片單元,每個(gè)單元格存放的就是一張瓦片,每張瓦片不再用行號(hào)、列號(hào)和級(jí)別號(hào)3個(gè)關(guān)鍵字來(lái)唯一標(biāo)示,替換為MongoDB內(nèi)部的文件索引。生成的BsonDocument對(duì)象以集合式松散結(jié)構(gòu)進(jìn)行統(tǒng)一管理,統(tǒng)一由MongoDB自動(dòng)生成不超過(guò)2 GB的大文件。

圖1 湖北省影像電子地圖瓦片入庫(kù)

根據(jù)這種設(shè)計(jì)方案,湖北省影像瓦片在MongoDB中生成了hubeiimage.0—hubeiimage.60,合計(jì)61個(gè)大文件,總大小為113 GB。湖北省影像注記瓦片在MongoDB中生成了hubeiimagelabel.0—hubeiimagelabel.6,合計(jì)7個(gè)大文件,合計(jì)大小為5.93 GB。瓦片入庫(kù)過(guò)程采用command命令進(jìn)行操作,入庫(kù)過(guò)程見圖1,涉及的操作命令包括[5]:

1)Dbcommand.cpp:一般數(shù)據(jù)庫(kù)指令,如數(shù)據(jù)庫(kù)、索引的創(chuàng)建、重建、打開/關(guān)閉等。

2)dbcommands_admin.cpp:管理指令,如CleanCmd,JournalLatencyTestCmd,ValidateCmd,F(xiàn)SyncCommand。

3)dbcommands_generic.cpp:常用指令,ListComman dsCmd,LogRotateCmd,PingCommand,CmdSet,CmdGet等。

4)replset_commands.cpp:復(fù)制集指令,CmdReplSetTest,CmdReplSetGetStatus,CmdReplSetReconfig等。

同時(shí),通過(guò)設(shè)計(jì)開發(fā)基于MongoDB數(shù)據(jù)庫(kù)瓦片讀取的WMTS服務(wù)中間件,請(qǐng)求用戶通過(guò)標(biāo)準(zhǔn)的WMTS服務(wù)接口訪問(wèn)MongoDB數(shù)據(jù)庫(kù)瓦片,將請(qǐng)求結(jié)果返回給用戶。在使用過(guò)程中,請(qǐng)求用戶完全不會(huì)感覺(jué)到這種請(qǐng)求與以往請(qǐng)求的差異性。

實(shí)現(xiàn)的核心代碼如下:

public void ReadMongoTile(int x,int y,int z)

{

string tableName = "Z" + z.ToString("00") + "X"+ Convert.ToString((int)(x / 256)) + "Y" + Convert.ToString((int)(y / 256));

int index = x % 256 + 256 * (y % 256);

MongoCollection collection = mongoDb.GetCollection(tableName);

MapEnity e = collection.FindOneByIdAs(index);

int length = 0;

if (e.data != null) length = e.data.Length;

}

2.3 性能指標(biāo)對(duì)比測(cè)試

為了對(duì)基于MongoDB 的瓦片存儲(chǔ)策略以及并發(fā)訪問(wèn)特性進(jìn)行性能分析,我們搭建了如下的實(shí)驗(yàn)環(huán)境。在局域網(wǎng)內(nèi),把數(shù)據(jù)庫(kù)服務(wù)器部署在一臺(tái)4U機(jī)架上,X86/4 Intel XeonE7-8837處理器/24 MB高速緩存/64 GB Registered DDR3內(nèi)存/8塊300 GB 15 000轉(zhuǎn) SAS硬盤/11個(gè)PCI-E,操作系統(tǒng)為WindowsServer 2008 的浪潮NF8520服務(wù)器;客戶端的配置為Intel ( R)Core( TM) 2 CPU 3.00 GHz,內(nèi)存3.25 G,操作系統(tǒng)為Windows XP 的臺(tái)式機(jī),進(jìn)行存儲(chǔ)和服務(wù)訪問(wèn)實(shí)驗(yàn)。由客戶端向服務(wù)器端發(fā)出連接請(qǐng)求,分別利用Mongo DB 2.2.2帶緩存機(jī)制、Mongo DB 2.2.2不帶緩存機(jī)制、文件管理模式進(jìn)行了存儲(chǔ)效率和服務(wù)訪問(wèn)效率對(duì)比。

2.3.1 存儲(chǔ)效率對(duì)比

存儲(chǔ)效率對(duì)比主要是針對(duì)MongoDB數(shù)據(jù)庫(kù)入庫(kù)和文件式瓦片單次拷貝的時(shí)間效率進(jìn)行比對(duì),對(duì)比結(jié)果見圖2。

圖2 存儲(chǔ)效率比對(duì)結(jié)果表

從圖2的測(cè)試指標(biāo)可以看出,MongoDB的瓦片讀取效率是與線程并發(fā)量成正比的,也就是說(shuō)單進(jìn)程的情況下,上表測(cè)試的MongoDB入庫(kù)是讀取200張瓦片后一次性存寫入庫(kù),如果優(yōu)化程序到一次性寫入1 000張瓦片后,該程序的入庫(kù)效率將提高2~3倍。

2.3.2 服務(wù)訪問(wèn)效率對(duì)比

設(shè)計(jì)開發(fā)了針對(duì)服務(wù)發(fā)布效率的測(cè)試對(duì)比程序,在單進(jìn)程條件下,并發(fā)N個(gè)模擬服務(wù)請(qǐng)求,獲取每種技術(shù)方案的返回結(jié)果時(shí)間。在設(shè)計(jì)時(shí),加入了帶內(nèi)存緩存機(jī)制的MongoDB方案,即在IIS上設(shè)計(jì)開發(fā)了MemCache中間件,請(qǐng)求首先通過(guò)IIS到MemCache,如果緩存中沒(méi)有,則再通過(guò)訪問(wèn)MongoDB獲取瓦片。服務(wù)訪問(wèn)效率測(cè)試對(duì)比結(jié)果見圖3(橫軸代表并發(fā)數(shù);縱軸代表反饋時(shí)間/ms):

圖3 電子地圖瓦片服務(wù)訪問(wèn)效率對(duì)比結(jié)果圖

從圖3可以明顯看到,隨著并發(fā)量的增加,帶緩存的MongoDB技術(shù)方案明顯優(yōu)于其他2種方案,訪問(wèn)時(shí)間大大低于其余2種方案。

2.4 測(cè)試結(jié)論

在反復(fù)的驗(yàn)證測(cè)試中,最終得出結(jié)論,“MongoDB+內(nèi)存緩存中間件”的技術(shù)方案可以完全實(shí)現(xiàn)現(xiàn)有文件式管理的所有功能,同時(shí)通過(guò)性能測(cè)試指標(biāo)數(shù)據(jù),表明這種技術(shù)方案明顯優(yōu)于現(xiàn)有文件式管理模式。

3 結(jié) 語(yǔ)

本文針對(duì)MongoDB獨(dú)特高效的體系結(jié)構(gòu)、存儲(chǔ)機(jī)制、索引特點(diǎn)等關(guān)鍵技術(shù),深入研究了利用MongoDB進(jìn)行瓦片數(shù)據(jù)的存儲(chǔ),并通過(guò)實(shí)驗(yàn)對(duì)其高效性進(jìn)行驗(yàn)證。實(shí)驗(yàn)表明,利用MongDB進(jìn)行瓦片數(shù)據(jù)的存儲(chǔ),數(shù)據(jù)入庫(kù)效率將比傳統(tǒng)方式提高2~3倍。隨著并發(fā)量的增加,帶緩存的MongoDB的訪問(wèn)時(shí)間也將縮短2~3倍。目前來(lái)說(shuō),MongoDB對(duì)內(nèi)存要求較高,還不如傳統(tǒng)數(shù)據(jù)庫(kù)成熟,只能是對(duì)傳統(tǒng)數(shù)據(jù)庫(kù)的補(bǔ)充。但對(duì)于這種海量小文件的圖片管理應(yīng)用開發(fā),MongoDB則是一種優(yōu)秀的Web存儲(chǔ)解決之道。同時(shí),利用MongoDB自帶的分布式文件系統(tǒng)(GridFS)進(jìn)行海量影像數(shù)據(jù)的高效管理等問(wèn)題,還有待于進(jìn)一步深入研究。

[1]王浩,喻占武,曾武,等.基于瓦片壽命和訪問(wèn)熱度的海量空間數(shù)據(jù)緩存置換策略[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版,2009,34(6) : 667-668

[2]許虎 ,聶云峰, 舒堅(jiān).基于中間件的瓦片地圖服務(wù)設(shè)計(jì)與實(shí)現(xiàn)[J].地球信息科學(xué)學(xué)報(bào),2010(4) :563-565

[3]CH/Z 9011―2011.地理信息公共服務(wù)平臺(tái)電子地圖數(shù)據(jù)規(guī)范[S].

[4]分布式文檔存儲(chǔ)數(shù)據(jù)庫(kù)MongoDB [EB/OL].http://www.oschina.net/p/mongodb,2014-06-01

[5]霍多羅夫,迪洛爾夫.MongoDB權(quán)威指南[M].北京: 人民郵電出版社,2011

[6]李浩松,朱欣焰,李京偉,等.WebGIS 空間數(shù)據(jù)分布式緩存技術(shù)研究[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版, 2005,30(12) :1 092-1 095

猜你喜歡
電子地圖瓦片入庫(kù)
重磅!廣東省“三舊”改造標(biāo)圖入庫(kù)標(biāo)準(zhǔn)正式發(fā)布!
打水漂
中國(guó)食品品牌庫(kù)入庫(kù)企業(yè)信息公示②
中國(guó)食品品牌庫(kù)入庫(kù)企業(yè)信息公示①
一種基于主題時(shí)空價(jià)值的服務(wù)器端瓦片緩存算法
基于靈活編組的互聯(lián)互通車載電子地圖設(shè)計(jì)及動(dòng)態(tài)加載
慣性
基于GIS平臺(tái)的江西省公路基礎(chǔ)數(shù)據(jù)與電子地圖綜合展示系統(tǒng)
身臨其境探究竟 主動(dòng)思考完任務(wù)——《倉(cāng)儲(chǔ)與配送實(shí)務(wù)》入庫(kù)作業(yè)之“入庫(kù)訂單處理”教學(xué)案例
電子地圖在初中地理教學(xué)中的應(yīng)用實(shí)踐
三门峡市| 莫力| 安陆市| 会东县| 崇阳县| 星子县| 化隆| 白玉县| 青浦区| 尖扎县| 长兴县| 凤山县| 洪洞县| 浙江省| 濮阳市| 襄城县| 郯城县| 从化市| 雷州市| 新郑市| 响水县| 四平市| 正镶白旗| 正宁县| 淮滨县| 长垣县| 玉田县| 内江市| 云和县| 黎平县| 九江县| 祥云县| 额济纳旗| 扶风县| 桐城市| 永兴县| 林周县| 平罗县| 湟中县| 南溪县| 浠水县|