欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法

文檔序號(hào):10725077閱讀:349來(lái)源:國(guó)知局
基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法
【專利摘要】本發(fā)明涉及一種基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其中所述的方法包括構(gòu)建時(shí)間和空間分段點(diǎn)的鍵值索引表;構(gòu)建時(shí)間和空間分段樹(shù)的鍵值索引表;以及構(gòu)建時(shí)間和空間分段樹(shù)更新和刪除鍵值索引表。采用該種方法,通過(guò)引入時(shí)空分段點(diǎn)索引表,大大提高基于時(shí)空單點(diǎn)的過(guò)車記錄快速查詢效率;通過(guò)引入時(shí)空分段樹(shù)索引表,大大提高基于時(shí)空范圍的過(guò)車記錄快速查詢效率;通過(guò)引入時(shí)空分段樹(shù)更新索引表,能動(dòng)態(tài)重構(gòu)時(shí)空分段樹(shù)索引表,為支持海量的流過(guò)車記錄實(shí)時(shí)查詢提供可能;通過(guò)引入鍵值云存儲(chǔ)數(shù)據(jù)庫(kù)保存上述索引表,并利用Hadoop云平臺(tái)生成上述索引表,大大縮短了構(gòu)建和維護(hù)索引的時(shí)間,并提高查詢處理性能。
【專利說(shuō)明】
基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其涉及云平臺(tái)數(shù)據(jù)庫(kù)的分布式索引和查詢處理領(lǐng)域,具體是指一種基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法。
【背景技術(shù)】
[0002]基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法主要實(shí)現(xiàn)海量過(guò)車結(jié)構(gòu)化記錄在云平臺(tái)上分別基于時(shí)空范圍和時(shí)空單點(diǎn)的快速查詢。近年來(lái),隨著MapReduce和hdfs的hadoop和Nosql的鍵值數(shù)據(jù)庫(kù)技術(shù)的深入研究,使得上述兩類查詢問(wèn)題有望得以解決,而索引方法的好壞直接影響了過(guò)車記錄查詢性能。現(xiàn)在常采用基于MapReduce上構(gòu)建B-Tree或R-Tree等變種索引去實(shí)現(xiàn)時(shí)空范圍和時(shí)空點(diǎn)兩類查詢。
[0003]R.G.Y等人在其發(fā)表的論文采用基于B-Tree變種去構(gòu)建時(shí)間索引,如Timelndex方法,此方法計(jì)算復(fù)雜度為0(n2),隨后V.1.V.R.S等人在其發(fā)表的論文中提出的Timelndex+方法,雖然性能有所提高,但需要優(yōu)化完善;
[0004]A.M等人在其發(fā)表的論文中提出Spat ialHadoop,采用基于MapReduce框架去處理空間數(shù)據(jù)。
[0005]J.R等人在其發(fā)表的論文中提出Parallel-Secondo,采用并行空間關(guān)系數(shù)據(jù)庫(kù),此數(shù)據(jù)庫(kù)利用Hadoop作為分布式任務(wù)調(diào)度器。
[0006]C.G.S.S等人在其發(fā)表的論文中提出分布式分段樹(shù),能支持基于P2P DHT網(wǎng)絡(luò)的范圍查詢,但P2P DHT基礎(chǔ)設(shè)施不同于本專利提出的分布式云平臺(tái)。
[0007]綜上可知,現(xiàn)有的時(shí)空范圍和時(shí)空單點(diǎn)過(guò)車記錄快速查詢大多采用基于Hadoop平臺(tái)構(gòu)建B-Tree和R-Tree變種索引,充分利用了Hadoop分布式并行處理及鍵值數(shù)據(jù)庫(kù)高效處理特性,但海量過(guò)車記錄基于時(shí)空范圍和時(shí)空單點(diǎn)查詢采用B-Tree或者R-Tree等變種索引不一定為合宜技術(shù)方案。

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

