亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于SpringDataforMongoDB集群的數(shù)據(jù)模型處理方法

文檔序號(hào):10594141閱讀:200來(lái)源:國(guó)知局
基于Spring Data for MongoDB集群的數(shù)據(jù)模型處理方法
【專利摘要】本發(fā)明提供一種基于Spring Data for MongoDB集群的數(shù)據(jù)模型處理方法,特別涉及分布式集群MapReduce的數(shù)據(jù)處理方法。采用MongoDB文檔型的NoSQL數(shù)據(jù)庫(kù)作為底層數(shù)據(jù)存儲(chǔ),通過(guò)客戶端的虛擬聯(lián)合查詢引用其他文檔的數(shù)據(jù)解決非結(jié)構(gòu)化數(shù)據(jù)聯(lián)合查詢的問(wèn)題;數(shù)據(jù)處理采用Spring Data for MongoDB提供的Map/Reduce計(jì)算框架,MapReduce任務(wù)能在多個(gè)節(jié)點(diǎn)上并發(fā)處理數(shù)據(jù),從而提高了系統(tǒng)處理速度;數(shù)據(jù)存儲(chǔ)方面,海量數(shù)據(jù)存儲(chǔ)服務(wù)的長(zhǎng)期運(yùn)營(yíng)提供高可用性和擴(kuò)展性的數(shù)據(jù)中心,本發(fā)明利用MongoDB技術(shù)設(shè)計(jì)一個(gè)支持水平、縱向擴(kuò)展的高可用的數(shù)據(jù)集群,并利用雙字段的復(fù)合鍵進(jìn)行優(yōu)化,使得CRUD的操作能夠利用局部性提高查詢效率,并支持云級(jí)別的伸縮性。
【專利說(shuō)明】
基于Spring Data for MongoDB集群的數(shù)據(jù)模型處理方法
技術(shù)領(lǐng)域
[0001 ] 本發(fā)明涉及一種基于Spring Data for MongoDB集群的數(shù)據(jù)模型處理方法,特別涉及分布式集群MapReduce的數(shù)據(jù)處理方法。
【背景技術(shù)】
[0002]大數(shù)據(jù)時(shí)代的數(shù)據(jù)特點(diǎn)主要表現(xiàn)在數(shù)據(jù)格式繁多,數(shù)量大,非結(jié)構(gòu)化,缺乏統(tǒng)一存儲(chǔ)管理等問(wèn)題,數(shù)據(jù)量級(jí)都呈現(xiàn)快速增長(zhǎng)趨勢(shì),如何高效并且無(wú)誤的存儲(chǔ)、分析、理解以及利用這些大規(guī)模數(shù)據(jù),成為一個(gè)關(guān)鍵性的問(wèn)題。采用關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)時(shí),其不足表現(xiàn):當(dāng)數(shù)據(jù)存儲(chǔ)到一定階段后,在一張上億條的數(shù)據(jù)庫(kù)表中進(jìn)行SQL查詢(或者進(jìn)行多表連接查詢)時(shí)效率極其低下;難以進(jìn)行橫向擴(kuò)展,可擴(kuò)展性和高可用性的需求難以滿足;關(guān)系型模型是目前被最為廣泛采用的一種組織模型,但是利用此模式來(lái)存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)和處理層級(jí)結(jié)構(gòu)數(shù)據(jù)非常困難,不適合用來(lái)存儲(chǔ)上述數(shù)據(jù)對(duì)象。單一的計(jì)算集群處理已經(jīng)不能滿足需求。整合各種異構(gòu)資源,建立一個(gè)分布式協(xié)同計(jì)算存儲(chǔ)模型成為解決數(shù)據(jù)資源存儲(chǔ)和處理的可行方案。
[0003]NoSQL是非關(guān)系型數(shù)據(jù)存儲(chǔ)的廣義定義,在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫(kù)無(wú)法比擬的性能優(yōu)勢(shì)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)在應(yīng)付大數(shù)據(jù)量分析以及高并發(fā)性能方面,暴露了很多難以克服的問(wèn)題,例如對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的需求;對(duì)海量數(shù)據(jù)的高效存儲(chǔ)和訪問(wèn)的需求;對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)張性和高可用性的需求。
[0004]而MongoDB所支持的數(shù)據(jù)結(jié)構(gòu)與可進(jìn)行集群擴(kuò)展的特性在存儲(chǔ)和處理具有以上特點(diǎn)的健康檔案數(shù)據(jù)時(shí)結(jié)構(gòu)便顯得游刃有余。Spring Data for MongoDB為數(shù)據(jù)統(tǒng)計(jì)查詢與處理提供了豐富的類庫(kù),尤其支持MapReduce分布計(jì)算的方式結(jié)果。MapReduce分布式計(jì)算框架是Google公司提出的軟件架構(gòu),借鑒了函數(shù)式編程的思想,高效地進(jìn)行大規(guī)模數(shù)據(jù)集的分布式計(jì)算。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的在于提供一種基于Spring Data for MongoDB集群的數(shù)據(jù)模型處理方法,其是一種MongoDB集群的MapReduce分片查詢和處理方法。解決存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)和處理層級(jí)結(jié)構(gòu)數(shù)據(jù)非常困難的問(wèn)題。
[0006]為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:
首先采用MongoDB文檔型的NoSQL數(shù)據(jù)庫(kù)作為底層數(shù)據(jù)存儲(chǔ),MongoDB并不支持文檔間的聯(lián)合查詢,默認(rèn)情況下,被引用的對(duì)象和主對(duì)象存儲(chǔ)在同一個(gè)文檔中。可以通過(guò)客戶端的虛擬聯(lián)合查詢引用其他文檔的數(shù)據(jù)解決這個(gè)問(wèn)題。
[0007]為了減少在服務(wù)層數(shù)據(jù)處理的時(shí)間,同時(shí)考慮到數(shù)據(jù)的分布式存儲(chǔ),在統(tǒng)計(jì)查詢數(shù)據(jù)的過(guò)程中,本發(fā)明采用Map/Reduce計(jì)算框架。MapReduce任務(wù)能在多個(gè)節(jié)點(diǎn)上并發(fā)處理數(shù)據(jù),從而提高了系統(tǒng)處理速度。
[0008]為了海量數(shù)據(jù)存儲(chǔ)服務(wù)的長(zhǎng)期運(yùn)營(yíng)提供高可用性和擴(kuò)展性的數(shù)據(jù)中心,本發(fā)明利用MongoDB技術(shù)提供的自動(dòng)分片和復(fù)制功能,設(shè)計(jì)一個(gè)支持水平、縱向擴(kuò)展的高可用的數(shù)據(jù)集群,可以動(dòng)態(tài)的添加和移走存儲(chǔ)服務(wù)器,支持云級(jí)別的伸縮性。
[0009]MongoDB數(shù)據(jù)是根據(jù)片鍵進(jìn)行分片,片鍵的指定對(duì)于數(shù)據(jù)分布的均勻以及查詢的效率有著重要的影響,因此,本發(fā)明采用雙字段的復(fù)合鍵進(jìn)行優(yōu)化,既保證了插入數(shù)據(jù)能均勻的分布在三個(gè)分片上,也使CRUD的操作能夠利用局部性提高查詢效率,同時(shí)保證了足夠細(xì)的劃分粒度,避免以后添加新機(jī)器造成以后無(wú)法分片。同時(shí),保證了系統(tǒng)的高可用性。
【附圖說(shuō)明】
[0010]圖1數(shù)據(jù)統(tǒng)計(jì)處理時(shí)序圖。
[0011]圖2存儲(chǔ)服務(wù)集群架構(gòu)設(shè)計(jì)。
【具體實(shí)施方式】
[0012]下面結(jié)合具體附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0013]下面結(jié)合實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。
[0014]1.Spring Data for MongoDB基礎(chǔ)設(shè)施配置
Spring Data模板的主要目的,同時(shí)也是所有其他Spring模板的目的,就是資源分配和異常處理。這里所說(shuō)的資源就是數(shù)據(jù)存儲(chǔ)資源,通常來(lái)說(shuō)會(huì)通過(guò)遠(yuǎn)程TCP/IP連接訪問(wèn)。下面的實(shí)例展示了如何用XML方式配置MongoDB的模板:
<!— Connect1n to MongoDB server —>
<mongo: db-factory host=,,localhost,, port=,,27017〃 dbname=〃test〃 />
〈!一 MongoDB Template —>
〈bean id = 〃mongoTemplate〃 class = ^org.springframework.data.mongodb.core.MongoTemplate〃>
〈constructor-arg name=〃mongoDbFactory〃 ref= 〃mongoDbFactory〃/>
首先需要定義連接工廠,MongoTemplate會(huì)引用這個(gè)連接工廠。這個(gè)例子中,SpringData采用了較底層的數(shù)據(jù)庫(kù)驅(qū)動(dòng),MongoDB Java driver。
[0015]一般來(lái)說(shuō),這類較底層的數(shù)據(jù)庫(kù)驅(qū)動(dòng)會(huì)有自己的一套異常處理策略。Spring的異常處理采用的是未檢查異常(unchecked except1n),因此開(kāi)發(fā)人員可以自己決定是否須要捕獲異常。MongoDB的模板的實(shí)現(xiàn)方式是把捕獲到的底層的異常封裝成未檢查異常,這些異常都是 Spring 里 DataAccessExcept 1n 的子類。
[0016]模板提供了基于數(shù)據(jù)存儲(chǔ)的操作,諸如保存、更新、刪除單一記錄或執(zhí)行查詢的方法。但所有這些方法只能用于相應(yīng)的底層數(shù)據(jù)存儲(chǔ)。
[0017]2.數(shù)據(jù)層設(shè)計(jì)
采用MongoDB文檔型的NoSQL數(shù)據(jù)庫(kù)作為底層數(shù)據(jù)存儲(chǔ),底層以BSON形式存儲(chǔ),以JSON
的形式視圖化。MongoDB的 Co I Iect 1n與 JavaBean--對(duì)應(yīng),Co I Iect 1n與Co I Iect 1n之間的關(guān)系是以JAVA對(duì)象形式嵌套。
[0018]MongoDB并不支持文檔間的聯(lián)合查詢,默認(rèn)情況下,被引用的對(duì)象和主對(duì)象存儲(chǔ)在同一個(gè)文檔中。也可以通過(guò)客戶端的虛擬聯(lián)合查詢引用其他文檔的數(shù)據(jù)解決這個(gè)問(wèn)題。
[00?9] 本發(fā)明采用Map/Reduce計(jì)算框架。計(jì)算過(guò)程分為Map、Reduce兩個(gè)步驟,具體計(jì)算過(guò)程如下:系統(tǒng)創(chuàng)建一個(gè)MapReduce主進(jìn)程,主進(jìn)程將大量的Map任務(wù)分配到集群的各個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn);Map任務(wù)通過(guò)Map函數(shù)將相應(yīng)的節(jié)點(diǎn)數(shù)據(jù)進(jìn)行處理,并以鍵值對(duì)的形式保存中間結(jié)果;Reduce任務(wù)將Map任務(wù)生成中間數(shù)據(jù)進(jìn)行匯總,并返回最終結(jié)果。MapReduce任務(wù)能在多個(gè)節(jié)點(diǎn)上并發(fā)處理數(shù)據(jù),從而提高了系統(tǒng)處理速度。
[0020]服務(wù)層處理的數(shù)據(jù)從底層的集群獲取,本系統(tǒng)數(shù)據(jù)統(tǒng)計(jì)分發(fā)的時(shí)序圖如圖1所示.3.存儲(chǔ)系統(tǒng)集群設(shè)計(jì)
一個(gè)MongoDB集群由配置服務(wù)進(jìn)程,分片節(jié)點(diǎn),路由進(jìn)程組成。如圖2所示,本系統(tǒng)采用三個(gè)分片,每個(gè)分片配置三臺(tái)獨(dú)立服務(wù)器組成副本集。配置服務(wù)器的也采用同樣的備份策略,它存儲(chǔ)了整個(gè)集群的配置信息,是整個(gè)集群中最重要的部分。路由服務(wù)器由于并不存儲(chǔ)數(shù)據(jù)或者配置信息,只是緩存配置服務(wù)器的信息,因此只需一臺(tái)服務(wù)器即可。MongoDB數(shù)據(jù)是根據(jù)片鍵進(jìn)行分片,片鍵的指定對(duì)于數(shù)據(jù)分布的均勻以及查詢的效率有著重要的影響,因此,本發(fā)明采用雙字段的復(fù)合鍵進(jìn)行優(yōu)化,既保證了插入數(shù)據(jù)能均勻的分布在三個(gè)分片上,也使CRUD的操作能夠利用局部性提高查詢效率,同時(shí)保證了足夠細(xì)的劃分粒度,避免以后添加新機(jī)器造成以后無(wú)法分片。同時(shí),保證了系統(tǒng)的高可用性
當(dāng)插入新數(shù)據(jù)時(shí),首先根據(jù)片鍵分配的相應(yīng)的服務(wù)器進(jìn)行存儲(chǔ),而其它兩份副本則會(huì)同步到另外兩臺(tái)服務(wù)器上。三份副本只有一份處于活躍狀態(tài),稱為主節(jié)點(diǎn),它負(fù)責(zé)處理客戶端請(qǐng)求,并記錄在其上執(zhí)行的所有操作。其它兩臺(tái)從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲得這些操作,然后對(duì)自己的數(shù)據(jù)副本執(zhí)行這些操作,通過(guò)這種機(jī)制保證主從節(jié)點(diǎn)數(shù)據(jù)的一致性。為了減少主節(jié)點(diǎn)的負(fù)載,用MongoDB擴(kuò)展讀取的方式將查詢放在從節(jié)點(diǎn)上。另外,當(dāng)主節(jié)點(diǎn)由于某些原因下線后,從節(jié)點(diǎn)會(huì)通過(guò)選舉機(jī)制產(chǎn)生新的主節(jié)點(diǎn)繼續(xù)提供服務(wù)。
[0021 ]本發(fā)明涉及的一些術(shù)語(yǔ)解釋如下:
Spring Data是一個(gè)用于簡(jiǎn)化數(shù)據(jù)庫(kù)訪問(wèn),并支持云服務(wù)的開(kāi)源框架。
[0022]MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
[0023]MongoOperat1ns、MongoTemplate是MongoDB數(shù)據(jù)庫(kù)的兩個(gè)接口。
[0024]MongoDB的 Co I Iect 1n即MongoDB的集合或表。
[0025]JavaBean是一種JAVA語(yǔ)言寫(xiě)成的可重用組件。
[0026]CRUD是指在做計(jì)算處理時(shí)的增加(Create)、重新取得數(shù)據(jù)(Retrieve)、更新(Update)和刪除(Delete)幾個(gè)單詞的首字母簡(jiǎn)寫(xiě)。
[0027]NoSQL數(shù)據(jù)庫(kù),指非關(guān)系型數(shù)據(jù)庫(kù)。
[0028]JS0N(JavaScript Object Notat1n)是一種輕量級(jí)的數(shù)據(jù)交換格式。
[0029]BSON是一種類json的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱Binary JSON
REST指的是一組架構(gòu)約束條件和原則。滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是 RESTful。
[0030]mongod = MongoDE^a一個(gè)啟動(dòng)服務(wù)。
【主權(quán)項(xiàng)】
1.一種基于SpringData for MongoDB集群的數(shù)據(jù)模型處理方法,其特征在于,采用MongoDB文檔型的NoSQL數(shù)據(jù)庫(kù)作為底層數(shù)據(jù)存儲(chǔ),通過(guò)客戶端的虛擬聯(lián)合查詢引用其他文檔的數(shù)據(jù)解決非結(jié)構(gòu)化數(shù)據(jù)聯(lián)合查詢的問(wèn)題;采用Spring Data for MongoDB提供的Map/Reduce計(jì)算框架,MapReduce任務(wù)能在多個(gè)節(jié)點(diǎn)上并發(fā)處理數(shù)據(jù);利用MongoDB技術(shù)提供的自動(dòng)分片和復(fù)制功能,選擇雙字段的復(fù)合鍵進(jìn)行集群優(yōu)化。2.根據(jù)權(quán)利要求1所述的基于SpringData for MongoDB集群的數(shù)據(jù)模型處理方法,其特征在于,采用MongoDB文檔型的NoSQL數(shù)據(jù)庫(kù)作為底層數(shù)據(jù)存儲(chǔ),MongoDB的Collect1n即集合或表與JavaBean--對(duì)應(yīng),Col Iect 1n與Co I Iect 1n之間的關(guān)系是以JAVA對(duì)象形式嵌套。3.根據(jù)權(quán)利要求1所述的基于SpringData for MongoDB集群的數(shù)據(jù)模型處理方法,其特征在于,MongoOperat 1ns或者M(jìn)ongoTemplate提供的MapReduce模型在集群上進(jìn)行計(jì)算處理;MongoOperat1ns、MongoTemplate是MongoDB數(shù)據(jù)庫(kù)的兩個(gè)接口。4.根據(jù)權(quán)利要求1所述的基于SpringData for MongoDB集群的數(shù)據(jù)模型處理方法,其特征在于,在集群方面采用雙字段的復(fù)合鍵進(jìn)行優(yōu)化管理。
【文檔編號(hào)】G06F17/30GK105956041SQ201610264378
【公開(kāi)日】2016年9月21日
【申請(qǐng)日】2016年4月26日
【發(fā)明人】王祥, 張海英, 胡冰
【申請(qǐng)人】江蘇物聯(lián)網(wǎng)研究發(fā)展中心
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1