亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MongoDB的LBS數(shù)據(jù)管理系統(tǒng)關(guān)鍵技術(shù)研究

        2014-06-27 05:47:18
        測(cè)繪通報(bào) 2014年7期
        關(guān)鍵詞:分片路由集群

        吳 飛

        (福建省基礎(chǔ)地理信息中心,福建福州 350003)

        基于MongoDB的LBS數(shù)據(jù)管理系統(tǒng)關(guān)鍵技術(shù)研究

        吳 飛

        (福建省基礎(chǔ)地理信息中心,福建福州 350003)

        首先介紹基于位置的服務(wù)(LBS)系統(tǒng)的主要構(gòu)成,論述數(shù)據(jù)管理系統(tǒng)的重要意義,指出數(shù)據(jù)管理系統(tǒng)建設(shè)中需要重點(diǎn)解決的關(guān)鍵問(wèn)題,提出采用MongoDB作為文件級(jí)別的存儲(chǔ)來(lái)解決數(shù)據(jù)存儲(chǔ)查詢(xún)的技術(shù)瓶頸,并給出具體的設(shè)計(jì)思路,最后證明了基于該技術(shù)路線的數(shù)據(jù)管理系統(tǒng)的可行性。

        LBS;MongoDB;數(shù)據(jù)管理

        一、引 言

        基于位置的服務(wù)(location based service,LBS)是社會(huì)信息化發(fā)展的趨勢(shì),是測(cè)繪、衛(wèi)星導(dǎo)航、GIS和無(wú)線通信網(wǎng)絡(luò)等技術(shù)相集成的產(chǎn)物。LBS近年來(lái)發(fā)展較快,在交通、購(gòu)物、旅游、應(yīng)急、物流等多個(gè)行業(yè)得到廣泛應(yīng)用。LBS系統(tǒng)一般由移動(dòng)終端、位置服務(wù)核心子系統(tǒng)、數(shù)據(jù)存儲(chǔ)管理子系統(tǒng)、監(jiān)控管理應(yīng)用端等四大部分組成。其中,數(shù)據(jù)管理系統(tǒng)負(fù)責(zé)存儲(chǔ)上行的終端位置數(shù)據(jù),并提供數(shù)據(jù)檢索功能,數(shù)據(jù)管理系統(tǒng)關(guān)系到LBS平臺(tái)的穩(wěn)定性和可擴(kuò)展性[1-3]。

        終端位置數(shù)據(jù)典型特征是數(shù)量巨大但占用字節(jié)并不多,普通的位置數(shù)據(jù)大小不超過(guò)200 Byte。假設(shè)一個(gè)終端每10 s匯報(bào)一個(gè)報(bào)文,每個(gè)終端每天匯報(bào)超過(guò)8600個(gè)報(bào)文,假設(shè)LBS平臺(tái)設(shè)計(jì)10萬(wàn)并發(fā)量,則每天匯報(bào)的報(bào)文數(shù)量將超過(guò)6億條。如果每個(gè)報(bào)文都存在數(shù)據(jù)庫(kù)中作為一條記錄,即使按月分區(qū)來(lái)建立數(shù)據(jù)庫(kù)表,10萬(wàn)臺(tái)終端每月上傳的報(bào)文也將產(chǎn)生每張260億條記錄的表,顯然如此巨大數(shù)量的報(bào)文是不適合用關(guān)系數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)的[4]。

        二、MongoDB介紹

        MongoDB是基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)開(kāi)源項(xiàng)目,屬于NoSQL數(shù)據(jù)庫(kù)的一種。MongoDB是一個(gè)可擴(kuò)展、高性能的數(shù)據(jù)庫(kù),它的主要特性有:①模式自由,支持動(dòng)態(tài)查詢(xún)、完全索引;②面向文檔存儲(chǔ),易存儲(chǔ)對(duì)象類(lèi)型的數(shù)據(jù),包括文檔內(nèi)嵌對(duì)象及數(shù)組,支持二進(jìn)制數(shù)據(jù)及大型對(duì)象(如照片和視頻);③支持復(fù)制和故障恢復(fù),提供主—從、主—主模式的數(shù)據(jù)復(fù)制及服務(wù)器之間的數(shù)據(jù)復(fù)制;④自動(dòng)分片以支持云級(jí)別的伸縮性,支持水平的數(shù)據(jù)庫(kù)集群,可動(dòng)態(tài)添加服務(wù)器[5-9]。

        MongoDB適合實(shí)時(shí)的插入、更新與查詢(xún),并具備應(yīng)用程序?qū)崟r(shí)數(shù)據(jù)存儲(chǔ)所需的復(fù)制及高度伸縮性。因此,在LBS數(shù)據(jù)管理系統(tǒng)設(shè)計(jì)中,終端的關(guān)鍵業(yè)務(wù)數(shù)據(jù)使用關(guān)系數(shù)據(jù)庫(kù)來(lái)存儲(chǔ),而終端位置匯報(bào)產(chǎn)生的終端位置則采用MongoDB作為文件級(jí)別的存儲(chǔ),可較好解決高并發(fā)定位數(shù)據(jù)存儲(chǔ)瓶頸問(wèn)題。

        三、關(guān)鍵技術(shù)

        1.總體存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)

        LBS數(shù)據(jù)管理系統(tǒng)由兩部分組成:一部分是運(yùn)行在后臺(tái)采用MongoDB集群的終端位置數(shù)據(jù)存儲(chǔ)部分,由若干臺(tái)數(shù)據(jù)庫(kù)服務(wù)器組成;另一部分是基于MongoDB的終端位置數(shù)據(jù)讀寫(xiě)接口,與位置服務(wù)核心子系統(tǒng)部署在一起,響應(yīng)各移動(dòng)終端的終端位置查詢(xún)與終端位置寫(xiě)入請(qǐng)求[4]。總體存儲(chǔ)結(jié)構(gòu)如圖1所示。

        圖1 總體存儲(chǔ)結(jié)構(gòu)

        2.終端位置數(shù)據(jù)存儲(chǔ)設(shè)計(jì)

        終端位置存儲(chǔ)設(shè)計(jì)需要考慮以下3個(gè)方面[5]:

        1)平衡用戶(hù)的讀寫(xiě)請(qǐng)求,避免單個(gè)數(shù)據(jù)庫(kù)服務(wù)器的讀寫(xiě)壓力過(guò)大,影響性能。

        2)提供冗余,避免一個(gè)數(shù)據(jù)庫(kù)服務(wù)失效時(shí),導(dǎo)致系統(tǒng)不可用,或是數(shù)據(jù)丟失。

        3)隨著移動(dòng)終端的不斷加入,數(shù)據(jù)不斷膨脹,需要考慮整個(gè)存儲(chǔ)系統(tǒng)的水平擴(kuò)展功能。

        為此,在進(jìn)行終端位置數(shù)據(jù)存儲(chǔ)設(shè)計(jì)時(shí)需要充分考慮到數(shù)據(jù)庫(kù)集群及數(shù)據(jù)分片設(shè)計(jì)。終端位置數(shù)據(jù)存儲(chǔ)設(shè)計(jì)主要包括以下三點(diǎn):

        (1)MongoDB集群配置

        MongoDB的集群配置提供了負(fù)載均衡和冗余設(shè)計(jì),包括3種服務(wù)[7]:

        1)Slice Server(分片服務(wù)):用于存儲(chǔ)實(shí)際的數(shù)據(jù)塊,實(shí)際生產(chǎn)環(huán)境中一個(gè)分片服務(wù)角色可由幾臺(tái)機(jī)器組成一個(gè)復(fù)本集合,以防止主機(jī)單點(diǎn)故障。

        2)Config Server(元數(shù)據(jù)服務(wù)):存儲(chǔ)集群的元數(shù)據(jù)信息,包括每個(gè)塊信息。

        3)Route Server(路由服務(wù)):運(yùn)行MongoDB實(shí)例,客戶(hù)端從前端路由服務(wù)器接入,實(shí)現(xiàn)透明使用。根據(jù)MongoDB的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),終端位置數(shù)據(jù)庫(kù)服務(wù)器集群設(shè)計(jì)如圖2所示。

        圖2 服務(wù)器集群設(shè)計(jì)

        存儲(chǔ)系統(tǒng)配置說(shuō)明如下:

        1)分別在3臺(tái)服務(wù)器運(yùn)行一個(gè)Mongod(數(shù)據(jù)庫(kù)服務(wù)實(shí)例),稱(chēng)為分片服務(wù)11、分片服務(wù)12、分片服務(wù)13,組成一個(gè)復(fù)本集合(Replica set1),作為集群的分片1。

        2)分別在3臺(tái)服務(wù)器運(yùn)行一個(gè)Mongod,稱(chēng)為分片服務(wù)21、分片服務(wù)22、分片服務(wù)23,組成一個(gè)復(fù)本集合(Replica set2),作為集群的分片2。

        3)采用3臺(tái)機(jī)器,每臺(tái)機(jī)器運(yùn)行一個(gè)Mongod,作為3個(gè)元數(shù)據(jù)服務(wù)器。同時(shí)每臺(tái)機(jī)器運(yùn)行一個(gè)Mongos進(jìn)程(一個(gè)自動(dòng)分片模塊,用于數(shù)據(jù)庫(kù)集群,這個(gè)集群可以并入動(dòng)態(tài)增加的機(jī)器),作為3個(gè)路由服務(wù)器,用于客戶(hù)端連接。

        4)應(yīng)用端直接連接到路由服務(wù)器,進(jìn)行數(shù)據(jù)庫(kù)讀寫(xiě)操作。寫(xiě)入時(shí)由路由器根據(jù)相關(guān)的配置進(jìn)行負(fù)載均衡。讀取時(shí),路由器根據(jù)查詢(xún)請(qǐng)求的關(guān)鍵字的范圍,將查詢(xún)分配到各個(gè)分片,并對(duì)返回的結(jié)果進(jìn)行組合,返回給應(yīng)用端。

        5)服務(wù)器采用虛擬服務(wù)器,隨著移動(dòng)終端的增加,可擴(kuò)展補(bǔ)充新主機(jī),組成新的分片,以分擔(dān)數(shù)據(jù)庫(kù)的讀寫(xiě)壓力。

        (2)集群與負(fù)載均衡設(shè)計(jì)

        整個(gè)存儲(chǔ)結(jié)構(gòu)采用3個(gè)路由服務(wù)器,根據(jù)應(yīng)用端的接入,由路由器從配置服務(wù)器獲取相關(guān)的元數(shù)據(jù)信息,自動(dòng)決定分配存儲(chǔ)至相應(yīng)分片,避免單一節(jié)點(diǎn)讀寫(xiě)壓力過(guò)大。組成分片的復(fù)本集合的各臺(tái)機(jī)器采用主從(master-slave)配置,主主機(jī)可以讀也可以寫(xiě),從主機(jī)只可以讀,主從主機(jī)按一定的時(shí)間隔進(jìn)行同步[7-8,10]。

        由于采用了復(fù)本集合的方式,即使集合中有某一臺(tái)機(jī)器不能正常運(yùn)轉(zhuǎn)時(shí),整個(gè)存儲(chǔ)系統(tǒng)仍可正常運(yùn)轉(zhuǎn)。當(dāng)復(fù)本集合中的主機(jī)出現(xiàn)故障時(shí),路由器可以檢測(cè)并將寫(xiě)入請(qǐng)求分配到其他的分片中,通過(guò)將從機(jī)器切換成主機(jī)器,可以快速恢復(fù)該分片的寫(xiě)入能力。

        (3)數(shù)據(jù)分片設(shè)計(jì)

        移動(dòng)終端的終端位置數(shù)據(jù)存儲(chǔ)時(shí),隨著時(shí)間的推移,單個(gè)的集合會(huì)變得異常龐大,需要進(jìn)行合理的設(shè)計(jì),使集群路由器可以將不同的集合分配到不同的分片中,以及對(duì)集合進(jìn)行分塊處理,分配到不同的分片中,以更好地發(fā)揮集群的負(fù)載均衡的功能。

        數(shù)據(jù)分片設(shè)計(jì)主要包括以下兩點(diǎn):

        1)終端位置數(shù)據(jù)集合設(shè)計(jì)

        將所有的終端位置數(shù)據(jù)存儲(chǔ)在一個(gè)集合中時(shí),會(huì)使單個(gè)集合的數(shù)據(jù)量過(guò)于龐大,不利于管理和分配,因此設(shè)計(jì)時(shí)根據(jù)移動(dòng)終端的ID范圍,將所有的終端位置數(shù)據(jù)劃分到不同的集合中,由MongoDB的路由決定每個(gè)集合的存儲(chǔ)分配。具體的集合劃分見(jiàn)表1(ID以手機(jī)號(hào)碼分段為例)。

        表1 集合設(shè)計(jì)

        2)集合分片設(shè)計(jì)

        隨著某一移動(dòng)終端ID段的集合的數(shù)據(jù)不斷增大,需要對(duì)集合進(jìn)行分塊處理,以更好地發(fā)揮集群的功能。將存儲(chǔ)在MongoDB數(shù)據(jù)庫(kù)中的集合進(jìn)行分片需要選定分片關(guān)鍵字,集群利用分片關(guān)鍵字對(duì)文檔進(jìn)行分片,分配到不同的數(shù)據(jù)庫(kù)服務(wù)器。對(duì)待寫(xiě)入的文檔對(duì)于分片關(guān)鍵字的選定直接決定了集群中數(shù)據(jù)分布是否均衡、集群性能是否合理。分片關(guān)鍵字要求能夠建立唯一索引。

        根據(jù)移動(dòng)終端位置數(shù)據(jù)的特點(diǎn),分片關(guān)鍵字設(shè)置為由移動(dòng)終端的ID與移動(dòng)終端位置段起點(diǎn)時(shí)間共同組成。采用這種方式,可以保證關(guān)鍵字的唯一,并可使終端位置段記錄平均分配到不同的分塊中,從而更好地發(fā)揮集群的性能。

        3.終端位置數(shù)據(jù)讀寫(xiě)設(shè)計(jì)

        終端位置數(shù)據(jù)讀寫(xiě)設(shè)計(jì)主要包括以下兩點(diǎn):

        (1)服務(wù)器端緩存

        由于終端位置是逐點(diǎn)提交的,如果逐點(diǎn)即時(shí)寫(xiě)入數(shù)據(jù)庫(kù)中,將產(chǎn)生大量的數(shù)據(jù)庫(kù)輸入/輸出(I/O)操作,影響數(shù)據(jù)庫(kù)的性能。為此,在服務(wù)器端建一個(gè)緩沖區(qū)。基本思想是預(yù)估(由應(yīng)用層事先統(tǒng)計(jì))同時(shí)在線的移動(dòng)終端的數(shù)量,預(yù)先構(gòu)造內(nèi)存塊列表和移動(dòng)終端ID的列表,為各移動(dòng)終端分配緩存,用于存儲(chǔ)終端位置點(diǎn)串?dāng)?shù)據(jù),將在線的移動(dòng)終端上行位置數(shù)據(jù)按用戶(hù)ID分組,保存在分配的內(nèi)存塊中,當(dāng)分配的內(nèi)存塊滿(mǎn)的時(shí)候,轉(zhuǎn)換成MongoDB的文檔。為提高內(nèi)存的利用效率,采用定期刷新機(jī)制,將內(nèi)存中的終端位置點(diǎn)寫(xiě)入數(shù)據(jù)庫(kù),同時(shí)回收較長(zhǎng)時(shí)間離線的移動(dòng)終端占用的緩存塊。

        在終端位置查詢(xún)時(shí),根據(jù)查詢(xún)的ID和時(shí)間范圍,除了從數(shù)據(jù)庫(kù)中查詢(xún)命中的記錄以外,若緩存中存在滿(mǎn)足條件的終端位置點(diǎn),也要與查詢(xún)結(jié)果合并計(jì)算,返回給移動(dòng)終端。采用服務(wù)器端緩存設(shè)計(jì),根據(jù)采用的緩存塊的大小,采用該方法可以將數(shù)據(jù)庫(kù)寫(xiě)操作減小到原來(lái)的幾十分之一,甚至百分之一,從而有效減少數(shù)據(jù)庫(kù)寫(xiě)操作。另外,由于終端位置讀取也可以一次讀取若干個(gè)終端位置點(diǎn),也可在較大程度上減小數(shù)據(jù)庫(kù)的讀操作。服務(wù)器端緩存設(shè)計(jì)如圖3所示。

        圖3 服務(wù)器緩存設(shè)計(jì)

        (2)終端位置I/O流程

        根據(jù)服務(wù)器端終端位置緩存設(shè)計(jì),終端位置I/ O操作的流程如下:

        1)終端位置點(diǎn)寫(xiě)入操作流程

        當(dāng)接收移動(dòng)終端上傳的終端位置點(diǎn),使用終端位置數(shù)據(jù)寫(xiě)入方法。終端位置數(shù)據(jù)寫(xiě)入方法查找或分配新的終端位置緩存塊,將終端位置點(diǎn)放入緩存塊中。當(dāng)緩存塊滿(mǎn)時(shí),轉(zhuǎn)換成 MongoDB要求的BSON格式,連接到路由服務(wù)器,寫(xiě)入數(shù)據(jù)庫(kù)。

        2)終端位置段讀取操作流程

        接收 LBS應(yīng)用的查詢(xún)請(qǐng)求,根據(jù)查詢(xún)的終端ID,以及查詢(xún)的終端位置段的時(shí)間范圍,連接到路由服務(wù)器,查詢(xún)滿(mǎn)足條件的終端位置段,轉(zhuǎn)換為系統(tǒng)定義的格式。若查詢(xún)時(shí)間包括當(dāng)前時(shí)間,從緩存塊中查詢(xún)當(dāng)前的終端位置點(diǎn),與數(shù)據(jù)庫(kù)查詢(xún)結(jié)果合并,返回給應(yīng)用端。

        四、結(jié)束語(yǔ)

        筆者用LoadRunner測(cè)試了基于以上思路建設(shè)的數(shù)據(jù)管理系統(tǒng)終端位置匯報(bào)的性能,在10 000個(gè)終端并發(fā)下的測(cè)試結(jié)果見(jiàn)表2。

        表2 壓力測(cè)試

        具體結(jié)果如圖4、圖5所示。

        圖4 事務(wù)平均相應(yīng)時(shí)間

        測(cè)試結(jié)果表明,并發(fā)操作中CPU占用率未超過(guò)60%,符合正常要求;測(cè)試結(jié)果與服務(wù)器硬件配件有一定關(guān)系,服務(wù)器配置高原則上性能更強(qiáng);通過(guò)壓力測(cè)試證明基于MongoDB的數(shù)據(jù)管理系統(tǒng)滿(mǎn)足LBS系統(tǒng)運(yùn)行需求。

        圖5 資源利用率

        [1] 劉凱,林克正.基于3G網(wǎng)絡(luò)移動(dòng)設(shè)備位置服務(wù)的應(yīng)用[J].信息技術(shù),2007(12):63-65.

        [2] 劉鐵健,李瑞濤,呂彬,等.我國(guó)LBS產(chǎn)業(yè)發(fā)展的現(xiàn)狀分析[J].測(cè)繪與空間地理信息,2006,29(3):7-8.

        [3] 王春.3G時(shí)代位置服務(wù)技術(shù)研究[J].通信技術(shù),2010 (5):167-169.

        [4] 曹振臻,肖揚(yáng).分布式智能交通系統(tǒng)數(shù)據(jù)管理與處理平臺(tái)設(shè)計(jì)[J].信息技術(shù),2005(12):1-6.

        [5] 楊磊.基于NoSQL數(shù)據(jù)庫(kù)的結(jié)構(gòu)化存儲(chǔ)設(shè)計(jì)與應(yīng)用[J].科技風(fēng),2011(18):103.

        [6] 王光磊.MongoDB數(shù)據(jù)庫(kù)的應(yīng)用研究和方案優(yōu)化[J].中國(guó)科技信息,2011(20):93-94.

        [7] 蘭小機(jī),徐齊行,敖杰剛.MongoDB環(huán)境下SaaS多租戶(hù)體系模型研究[J].測(cè)繪通報(bào),2012(10):25-27,31.

        [8] 師德清.基于MongoDB的文件服務(wù)器集群系統(tǒng)的設(shè)計(jì)研究[J].信息與電腦:理論版,2012(10):53-54.

        [9] 謝華成,范黎林.云環(huán)境下海量非結(jié)構(gòu)化信息存儲(chǔ)技術(shù)探究[J].制造業(yè)自動(dòng)化,2012,34(8):28-30.

        [10] 劉艷俊,敖杰剛,徐齊行.基于 MongoDB云計(jì)算下GML分布式集群環(huán)境搭建研究[J].測(cè)繪標(biāo)準(zhǔn)化,2012,28(1):5-7.

        Key Technology Research of LBS Data Management System Based on MongoDB

        WU Fei

        P208

        B

        0494-0911(2014)07-0121-04

        2013-04-26

        吳 飛(1981—),男,安徽太湖人,碩士,高級(jí)工程師,研究方向?yàn)镚IS開(kāi)發(fā)與應(yīng)用。

        吳飛.基于MongoDB的LBS數(shù)據(jù)管理系統(tǒng)關(guān)鍵技術(shù)研究[J].測(cè)繪通報(bào),2014(7):121-124.

        10.13474/j.cnki.11-2246.2014.0242

        猜你喜歡
        分片路由集群
        上下分片與詞的時(shí)空佈局
        詞學(xué)(2022年1期)2022-10-27 08:06:12
        分片光滑邊值問(wèn)題的再生核方法
        CDN存量MP4視頻播放優(yōu)化方法
        海上小型無(wú)人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
        基于模糊二分查找的幀分片算法設(shè)計(jì)與實(shí)現(xiàn)
        探究路由與環(huán)路的問(wèn)題
        一種無(wú)人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
        電子制作(2018年11期)2018-08-04 03:25:40
        Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
        勤快又呆萌的集群機(jī)器人
        PRIME和G3-PLC路由機(jī)制對(duì)比
        国产精品毛片久久久久久久| 日韩女优一区二区在线观看| 亚洲av激情一区二区| 狠狠cao日日橹夜夜十橹| 国产三区在线成人av| 亚洲欧洲中文日韩久久av乱码| 偷国产乱人伦偷精品视频| 青草视频在线播放| 亚洲精品成AV无在线观看| 亚洲区1区3区4区中文字幕码| 男女深夜视频网站入口| 久久久久久人妻无码| 天天天天躁天天爱天天碰2018 | 日本男人精品一区二区| 日本黄色3级一区二区| 欧美激情肉欲高潮视频| 国产在线一区二区三区av| 日本韩国一区二区三区| 日本a在线播放| 亚洲av永久综合网站美女| 人妻夜夜爽天天爽三区麻豆av| 欧美黑人又大又粗xxxxx| 国产md视频一区二区三区| 久久精品无码中文字幕| 人妻少妇看A偷人无码电影| 中文字幕亚洲综合久久久| 国产精品会所一区二区三区| 欧美亚洲熟妇一区二区三区| 丰满岳妇乱一区二区三区| 久久波多野结衣av| 国产乱老熟视频乱老熟女1| 亚洲精品中文字幕导航| 欧美性猛交xxxx免费看蜜桃| 精品亚洲欧美无人区乱码| 亚洲AV无码一区二区一二区色戒| 中文字幕亚洲综合久久久| 全免费a级毛片免费看无码| 免费特级毛片| 午夜久久精品国产亚洲av| 在线观看视频国产一区二区三区| 精品国产一区二区三区色搞|