[0008]本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種能夠?qū)崿F(xiàn)解決時(shí)空范圍快速查詢和時(shí)空單點(diǎn)快速查詢兩類問(wèn)題的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法。
[0009]為了實(shí)現(xiàn)上述目的,本發(fā)明具有如下構(gòu)成:
[0010]該基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其主要特點(diǎn)是,所述的方法包括如下步驟:
[0011 ] (I)將海量過(guò)車記錄數(shù)據(jù)導(dǎo)入到鍵值數(shù)據(jù)庫(kù)中;
[0012](2)根據(jù)過(guò)車記錄時(shí)間和空間顆粒,構(gòu)建時(shí)間和空間分段點(diǎn)的鍵值索引表;
[0013](3)在時(shí)間和空間分段點(diǎn)的鍵值索引表的基礎(chǔ)上,構(gòu)建時(shí)間和空間分段樹(shù)的鍵值索引表;
[0014](4)在重構(gòu)時(shí)間和空間分段樹(shù)的鍵值索引表時(shí),構(gòu)建時(shí)間和空間分段樹(shù)更新和刪除鍵值索引表。
[0015]較佳地,構(gòu)建時(shí)間分段點(diǎn)的鍵值索引表,包括以下步驟:
[0016](2-A-1)確定過(guò)車記錄時(shí)間所屬的時(shí)間范圍;
[0017](2-A-2)基于時(shí)間顆粒度大小,對(duì)時(shí)間范圍進(jìn)行分段,得到時(shí)間分段區(qū)間;
[0018](2-A-3)對(duì)時(shí)間分段區(qū)間的起始值和終止值分別建立鍵值;
[0019](2-A-4)利用MapReduce或者Spark框架將屬于各個(gè)時(shí)間分段區(qū)間內(nèi)的過(guò)車記錄的行鍵聚集保存于對(duì)應(yīng)列值中,形成時(shí)間分段點(diǎn)的鍵值索引表。
[0020]較佳地,構(gòu)建空間分段點(diǎn)的鍵值索引表,包括以下步驟:
[0021 ] (2-B-1)確定交通路網(wǎng)車輛監(jiān)控點(diǎn)所屬的空間范圍;
[0022](2-B-2)基于空間顆粒度大小,對(duì)空間范圍進(jìn)行分段,得到空間分段區(qū)間;
[0023 ] (2-B-3)對(duì)空間分段區(qū)間的起始值和終止值分別建立鍵值;
[0024](2-B-4)利用MapReduce或者Spark框架將屬于各個(gè)空間分段區(qū)間內(nèi)的過(guò)車記錄的行鍵聚集保存于對(duì)應(yīng)列值中,形成空間分段點(diǎn)的鍵值索引表。
[0025]更佳地,構(gòu)建時(shí)間分段樹(shù)的鍵值索引表,包括以下步驟:
[0026](3-A-1)基于時(shí)間分段點(diǎn)的鍵值索引表,每?jī)蓚€(gè)相鄰的時(shí)間分段構(gòu)建一棵樹(shù),采用自底向上的方法,利用MapReduce或者Spark框架,形成一棵僅含一個(gè)根節(jié)點(diǎn)的完全二叉樹(shù);
[0027](3-A-2)標(biāo)識(shí)二叉樹(shù)的所有節(jié)點(diǎn),形成具有時(shí)間分段點(diǎn)標(biāo)識(shí)值的鍵值、分段點(diǎn)所屬時(shí)間分段區(qū)間的起始值和終止值、對(duì)應(yīng)左子樹(shù)和右子樹(shù)標(biāo)識(shí)值及過(guò)車記錄的行鍵的時(shí)間分段樹(shù)索引表。
[0028]較佳地,構(gòu)建空間分段樹(shù)的鍵值索引表,包括以下步驟:
[0029](3-B-1)基于空間分段點(diǎn)的鍵值索引表,每?jī)蓚€(gè)相鄰的空間分段構(gòu)建一棵樹(shù),采用自底向上的方法,利用MapReduce或者Spark框架,形成一棵僅含一個(gè)根節(jié)點(diǎn)的完全二叉樹(shù);
[0030](3-B-2)標(biāo)識(shí)二叉樹(shù)的所有節(jié)點(diǎn),形成具有空間分段點(diǎn)標(biāo)識(shí)值的鍵值、分段點(diǎn)所屬空間分段區(qū)間的起始值和終止值、對(duì)應(yīng)左子樹(shù)和右子樹(shù)標(biāo)識(shí)值及過(guò)車記錄的行鍵的空間分段樹(shù)索引表。
[0031]較佳地,構(gòu)建時(shí)間分段樹(shù)更新和刪除鍵值索引表,包括以下步驟:
[0032](4-A-1)基于時(shí)間分段點(diǎn)的鍵值索引表,將新插入和刪除的過(guò)車記錄保存于一個(gè)單獨(dú)的列中,形成時(shí)間分段樹(shù)更新和刪除鍵值索引表;
[0033](4-A-2)當(dāng)需要重新構(gòu)建時(shí)間分段樹(shù)的鍵值索引表時(shí),從時(shí)間分段樹(shù)更新和刪除鍵值索引表中快速獲取新插入和刪除的過(guò)車記錄。
[0034]較佳地,構(gòu)建空間分段樹(shù)更新和刪除鍵值索引表,包括以下步驟:
[0035](4-B-1)基于空間分段點(diǎn)的鍵值索引表,將新插入和刪除的過(guò)車記錄保存于一個(gè)單獨(dú)的列中,形成空間分段樹(shù)更新和刪除鍵值索引表;
[0036](4-B-2)當(dāng)需要重新構(gòu)建空間分段樹(shù)的鍵值索引表時(shí),從空間分段樹(shù)更新和刪除鍵值索引表中快速獲取新插入和刪除的過(guò)車記錄。
[0037]采用了該發(fā)明中的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,具有如下有益效果:
[0038](I)通過(guò)引入時(shí)空分段點(diǎn)索引表,大大提高基于時(shí)空單點(diǎn)的過(guò)車記錄快速查詢效率;
[0039](2)通過(guò)引入時(shí)空分段樹(shù)索引表,大大提高基于時(shí)空范圍的過(guò)車記錄快速查詢效率;
[0040](3)通過(guò)引入時(shí)空分段樹(shù)更新索引表,能動(dòng)態(tài)重構(gòu)時(shí)空分段樹(shù)索引表,為支持海量的流過(guò)車記錄實(shí)時(shí)查詢提供可能;
[0041 ] (4)通過(guò)引入鍵值云存儲(chǔ)數(shù)據(jù)庫(kù)保存上述索引表,并利用Hadoop云平臺(tái)生成上述索引表,大大縮短了構(gòu)建和維護(hù)索引的時(shí)間,并提高查詢處理性能。
【附圖說(shuō)明】
[0042]圖1為本發(fā)明的時(shí)間分段點(diǎn)索引構(gòu)建的方法的流程圖。
[0043]圖2為本發(fā)明的空間分段點(diǎn)索引構(gòu)建的方法的流程圖。
[0044]圖3為本發(fā)明的時(shí)間分段樹(shù)索引構(gòu)建的方法的流程圖。
[0045]圖4為本發(fā)明的空間分段樹(shù)索引構(gòu)建的方法的流程圖。
[0046]圖5為本發(fā)明的時(shí)間分段樹(shù)更新索引構(gòu)建的方法的流程圖。
[0047]圖6為本發(fā)明的空間分段樹(shù)更新索引構(gòu)建的方法的流程圖。
【具體實(shí)施方式】
[0048]為了能夠更清楚地描述本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例來(lái)進(jìn)行進(jìn)一步的描述。
[0049]本發(fā)明解決的時(shí)空范圍快速查詢問(wèn)題涉及時(shí)間和空間分段點(diǎn)索引構(gòu)建算法;時(shí)空單點(diǎn)快速查詢問(wèn)題涉及時(shí)間和空間分段樹(shù)索引構(gòu)建算法及對(duì)應(yīng)的更新索引及刪除索引構(gòu)建算法。首先把海量過(guò)車記錄導(dǎo)入到Nosql的key-value (鍵值)數(shù)據(jù)庫(kù)中;然后利用MapReduce或Spark框架,根據(jù)過(guò)車記錄時(shí)間和空間顆粒,構(gòu)建時(shí)間和空間分段點(diǎn)的key-value索引表;之后在時(shí)間和空間分段點(diǎn)的key-value索引表的基礎(chǔ)上,構(gòu)建時(shí)間和空間分段樹(shù)key-value索引表,同時(shí)在重構(gòu)時(shí)間和空間分段樹(shù)key-value索引表期間,構(gòu)建時(shí)間和空間分段樹(shù)更新和刪除key-value索引表。
[0050]基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,包括以下算法:I)時(shí)間分段點(diǎn)索引構(gòu)建算法;2)空間分段點(diǎn)索引構(gòu)建算法;3)時(shí)間分段樹(shù)索引構(gòu)建算法;4)空間分段樹(shù)索引構(gòu)建算法;5)時(shí)間分段樹(shù)更新索引算法;6)空間分段樹(shù)更新索引算法。上述算法假定海量過(guò)車記錄已導(dǎo)入鍵值數(shù)據(jù)庫(kù)中。海量過(guò)車記錄表示為R(C,S,T)。其中C表示過(guò)車記錄主鍵標(biāo)識(shí)rowkey(行鍵),S表示空間范圍,T表示時(shí)間范圍。S= (Si ,Sj,...Sn)表示空間范圍由交通路網(wǎng)車輛監(jiān)控點(diǎn)編號(hào)(i,j,...η)組成。T=(Ta,Tb)(a彡b)表示時(shí)間范圍由時(shí)間點(diǎn)a到時(shí)間b的范圍,當(dāng)a = b,變成時(shí)間單點(diǎn)。時(shí)間分段劃分粒度以具體需求為準(zhǔn)(以天,小時(shí),分鐘等粗細(xì)粒度),假設(shè)時(shí)間間隔表示為timespan;空間分段劃分粒度以監(jiān)控點(diǎn)分布密稀程度為劃分標(biāo)準(zhǔn)(例:以500米X 500米,1000米X 1000米,2000米X 2000米等粗細(xì)粒度為準(zhǔn)),假設(shè)空間間隔表示為spacespan。本發(fā)明以鍵值數(shù)據(jù)庫(kù)hbase為例,索引創(chuàng)建平臺(tái)以MapReduce為例對(duì)算法構(gòu)建思路進(jìn)行解釋。
[0051]1.時(shí)間分段點(diǎn)索引構(gòu)建算法:
[0052]I)假定過(guò)車記錄時(shí)間所屬的時(shí)間范圍為[!^…^,則時(shí)間分段區(qū)間為^#^
Tbegin+? ?Π1ΘSp£in ],[ Tbegin+? ?Π1Θ Sp£in,Tbegin+2 X ? ?Π1ΘSp£in ],[ Tbegin+2 X ? ?Π1Θ SP£111,Tbegin+3 Xtimespan],...[Tbegin+(n_l) X timespan ,Tend]。
[0053]2)對(duì)hbase數(shù)據(jù)庫(kù)過(guò)車記錄表創(chuàng)建時(shí)間列簇下如Time的begin和end列,使導(dǎo)入的任何一條過(guò)車記錄的begin和end列值為上述I)中某一個(gè)分段區(qū)間的起始值和終止值。
[0054]3)利用MapReduce框架,對(duì)數(shù)據(jù)庫(kù)中的任一條過(guò)車記錄所屬的begin和end列值,形成以時(shí)間分段區(qū)間的起始值(和終止值)為key,所屬該區(qū)間的所有過(guò)車記錄的rowkey和對(duì)應(yīng)的時(shí)間分段區(qū)間的終止值(和起始值)為value的key-value時(shí)間分段點(diǎn)索引表。
[0055]2.空間分段點(diǎn)索引構(gòu)建算法:
[0056]I )假定交通路網(wǎng)車輛監(jiān)控點(diǎn)所屬的空間范圍為[Sstartpos,Sendpos ],則空間分段區(qū)間
[ Sstartpos,Sstartpos+spacespail ],[ Sstartpos+spacespail,Sstartpos+2 X spacespan ],[ Sstartpos+
2 X spacespan,Sstartpos+3 X spacespan],..[SstartPos+(n-l) X spacespan,Sendpos]。
[0057]2)對(duì)hbase數(shù)據(jù)庫(kù)過(guò)車記錄表創(chuàng)建空間列簇下如Space的startpos和endpos列,使導(dǎo)入的任何一條過(guò)車記錄的startpos和endpos列值為上述I)中某一個(gè)分段區(qū)間的起始值和終止值。
[°°58] 3)利用MapReduce框架,對(duì)數(shù)據(jù)庫(kù)中的任一條過(guò)車記錄所屬的startpos和endpos列值,形成以空間分段區(qū)間的起始值(和終止值)為key,所屬該區(qū)間的所有過(guò)車記錄的rowkey和對(duì)應(yīng)的空間分段區(qū)間的終止值(和起始值)為value的key-value空間分段點(diǎn)索引表。
[0059]2.時(shí)間分段樹(shù)索引構(gòu)建算法:
[0060]I)在已構(gòu)建完時(shí)間分段點(diǎn)索引表的基礎(chǔ)上,按照時(shí)間順序排列,每2個(gè)相鄰時(shí)間分段點(diǎn)形成I棵二叉樹(shù),左子樹(shù)的時(shí)間分段點(diǎn)標(biāo)識(shí)值為對(duì)應(yīng)時(shí)間分段區(qū)域的中間值,右子樹(shù)的時(shí)間分段點(diǎn)標(biāo)識(shí)值也為對(duì)應(yīng)時(shí)間分段區(qū)域的中間值,父親節(jié)點(diǎn)的時(shí)間分段點(diǎn)標(biāo)識(shí)值為對(duì)應(yīng)左右子樹(shù)標(biāo)識(shí)值的中間值。
[0061]2)按照上述規(guī)則,利用MapReduce框架,以時(shí)間分段點(diǎn)索引表中每一條記錄為輸入,形成以每一個(gè)時(shí)間分段點(diǎn)標(biāo)識(shí)值為key,所屬該區(qū)間的起始值(begin)和終止值(end),對(duì)應(yīng)的左子樹(shù)和右子樹(shù)標(biāo)識(shí)值及對(duì)應(yīng)過(guò)車記錄的rowkey為value的key-value時(shí)間分段樹(shù)索引表。
[0062]3)通過(guò)自底向上的循環(huán)建樹(shù),最后形成I棵僅含I個(gè)根結(jié)點(diǎn)的時(shí)間分段樹(shù)索引表。
[0063]3.空間分段樹(shù)索引構(gòu)建算法:
[0064]I)在已構(gòu)建完空間分段點(diǎn)索引表的基礎(chǔ)上,按照空間區(qū)域劃分大小,把所屬每2個(gè)空間分段點(diǎn)形成I棵二叉樹(shù),左子樹(shù)的空間分段點(diǎn)標(biāo)識(shí)值為對(duì)應(yīng)空間分段區(qū)域中心坐標(biāo)值,右子樹(shù)的空間分段點(diǎn)標(biāo)識(shí)值也為對(duì)應(yīng)空間分段區(qū)域中心坐標(biāo)值,父親節(jié)點(diǎn)的空間分段點(diǎn)標(biāo)識(shí)值為對(duì)應(yīng)左右子樹(shù)標(biāo)識(shí)值的中心坐標(biāo)值。
[0065]2)按照上述規(guī)則,利用MapReduce框架,以空間分段點(diǎn)索引表中每一條記錄為輸入,形成以每一個(gè)空間分段點(diǎn)標(biāo)識(shí)值為key,所屬該區(qū)間的起始值(startpos)和終止值(endpos),對(duì)應(yīng)的左子樹(shù)和右子樹(shù)標(biāo)識(shí)值及對(duì)應(yīng)過(guò)車記錄的rowkey為value的key-value空間分段樹(shù)索引表。
[0066]3)通過(guò)自底向上的循環(huán)建樹(shù),最后形成I棵僅含I個(gè)根結(jié)點(diǎn)的空間分段樹(shù)索引表。
[0067]4.時(shí)間分段樹(shù)更新索引算法:
[0068]I)在已構(gòu)建時(shí)間分段點(diǎn)索引表基礎(chǔ)上,增加對(duì)應(yīng)的如Update列簇下UI列,UI列用于記錄新插入和刪除的過(guò)車記錄。
[0069]2)新插入和刪除的過(guò)車記錄,保存在所屬時(shí)間分段點(diǎn)區(qū)間對(duì)應(yīng)UI列下。
[0070]5.空間分段樹(shù)更新索引算法:
[0071]I)在已構(gòu)建空間分段點(diǎn)索引表基礎(chǔ)上,增加對(duì)應(yīng)的如Update列簇下UI列,UI列用于記錄新插入和刪除的過(guò)車記錄。
[0072]2)新插入和刪除的交通路網(wǎng)車輛監(jiān)控點(diǎn),保存在所屬空間分段點(diǎn)區(qū)間對(duì)應(yīng)UI列下。
[0073]下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施做詳細(xì)說(shuō)明。實(shí)施步驟如下:
[0074]上述算法假定海量過(guò)車記錄已導(dǎo)入鍵值數(shù)據(jù)庫(kù)中。海量過(guò)車記錄表示為R(C,S,T)。其中C表示過(guò)車記錄主鍵標(biāo)識(shí)rowkey,S表示空間范圍,T表示時(shí)間范圍d = (Si ,Sj,...Sn)表示空間范圍由交通路網(wǎng)車輛監(jiān)控點(diǎn)編號(hào)(i,j,...η)組成。T=(Ta,Tb)(a彡b)表示時(shí)間范圍由時(shí)間點(diǎn)a到時(shí)間b的范圍,當(dāng)a = b,變成時(shí)間單點(diǎn)。時(shí)間分段劃分粒度以具體需求為準(zhǔn)(以天,小時(shí),分鐘等粗細(xì)粒度),假設(shè)時(shí)間間隔表示為timespan;空間分段劃分粒度以監(jiān)控點(diǎn)分布密稀程度為劃分標(biāo)準(zhǔn)(例以500米X 500米,1000米X 1000米,2000米X 2000米等粗細(xì)粒度),假設(shè)空間間隔表示為spacespan。本發(fā)明專利以鍵值數(shù)據(jù)庫(kù)hbase為例,索引創(chuàng)建平臺(tái)以MapReduce為例對(duì)算法構(gòu)建思路進(jìn)行解釋。
[0075]1、時(shí)間分段點(diǎn)索引表:
[0076]在時(shí)間分段點(diǎn)索引表中,確定過(guò)車記錄時(shí)間所屬的時(shí)間范圍(101),然后根據(jù)時(shí)間顆粒大小,確定時(shí)間間隔t i me s pan (以天,小時(shí),分鐘為單位),并劃分時(shí)間分段區(qū)間(1 2),如過(guò)車記錄時(shí)間范圍為2016-01-01 00:00:00至2016-04-30 00:00:00,以I天為時(shí)間間隔,則時(shí)間分段區(qū)間為[20160101000000 ,20160102000000] ,[20160102000000,20160103000000],[20160103000000,20160104000000]...[20160429000000 ,20160430000000].然后為每一條過(guò)車記錄創(chuàng)建begin和end列,如在原過(guò)車記錄表示為R(C,S,T),則追加列后的表示形式為R(C,S,T,begin,end),其中begin和end值為所屬時(shí)間分段區(qū)間的起始值和終止值(103)。利用MapReduce框架,讀入每一條過(guò)車記錄begin和end值,形成Map階段為〈begin , 〃r〃 | rowkey = end),〈 end,〃I〃 I rowkey = begin)的輸出形式,經(jīng)過(guò)Reduce 階段的匯總形成〈begin,"r" | rowkey I | rowkey2 | rowkey3 |...rowkeyk | =end),〈end, "I" I rowkey I | rowkey 2 | rowkey3 |...rowkeyk | =begin〉的時(shí)間分段點(diǎn)索引表(104)。其中rowkeyl,rowkey2,...rowkeyk為過(guò)車記錄時(shí)間在[begin,end]段內(nèi)的過(guò)車記錄主鍵,“1〃和〃 r 〃為時(shí)間段起始和終止標(biāo)識(shí)符。經(jīng)過(guò)多輪MapReduce的運(yùn)算處理,形成時(shí)間分段點(diǎn)索引表105。
[0077]2、空間分段點(diǎn)索引表:
[0078]在空間分段點(diǎn)索引表中,確定交通路網(wǎng)車輛監(jiān)控點(diǎn)所屬的空間范圍(201),然后根據(jù)空間顆粒大小,確定空間間隔表示為spacespan,并劃分空間分段區(qū)間(202),如過(guò)車記錄所屬的交通路網(wǎng)車輛監(jiān)控點(diǎn)S=(Si,Sj,...Sn),表示空間范圍由交通路網(wǎng)車輛監(jiān)控點(diǎn)編號(hào)(i J,...η)組成。上述車輛監(jiān)控點(diǎn)所屬的空間范圍為最左上點(diǎn)坐標(biāo)為(0,0),最右下點(diǎn)坐標(biāo)為(200000,200000),以1000米\1000米為空間間隔,形成1到200個(gè)空間分段區(qū)間為[0,1],[1,2], [2,3]...[ 199,200]。然后為每一條過(guò)車記錄創(chuàng)建startpos和endpos列,如在原過(guò)車記錄表示為R(C,S,T),則追加列后的表示形式為R(C,S,T,startpos,endpos),其中startpos和endpos值為所屬空間分段區(qū)間的起始值和終止值(203).利用MapReduce框架,讀入每一條過(guò)車記錄startpos和endpos值,形成Map階段為〈startpos,〃e〃 | rowkey =endpos),〈 endpos , 〃s〃 | rowkey = startpos〉的輸出形式,經(jīng)過(guò)Reduce階段的匯總形成〈startpos,"e"|rowkeyl|rowkey2|rowkey3|...rowkeyk|= endpos),〈 endpos,"s"|rowkeyl | rowkey2 | rowkey3...rowkeyk | = startpos〉的空間分段點(diǎn)索引表(204)。其中rowkeyl,rowkey2,...rowkeyk為過(guò)車記錄監(jiān)控點(diǎn)所屬的空間在[startpos,endpos]段內(nèi)的過(guò)車記錄主鍵,〃 s 〃和〃 e 〃為空間段起始和終止標(biāo)識(shí)符。經(jīng)過(guò)多輪MapReduce的運(yùn)算處理,形成空間分段點(diǎn)索引表(205)。
[0079]3、時(shí)間分段樹(shù)索引表
[0080]在已構(gòu)建好時(shí)間分段點(diǎn)索引表(105)的基礎(chǔ)上,以過(guò)車記錄時(shí)間范圍為2016-01-01 00:00:00至2016-04-30 00:00:00,以I天為時(shí)間間隔為例,則時(shí)間分段點(diǎn)索引表長(zhǎng)度為121,每相鄰2個(gè)時(shí)間分段點(diǎn)形成一棵子二叉樹(shù)的父節(jié)點(diǎn),通過(guò)多輪迭代,形成一棵僅含有一個(gè)根節(jié)點(diǎn)的完全二叉樹(shù)(302),此棵樹(shù)的高度為7(大于等于(log2121))層。然后標(biāo)識(shí)樹(shù)中的每一個(gè)節(jié)點(diǎn),從葉子節(jié)點(diǎn)標(biāo)識(shí)起,自底向上,最后形成時(shí)間分段樹(shù)索引表(303).節(jié)點(diǎn)標(biāo)識(shí)如下:以第一個(gè)葉子節(jié)點(diǎn)為例,取[20160101000000 ,20160102000000]中的中間值20160101500000L 為 key ,value 的值 I = 20160101000000 Ur = 20160102000000 U L=” UR=,,U rowkeyl rowkey2 | rowkey3...1 rowkeyk。其中key鍵中包含〃L〃表不為葉子節(jié)點(diǎn),"R"為根節(jié)點(diǎn),否則為中間節(jié)點(diǎn);標(biāo)識(shí)符〃1〃為時(shí)間分段的起點(diǎn),〃r〃為時(shí)間分段的終點(diǎn),"L〃為左孩子節(jié)點(diǎn)的標(biāo)識(shí)值,〃1?〃為右孩子節(jié)點(diǎn)的標(biāo)識(shí)值,1'0¥1^71,1'0¥1^72,1'0¥1^73...rowkeyk為車輛通行時(shí)間屬于此時(shí)間分段的車輛過(guò)車記錄主鍵。
[0081]4、空間分段樹(shù)索引表
[0082]在已構(gòu)建好空間分段點(diǎn)索引表(205)的基礎(chǔ)上,以空間范圍最左上點(diǎn)坐標(biāo)為(O,O),最右下點(diǎn)坐標(biāo)為(200000,200000),1000米X 1000米為空間間隔,則空間分段點(diǎn)索引表長(zhǎng)度為200,每相鄰2個(gè)空間分段點(diǎn)形成一棵子二叉樹(shù)的父節(jié)點(diǎn),通過(guò)多輪迭代,形成一棵僅含有一個(gè)根節(jié)點(diǎn)的完全二叉樹(shù)(402),此棵樹(shù)的高度為8,然后標(biāo)識(shí)樹(shù)中的每一個(gè)節(jié)點(diǎn),從葉子節(jié)點(diǎn)標(biāo)識(shí)起,自底向上,最后形成時(shí)間分段樹(shù)索引表(403).節(jié)點(diǎn)標(biāo)識(shí)如下:以第一個(gè)葉子節(jié)點(diǎn)為例,取[O,I]中的中間值0.5L 為key ,value的值1 = 0 U r = I U L=,,U R=,,U rowkeylrowkey2 | rowkey3...1 rowkeyk.其中key鍵中包含〃L〃表示為葉子節(jié)點(diǎn),〃R〃為根節(jié)點(diǎn),否則為中間節(jié)點(diǎn);標(biāo)識(shí)符"Γ為空間分段的起點(diǎn),"r"為空間分段的終點(diǎn),"L"為左孩子節(jié)點(diǎn)的標(biāo)識(shí)值,"R〃為右孩子節(jié)點(diǎn)的標(biāo)識(shí)值,rowkey I,rowkey2,rowkey3...rowkeyk為車輛通行監(jiān)控點(diǎn)屬于此空間分段的車輛過(guò)車記錄主鍵。
[0083]5、時(shí)間分段樹(shù)更新索引表
[0084]在已構(gòu)建好時(shí)間分段點(diǎn)索引表(105)的基礎(chǔ)上,增加update列簇下UI列,并記錄新插入和刪除的過(guò)車記錄(501),新插入的過(guò)車記錄以含〃+〃表示,刪除的過(guò)車記錄以含〃-〃表示,如新插入過(guò)車記錄時(shí)間為20 16-0 1-O I 08: 23: 20主鍵m為例,UI列值的key為20160101500000L,rm+ = 20160101000000;如刪除過(guò)車記錄時(shí)間為 2016-01-01 11:23:20 主鍵 η 為例,UI 列值的 key 為 20160101500000L,rn- = 20160101000000。
[0085]6、空間分段樹(shù)更新索引表
[0086]在已構(gòu)建好空間分段點(diǎn)索引表(205)的基礎(chǔ)上,增加update列簇下UI列,并記錄新插入和刪除的過(guò)車記錄(601),新插入的過(guò)車記錄以含〃+〃表示,刪除的過(guò)車記錄以含〃-〃表示,如新插入過(guò)車記錄經(jīng)過(guò)監(jiān)控點(diǎn)空間范圍屬于空間分段點(diǎn)[O,I ]主鍵η為例,UI列值的key為0.5L,rn+= I ;如刪除過(guò)車記錄經(jīng)過(guò)監(jiān)控點(diǎn)空間范圍屬于空間分段點(diǎn)[O,I ]主鍵k為例,UI列值的key 為0.5L,rk-= I。
[0087]采用了該發(fā)明中的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,具有如下有益效果:
[0088](I)通過(guò)引入時(shí)空分段點(diǎn)索引表,大大提高基于時(shí)空單點(diǎn)的過(guò)車記錄快速查詢效率;
[0089](2)通過(guò)引入時(shí)空分段樹(shù)索引表,大大提高基于時(shí)空范圍的過(guò)車記錄快速查詢效率;
[0090](3)通過(guò)引入時(shí)空分段樹(shù)更新索引表,能動(dòng)態(tài)重構(gòu)時(shí)空分段樹(shù)索引表,為支持海量的流過(guò)車記錄實(shí)時(shí)查詢提供可能;
[0091](4)通過(guò)引入鍵值云存儲(chǔ)數(shù)據(jù)庫(kù)保存上述索引表,并利用Hadoop云平臺(tái)生成上述索引表,大大縮短了構(gòu)建和維護(hù)索引的時(shí)間,并提高查詢處理性能。
[0092]在此說(shuō)明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說(shuō)明書和附圖應(yīng)被認(rèn)為是說(shuō)明性的而非限制性的。
【主權(quán)項(xiàng)】
1.一種基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其特征在于,所述的方法包括如下步驟: (1)將海量過(guò)車記錄數(shù)據(jù)導(dǎo)入到鍵值數(shù)據(jù)庫(kù)中; (2)根據(jù)過(guò)車記錄時(shí)間和空間顆粒,構(gòu)建時(shí)間和空間分段點(diǎn)的鍵值索引表; (3)在時(shí)間和空間分段點(diǎn)的鍵值索引表的基礎(chǔ)上,構(gòu)建時(shí)間和空間分段樹(shù)的鍵值索引表; (4)在重構(gòu)時(shí)間和空間分段樹(shù)的鍵值索引表時(shí),構(gòu)建時(shí)間和空間分段樹(shù)更新和刪除鍵值索引表。2.根據(jù)權(quán)利要求1所述的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其特征在于,構(gòu)建時(shí)間分段點(diǎn)的鍵值索引表,包括以下步驟: (2-A-1)確定過(guò)車記錄時(shí)間所屬的時(shí)間范圍; (2-A-2)基于時(shí)間顆粒度大小,對(duì)時(shí)間范圍進(jìn)行分段,得到時(shí)間分段區(qū)間; (2-A-3)對(duì)時(shí)間分段區(qū)間的起始值和終止值分別建立鍵值; (2-A-4)利用MapReduce或者Spark框架將屬于各個(gè)時(shí)間分段區(qū)間內(nèi)的過(guò)車記錄的行鍵聚集保存于對(duì)應(yīng)列值中,形成時(shí)間分段點(diǎn)的鍵值索引表。3.根據(jù)權(quán)利要求1所述的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其特征在于,構(gòu)建空間分段點(diǎn)的鍵值索引表,包括以下步驟: (2-B-1)確定交通路網(wǎng)車輛監(jiān)控點(diǎn)所屬的空間范圍; (2-B-2)基于空間顆粒度大小,對(duì)空間范圍進(jìn)行分段,得到空間分段區(qū)間; (2-B-3)對(duì)空間分段區(qū)間的起始值和終止值分別建立鍵值; (2-B-4)利用MapReduce或者Spark框架將屬于各個(gè)空間分段區(qū)間內(nèi)的過(guò)車記錄的行鍵聚集保存于對(duì)應(yīng)列值中,形成空間分段點(diǎn)的鍵值索引表。4.根據(jù)權(quán)利要求2所述的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其特征在于,構(gòu)建時(shí)間分段樹(shù)的鍵值索引表,包括以下步驟: (3-A-1)基于時(shí)間分段點(diǎn)的鍵值索引表,每?jī)蓚€(gè)相鄰的時(shí)間分段構(gòu)建一棵樹(shù),采用自底向上的方法,利用MapReduce或者Spark框架,形成一棵僅含一個(gè)根節(jié)點(diǎn)的完全二叉樹(shù); (3-A-2)標(biāo)識(shí)二叉樹(shù)的所有節(jié)點(diǎn),形成具有時(shí)間分段點(diǎn)標(biāo)識(shí)值的鍵值、分段點(diǎn)所屬時(shí)間分段區(qū)間的起始值和終止值、對(duì)應(yīng)左子樹(shù)和右子樹(shù)標(biāo)識(shí)值及過(guò)車記錄的行鍵的時(shí)間分段樹(shù)索引表。5.根據(jù)權(quán)利要求1所述的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其特征在于,構(gòu)建空間分段樹(shù)的鍵值索引表,包括以下步驟: (3-B-1)基于空間分段點(diǎn)的鍵值索引表,每?jī)蓚€(gè)相鄰的空間分段構(gòu)建一棵樹(shù),采用自底向上的方法,利用MapReduce或者Spark框架,形成一棵僅含一個(gè)根節(jié)點(diǎn)的完全二叉樹(shù); (3-B-2)標(biāo)識(shí)二叉樹(shù)的所有節(jié)點(diǎn),形成具有空間分段點(diǎn)標(biāo)識(shí)值的鍵值、分段點(diǎn)所屬空間分段區(qū)間的起始值和終止值、對(duì)應(yīng)左子樹(shù)和右子樹(shù)標(biāo)識(shí)值及過(guò)車記錄的行鍵的空間分段樹(shù)索引表。6.根據(jù)權(quán)利要求1所述的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其特征在于,構(gòu)建時(shí)間分段樹(shù)更新和刪除鍵值索引表,包括以下步驟: (4-A-1)基于時(shí)間分段點(diǎn)的鍵值索引表,將新插入和刪除的過(guò)車記錄保存于一個(gè)單獨(dú)的列中,形成時(shí)間分段樹(shù)更新和刪除鍵值索引表; (4-A-2)當(dāng)需要重新構(gòu)建時(shí)間分段樹(shù)的鍵值索引表時(shí),從時(shí)間分段樹(shù)更新和刪除鍵值索引表中快速獲取新插入和刪除的過(guò)車記錄。7.根據(jù)權(quán)利要求1所述的基于鍵值云存儲(chǔ)的時(shí)空范圍內(nèi)海量過(guò)車記錄快速查詢方法,其特征在于,構(gòu)建空間分段樹(shù)更新和刪除鍵值索引表,包括以下步驟: (4-B-1)基于空間分段點(diǎn)的鍵值索引表,將新插入和刪除的過(guò)車記錄保存于一個(gè)單獨(dú)的列中,形成空間分段樹(shù)更新和刪除鍵值索引表; (4-B-2)當(dāng)需要重新構(gòu)建空間分段樹(shù)的鍵值索引表時(shí),從空間分段樹(shù)更新和刪除鍵值索引表中快速獲取新插入和刪除的過(guò)車記錄。
【文檔編號(hào)】G06F17/30GK106095952SQ201610423093
【公開(kāi)日】2016年11月9日
【申請(qǐng)日】2016年6月15日 公開(kāi)號(hào)201610423093.8, CN 106095952 A, CN 106095952A, CN 201610423093, CN-A-106095952, CN106095952 A, CN106095952A, CN201610423093, CN201610423093.8
【發(fā)明人】趙郁亮, 徐旭, 胡玲玲
【申請(qǐng)人】公安部第三研究所
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
区。| 镇康县| 乌鲁木齐市| 汕头市| 潍坊市| 贡觉县| 五家渠市| 乳山市| 鹿泉市| 泌阳县| 梁河县| 廊坊市| 三门峡市| 谢通门县| 深泽县| 岐山县| 长沙市| 海兴县| 襄城县| 建德市| 闵行区| 双牌县| 柳州市| 玉山县| 铜鼓县| 江华| 德清县| 通河县| 湖北省| 高州市| 绿春县| 天峻县| 常山县| 磴口县| 长治县| 普宁市| 六枝特区| 富宁县| 塘沽区| 石家庄市| 大城县|