一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)和查詢方法
【專利摘要】本發(fā)明公開(kāi)了一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)方法,所述方法包括:根據(jù)不同的時(shí)間桶分別建立相應(yīng)的緩沖層;將低級(jí)統(tǒng)時(shí)間桶計(jì)數(shù)據(jù)存入低級(jí)統(tǒng)計(jì)數(shù)據(jù)緩沖層;將所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并得到高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù);將所述高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行存儲(chǔ),解決了現(xiàn)有技術(shù)中現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法存在只能存儲(chǔ)較短時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要大量時(shí)間,效率較低的技術(shù)問(wèn)題,實(shí)現(xiàn)了能夠存儲(chǔ)較長(zhǎng)時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要時(shí)間短,效率較高的技術(shù)效果。
【專利說(shuō)明】一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)和查詢方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息技術(shù)處理領(lǐng)域,尤其涉及一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)和查詢方法。
【背景技術(shù)】
[0002]在網(wǎng)絡(luò)數(shù)據(jù)分析領(lǐng)域中經(jīng)常需要對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)包或數(shù)據(jù)流進(jìn)行細(xì)致的分析和統(tǒng)計(jì),以獲取某個(gè)具體時(shí)間段內(nèi)的數(shù)據(jù)統(tǒng)計(jì)情況,例如某個(gè)IP在指定時(shí)間段內(nèi)的產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)信息(發(fā)送接收的字節(jié)數(shù)、數(shù)據(jù)包數(shù)等統(tǒng)計(jì)值),或者某個(gè)TCP會(huì)話在指定時(shí)間段內(nèi)產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)信息(持續(xù)的時(shí)長(zhǎng)、平均包長(zhǎng)、連接響應(yīng)時(shí)間等)、再或者某個(gè)物理會(huì)話在指定時(shí)間段內(nèi)產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)信息(發(fā)送接收的字節(jié)數(shù)、廣播數(shù)據(jù)包數(shù),組播數(shù)據(jù)包數(shù))等。
[0003]在網(wǎng)絡(luò)數(shù)據(jù)分析領(lǐng)域中,存在著大量需要統(tǒng)計(jì)的數(shù)據(jù),并且這些統(tǒng)計(jì)的數(shù)據(jù)很可能每秒都在發(fā)生,我們需要將這些每秒都在產(chǎn)生的大量統(tǒng)計(jì)數(shù)據(jù)及時(shí)的保存在持久的存儲(chǔ)設(shè)備上(磁盤等存儲(chǔ)設(shè)備),而且數(shù)據(jù)在被保存后可能需要查詢一個(gè)指定時(shí)間段內(nèi)的統(tǒng)計(jì)結(jié)果O
[0004]時(shí)間段:用一個(gè)開(kāi)始時(shí)間戳和一個(gè)結(jié)束時(shí)間戳描述,表示從開(kāi)始時(shí)間開(kāi)始一直持續(xù)到結(jié)束時(shí)間(不包括結(jié)束時(shí)間)的這個(gè)時(shí)間段。時(shí)間段是一個(gè)左閉右開(kāi)的區(qū)間,例如[1388505601, 1388505700)表示的就是從 2014-01-01 00:00:00 到 2014-01-01 00:01:40這I分鐘40秒的時(shí)間段。時(shí)間桶:持續(xù)時(shí)長(zhǎng)為N秒,并且開(kāi)始時(shí)間戳為N的整數(shù)倍的時(shí)間段稱為時(shí)間桶。常用時(shí)間桶有I秒桶、I分鐘桶、I小時(shí)桶、I天桶等。如I秒桶是指任意一個(gè)時(shí)長(zhǎng)為I秒的時(shí)間段;1分鐘桶是指開(kāi)始時(shí)間戳為60的整數(shù)倍,并且時(shí)長(zhǎng)為60秒的時(shí)間段;10分鐘桶是指開(kāi)始時(shí)間戳為600的整數(shù)倍,并且時(shí)長(zhǎng)為600秒的時(shí)間段;其他時(shí)間桶類推。
[0005]在數(shù)據(jù)分析和挖掘領(lǐng)域中,常常會(huì)出現(xiàn)以下情況:原始數(shù)據(jù)在整個(gè)數(shù)據(jù)分析過(guò)程中都可能發(fā)生(持續(xù)不斷的或者間斷性的發(fā)生),我們需要對(duì)每一秒發(fā)生的原始數(shù)據(jù)都進(jìn)行細(xì)致和全面的分析,得到關(guān)于原始數(shù)據(jù)的統(tǒng)計(jì)數(shù)據(jù)。這些統(tǒng)計(jì)數(shù)據(jù)需要被存儲(chǔ)下來(lái),并且在事后需要按照給定的時(shí)間段對(duì)統(tǒng)計(jì)結(jié)果進(jìn)行查詢。
[0006]如果我們對(duì)每一秒的原始數(shù)據(jù)都進(jìn)行統(tǒng)計(jì),就可以獲得每一秒的統(tǒng)計(jì)數(shù)據(jù)。如果需要統(tǒng)計(jì)的信息非常多,那么I秒的統(tǒng)計(jì)數(shù)據(jù)就可能占用不小的存儲(chǔ)空間。當(dāng)I秒的統(tǒng)計(jì)數(shù)據(jù)達(dá)到十幾兆字節(jié)或者更多時(shí),將會(huì)在兩方面帶來(lái)很大的壓力:
統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)時(shí)長(zhǎng)將會(huì)變得十分有限。假設(shè)I秒鐘有16MB的統(tǒng)計(jì)數(shù)據(jù)需要保存,那么對(duì)于一個(gè)容量為1TB(=1048576MB)的存儲(chǔ)空間來(lái)說(shuō),只能保存1048576MB /16MB =65536秒(18個(gè)小時(shí)左右)的統(tǒng)計(jì)數(shù)據(jù)。
[0007]統(tǒng)計(jì)數(shù)據(jù)的事后查詢將會(huì)變得十分緩慢和低效。假設(shè)需要查詢兩個(gè)小時(shí)的統(tǒng)計(jì)數(shù)據(jù),那么就需要從存儲(chǔ)設(shè)備中讀取16MB/秒X 7200秒=112.5GB的統(tǒng)計(jì)數(shù)據(jù),對(duì)于磁盤這種低速存儲(chǔ)設(shè)備,這么大量的數(shù)據(jù)讀取將會(huì)是非常耗時(shí)的。更近一步,這么大量的統(tǒng)計(jì)數(shù)據(jù)被讀取出來(lái)之后,還需要進(jìn)行統(tǒng)計(jì)合并操作,這也將是一個(gè)非常耗時(shí)的運(yùn)算過(guò)程。
[0008]現(xiàn)有的網(wǎng)絡(luò)數(shù)據(jù)分析工具一般只分析一個(gè)指定時(shí)間段內(nèi)的數(shù)據(jù)或者一個(gè)數(shù)據(jù)包文件的數(shù)據(jù),逐個(gè)分析數(shù)據(jù)包產(chǎn)生統(tǒng)計(jì)結(jié)果,并產(chǎn)生一個(gè)整體的統(tǒng)計(jì)結(jié)果,分析得到統(tǒng)計(jì)數(shù)據(jù)的過(guò)程隨著數(shù)據(jù)量的增加可能會(huì)耗時(shí)較長(zhǎng)。
[0009]本申請(qǐng)發(fā)明人在實(shí)現(xiàn)本申請(qǐng)實(shí)施例中發(fā)明技術(shù)方案的過(guò)程中,發(fā)現(xiàn)上述技術(shù)至少存在如下技術(shù)問(wèn)題:
在現(xiàn)有技術(shù)中,由于現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法只分析一個(gè)指定時(shí)間段內(nèi)的數(shù)據(jù)或者一個(gè)數(shù)據(jù)包文件的數(shù)據(jù),逐個(gè)分析數(shù)據(jù)包產(chǎn)生統(tǒng)計(jì)結(jié)果,并產(chǎn)生一個(gè)整體的統(tǒng)計(jì)結(jié)果,所以,現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法存在只能存儲(chǔ)較短時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要大量時(shí)間,效率較低的技術(shù)問(wèn)題。
【發(fā)明內(nèi)容】
[0010]本申請(qǐng)實(shí)施例通過(guò)提供一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)和查詢方法,解決了現(xiàn)有技術(shù)中現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法存在只能存儲(chǔ)較短時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要大量時(shí)間,效率較低的技術(shù)問(wèn)題,實(shí)現(xiàn)了能夠存儲(chǔ)較長(zhǎng)時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要時(shí)間短,效率較高的技術(shù)效果。
[0011]為解決上述技術(shù)問(wèn)題,本申請(qǐng)實(shí)施例一方面提供了一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)方法,所述方法包括:
根據(jù)不同的時(shí)間桶分別建立相應(yīng)的緩沖層;
將低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)存入低級(jí)統(tǒng)計(jì)數(shù)據(jù)緩沖層;
將所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并得到高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù);
將所述高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0012]進(jìn)一步的,所述緩沖層能容納的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)的容量為:高一級(jí)時(shí)間桶的時(shí)長(zhǎng)/本級(jí)時(shí)間桶的時(shí)長(zhǎng)。
[0013]進(jìn)一步的,所述將所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并得到高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)具體包括:
(1)提交所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù);
(2)判斷當(dāng)前統(tǒng)計(jì)數(shù)據(jù)時(shí)間是否超過(guò)高一級(jí)時(shí)間桶邊界,若否,則將當(dāng)前桶統(tǒng)計(jì)數(shù)據(jù)緩存至對(duì)應(yīng)的緩沖層并結(jié)束操作;若是,則將當(dāng)前級(jí)時(shí)間桶緩存層數(shù)據(jù)寫入磁盤;
(3)在將當(dāng)前級(jí)時(shí)間桶緩存層數(shù)據(jù)寫入磁盤之后,將當(dāng)前級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)合并,獲得高一級(jí)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù);
(4)清空當(dāng)前級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)的緩沖層;
(5)將高一級(jí)的時(shí)間桶作為當(dāng)前級(jí)時(shí)間桶,并將所述高一級(jí)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)提交;
(6)重復(fù)步驟(2)- (5)直到獲得所述高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)。
[0014]另一方面,本申請(qǐng)實(shí)例還提供一種統(tǒng)計(jì)數(shù)據(jù)的查詢方法,所述方法包括:
獲得查詢時(shí)間段,將所述查詢時(shí)間段進(jìn)行分解,獲得等價(jià)的時(shí)間桶集合;
讀取所述時(shí)間桶集合的統(tǒng)計(jì)數(shù)據(jù),獲得各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù);
將所述各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù)合并得到最終的統(tǒng)計(jì)數(shù)據(jù)。
[0015]進(jìn)一步的,所述將所述各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù)合并得到最終的統(tǒng)計(jì)數(shù)據(jù)具體包括:
(I)從所述時(shí)間桶集合中取出第一個(gè)查詢時(shí)間桶; (2)判斷是否成功取出一個(gè)查詢時(shí)間桶,若否,則查詢完成將查詢緩存中的合并結(jié)果統(tǒng)計(jì)數(shù)據(jù)返回,獲得所述最終的統(tǒng)計(jì)數(shù)據(jù),并停止后續(xù)步驟;若是,則按照時(shí)間桶表示的時(shí)間段在緩沖層和磁盤中查詢統(tǒng)計(jì)數(shù)據(jù);
(3)在按照時(shí)間桶表示的時(shí)間段在緩沖層和磁盤中查詢統(tǒng)計(jì)數(shù)據(jù)之后,判斷查詢緩存中是否已有統(tǒng)計(jì)數(shù)據(jù);若否,則將統(tǒng)計(jì)數(shù)據(jù)插入所述查詢緩存中,然后重復(fù)步驟(I) - (3);若是,將統(tǒng)計(jì)數(shù)據(jù)與所述查詢緩存中的統(tǒng)計(jì)數(shù)據(jù)合并,然后重復(fù)步驟(I) - (3)。
[0016]本申請(qǐng)實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
由于采用了將存儲(chǔ)空間進(jìn)行合理劃分和對(duì)每秒統(tǒng)計(jì)數(shù)據(jù)的再處理后存儲(chǔ),以及在查詢數(shù)據(jù)時(shí)讀取數(shù)據(jù)量表小的技術(shù)手段,所以,有效解決了現(xiàn)有技術(shù)中現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法存在只能存儲(chǔ)較短時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要大量時(shí)間,效率較低的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了能夠存儲(chǔ)較長(zhǎng)時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要時(shí)間短,效率較高的技術(shù)效果。
【專利附圖】
【附圖說(shuō)明】
[0017]圖1為本申請(qǐng)實(shí)施例中信息處理方法的流程圖;
圖2為本申請(qǐng)實(shí)施例中電子設(shè)備的結(jié)構(gòu)圖;
圖3為本申請(qǐng)實(shí)施例電子設(shè)備中廣播單元的結(jié)構(gòu)圖;
圖4為本申請(qǐng)實(shí)施例電子設(shè)備中處理模塊的結(jié)構(gòu)圖;
圖5為本申請(qǐng)實(shí)施例電子設(shè)備中建立單元的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0018]本申請(qǐng)實(shí)施例通過(guò)提供一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)和查詢方法,解決了現(xiàn)有技術(shù)中現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法存在只能存儲(chǔ)較短時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要大量時(shí)間,效率較低的技術(shù)問(wèn)題,實(shí)現(xiàn)了能夠存儲(chǔ)較長(zhǎng)時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要時(shí)間短,效率較高的技術(shù)效果。
[0019]本申請(qǐng)實(shí)施中的技術(shù)方案為解決上述技術(shù)問(wèn)題。總體思路如下:
首先根據(jù)不同的時(shí)間桶分別建立相應(yīng)的緩沖層,然后將低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)存入低級(jí)統(tǒng)計(jì)數(shù)據(jù)緩沖層,然后將所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并得到高級(jí)時(shí)間桶數(shù)據(jù),最后將所述高級(jí)時(shí)間桶數(shù)據(jù)進(jìn)行存儲(chǔ)的技術(shù)方案,即采用了將存儲(chǔ)空間進(jìn)行合理劃分和對(duì)每秒統(tǒng)計(jì)數(shù)據(jù)的再處理后存儲(chǔ),以及在查詢數(shù)據(jù)時(shí)讀取數(shù)據(jù)量表小的技術(shù)手段,所以,有效解決了現(xiàn)有技術(shù)中現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法存在只能存儲(chǔ)較短時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要大量時(shí)間,效率較低的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了能夠存儲(chǔ)較長(zhǎng)時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要時(shí)間短,效率較高的技術(shù)效果。
[0020]為了更好的理解上述技術(shù)方案,下面將結(jié)合說(shuō)明書附圖以及具體的實(shí)施方式對(duì)上述技術(shù)方案進(jìn)行詳細(xì)的說(shuō)明。
[0021]實(shí)施例一
在實(shí)施例一中,提供了一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)方法,請(qǐng)參考圖1,所述方法包括:
S10,根據(jù)不同的時(shí)間桶分別建立相應(yīng)的緩沖層;
S20,將低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)存入低級(jí)統(tǒng)計(jì)數(shù)據(jù)緩沖層; S30,將所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并得到高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù);
S40,將所述高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0022]其中,在本申請(qǐng)實(shí)施例中,所述緩沖層能容納的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)的容量為:高一級(jí)時(shí)間桶的時(shí)長(zhǎng)/本級(jí)時(shí)間桶的時(shí)長(zhǎng)。
[0023]在實(shí)際應(yīng)用中,緩沖層能容納的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)的容量為:高一級(jí)時(shí)間桶的時(shí)長(zhǎng)/本級(jí)時(shí)間桶的時(shí)長(zhǎng)。例如需要的時(shí)間桶分為以下幾個(gè):1秒桶、I分鐘桶、10分鐘桶、I小時(shí)桶和I天桶。那么,對(duì)于I秒桶,需要建立的緩沖層容量為:60秒/I秒=60,即需要為I秒桶的統(tǒng)計(jì)數(shù)據(jù)建立能容納60個(gè)I秒桶統(tǒng)計(jì)數(shù)據(jù)的緩沖層。對(duì)于I分鐘桶,需要建立的緩沖層容量為:10分鐘/I分鐘=10,即需要為I分鐘桶建立10個(gè)能容納I分鐘桶統(tǒng)計(jì)數(shù)據(jù)的緩沖層。以此類推。
[0024]在實(shí)際應(yīng)用中,一個(gè)I分鐘桶內(nèi)的所有I秒桶統(tǒng)計(jì)數(shù)據(jù)都已生成完畢并放入緩沖層后,就是產(chǎn)生一個(gè)I分鐘桶統(tǒng)計(jì)數(shù)據(jù)的時(shí)刻,此時(shí)需要讀取I分鐘桶包含的所有I秒桶統(tǒng)計(jì)數(shù)據(jù)并合并成一個(gè)I分鐘桶統(tǒng)計(jì)數(shù)據(jù),然后放入對(duì)應(yīng)的I分鐘桶緩沖層。然后將I秒桶緩沖層中對(duì)應(yīng)的統(tǒng)計(jì)數(shù)據(jù)寫入磁盤并從緩沖層清除,以接收新的秒級(jí)統(tǒng)計(jì)數(shù)據(jù)。
[0025]其中,在本申請(qǐng)實(shí)施例中,請(qǐng)參考圖2,所述將所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并得到高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)具體包括:
(1)提交所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù);
(2)判斷當(dāng)前統(tǒng)計(jì)數(shù)據(jù)時(shí)間是否超過(guò)高一級(jí)時(shí)間桶邊界,若否,則將當(dāng)前桶統(tǒng)計(jì)數(shù)據(jù)緩存至對(duì)應(yīng)的緩沖層并結(jié)束操作;若是,則將當(dāng)前級(jí)時(shí)間桶緩存層數(shù)據(jù)寫入磁盤;
(3)在將當(dāng)前級(jí)時(shí)間桶緩存層數(shù)據(jù)寫入磁盤之后,將當(dāng)前級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)合并,獲得高一級(jí)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù);
(4)清空當(dāng)前級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)的緩沖層;
(5)將高一級(jí)的時(shí)間桶作為當(dāng)前級(jí)時(shí)間桶,并將所述高一級(jí)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)提交;
(6)重復(fù)步驟(2)- (5)直到獲得所述高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)。
[0026]其中,在實(shí)際應(yīng)用中,當(dāng)一個(gè)比I秒桶更高一級(jí)的時(shí)間桶(例如I分鐘桶)內(nèi)的所有秒的統(tǒng)計(jì)數(shù)據(jù)已經(jīng)生成并被保存后,分別讀取這些I秒級(jí)的統(tǒng)計(jì)數(shù)據(jù)并使用這些統(tǒng)計(jì)數(shù)據(jù)再一次的進(jìn)行統(tǒng)計(jì),以獲得更高一級(jí)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù)。然后,將這些更高一級(jí)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行記錄(緩存在高速存取設(shè)備或保存在持久的存儲(chǔ)設(shè)備中)。以此類推,10分鐘時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù)在該時(shí)間桶內(nèi)所有的I分鐘桶統(tǒng)計(jì)數(shù)據(jù)生成并保存后,分別讀取這些I分鐘桶的統(tǒng)計(jì)數(shù)據(jù)并再次統(tǒng)計(jì)成一個(gè)10分鐘的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)。采用這種方式,可以獲得I小時(shí)桶、I天桶等更高級(jí)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)然后進(jìn)行保存。
[0027]請(qǐng)參考圖3,圖3為統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)的構(gòu)架及數(shù)據(jù)流向示意圖。在實(shí)際應(yīng)用中,在進(jìn)行統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)時(shí)需要用到統(tǒng)計(jì)模塊和存儲(chǔ)模塊。
[0028]在實(shí)際應(yīng)用中,通過(guò)本實(shí)施例提供的方法可以將存儲(chǔ)空間進(jìn)行合理的劃分。假設(shè)存儲(chǔ)空間為1TB,每秒統(tǒng)計(jì)數(shù)據(jù)產(chǎn)生量為16MB。我們可以將存儲(chǔ)空間做如下劃分:1秒級(jí)精度的統(tǒng)計(jì)數(shù)據(jù)占用空間:60% (=619245MB),1分鐘級(jí)精度的統(tǒng)計(jì)數(shù)據(jù)占用空間:20%(=209715MB),10分鐘級(jí)精度的統(tǒng)計(jì)數(shù)據(jù)占用空間:10% (=104857MB),I小時(shí)精度的統(tǒng)計(jì)數(shù)據(jù)占用空間:10%(=104857MB),各個(gè)時(shí)長(zhǎng)精度的設(shè)定以及占存儲(chǔ)空間的百分比可以根據(jù)實(shí)際情況做調(diào)整,通過(guò)合理的劃分可以數(shù)據(jù)占用空間的比例降低。[0029]在實(shí)際應(yīng)用中,當(dāng)I分鐘內(nèi)的所有I秒級(jí)精度統(tǒng)計(jì)的統(tǒng)計(jì)數(shù)據(jù)完成后,我們可以進(jìn)一步將這些I秒級(jí)的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)合并操作,這樣就可以得到一個(gè)I分鐘精度的統(tǒng)計(jì)數(shù)據(jù)。以此類推可以獲得10分鐘、I小時(shí)、I天級(jí)精度的統(tǒng)計(jì)數(shù)據(jù),采用這種方式,我們就可以得到各種時(shí)長(zhǎng)精度的統(tǒng)計(jì)數(shù)據(jù)。由于統(tǒng)計(jì)數(shù)據(jù)的統(tǒng)計(jì)合并特點(diǎn),I分鐘精度的統(tǒng)計(jì)數(shù)據(jù)并不是I秒鐘精度的統(tǒng)計(jì)數(shù)據(jù)量的60倍,I小時(shí)精度的統(tǒng)計(jì)數(shù)據(jù)一般也不會(huì)是I秒鐘精度統(tǒng)計(jì)數(shù)據(jù)的3600倍。通常根據(jù)統(tǒng)計(jì)數(shù)據(jù)的實(shí)際情況,I分鐘級(jí)、10分鐘級(jí)、I小時(shí)級(jí)等統(tǒng)計(jì)數(shù)據(jù)的容量,只有I秒級(jí)統(tǒng)計(jì)數(shù)據(jù)量的幾倍,以網(wǎng)絡(luò)分析領(lǐng)域?yàn)槔?,針?duì)IP網(wǎng)絡(luò)數(shù)據(jù)統(tǒng)計(jì)信息,I小時(shí)級(jí)的IP信息統(tǒng)計(jì)數(shù)據(jù)通常只有I秒級(jí)的統(tǒng)計(jì)數(shù)據(jù)的10倍以內(nèi)。
[0030]在實(shí)際應(yīng)用中,假設(shè)I秒級(jí)統(tǒng)計(jì)數(shù)據(jù)的數(shù)據(jù)量為16MB,I分鐘級(jí)統(tǒng)計(jì)數(shù)據(jù)的數(shù)據(jù)量為32MB,1分鐘級(jí)統(tǒng)計(jì)數(shù)據(jù)的數(shù)據(jù)量為64MB,I小時(shí)級(jí)統(tǒng)計(jì)數(shù)據(jù)的數(shù)據(jù)量為128M。那么可以得到ITB存儲(chǔ)空間可容納統(tǒng)計(jì)數(shù)據(jù)的時(shí)長(zhǎng):
I秒級(jí)統(tǒng)計(jì)數(shù)據(jù)時(shí)長(zhǎng):619245MB/16MB x I秒=38702秒(10小時(shí)左右);
I分鐘級(jí)統(tǒng)計(jì)數(shù)據(jù)時(shí)長(zhǎng):209715MB/32MB x 60秒=393215秒(109小時(shí)左右);
10分鐘級(jí)統(tǒng)計(jì)數(shù)據(jù)時(shí)長(zhǎng):104857MB/64MB x 600秒=983034秒(273小時(shí)左右);
I小時(shí)級(jí)統(tǒng)計(jì)數(shù)據(jù)時(shí)長(zhǎng):104857MB/128MB x 3600秒=983034秒(819小時(shí)左右)。
[0031]這樣,我們就可以用ITB的存儲(chǔ)空間,最長(zhǎng)得到819小時(shí)/24 = 34天左右的精度為I小時(shí)級(jí)的統(tǒng)計(jì)數(shù)據(jù),大大增加了統(tǒng)計(jì)數(shù)據(jù)保存的時(shí)長(zhǎng)。
[0032]上述本申請(qǐng)實(shí)施例中的技術(shù)方案,至少具有如下的技術(shù)效果或優(yōu)點(diǎn):
由于采用了將存儲(chǔ)空間進(jìn)行合理劃分和對(duì)每秒統(tǒng)計(jì)數(shù)據(jù)的再處理后存儲(chǔ),以及在查詢數(shù)據(jù)時(shí)讀取數(shù)據(jù)量表小的技術(shù)手段,所以,有效解決了現(xiàn)有技術(shù)中現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法存在只能存儲(chǔ)較短時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要大量時(shí)間,效率較低的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了能夠存儲(chǔ)較長(zhǎng)時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要時(shí)間短,效率較高的技術(shù)效果。
[0033]對(duì)應(yīng)實(shí)施例一中的存儲(chǔ)方法,實(shí)施例一還提供一種統(tǒng)計(jì)數(shù)據(jù)的查詢方法,請(qǐng)參考圖4,所述方法包括:
M10,獲得查詢時(shí)間段,將所述查詢時(shí)間段進(jìn)行分解,獲得等價(jià)的時(shí)間桶集合;
M20,讀取所述時(shí)間桶集合的統(tǒng)計(jì)數(shù)據(jù),獲得各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù);
M30,將所述各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù)合并得到最終的統(tǒng)計(jì)數(shù)據(jù)。
[0034]其中,在本申請(qǐng)實(shí)施例中,請(qǐng)參考圖5,所述將所述各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù)合并得到最終的統(tǒng)計(jì)數(shù)據(jù)具體包括:
(1)從所述時(shí)間桶集合中取出第一個(gè)查詢時(shí)間桶;
(2)判斷是否成功取出一個(gè)查詢時(shí)間桶,若否,則查詢完成將查詢緩存中的合并結(jié)果統(tǒng)計(jì)數(shù)據(jù)返回,獲得所述最終的統(tǒng)計(jì)數(shù)據(jù)并停止后續(xù)步驟;若是,則按照時(shí)間桶表示的時(shí)間段在緩沖層和磁盤中查詢統(tǒng)計(jì)數(shù)據(jù);
(3)在按照時(shí)間桶表示的時(shí)間段在緩沖層和磁盤中查詢統(tǒng)計(jì)數(shù)據(jù)之后,判斷查詢緩存中是否已有統(tǒng)計(jì)數(shù)據(jù);若否,則將統(tǒng)計(jì)數(shù)據(jù)插入所述查詢緩存中,然后重復(fù)步驟(I) - (3);若是,將統(tǒng)計(jì)數(shù)據(jù)與所述查詢緩存中的統(tǒng)計(jì)數(shù)據(jù)合并,然后重復(fù)步驟(I) - (3)。
[0035]請(qǐng)參考圖6,圖6為統(tǒng)計(jì)數(shù)據(jù)查詢的構(gòu)架及數(shù)據(jù)流向示意圖。在實(shí)際應(yīng)用中,在進(jìn)行統(tǒng)計(jì)數(shù)據(jù)查詢時(shí)需要用到統(tǒng)計(jì)模塊和存儲(chǔ)模塊。[0036]在實(shí)際應(yīng)用中,假設(shè)現(xiàn)在需要對(duì)指定時(shí)間段內(nèi)統(tǒng)計(jì)數(shù)據(jù)進(jìn)行查詢,當(dāng)統(tǒng)計(jì)數(shù)據(jù)按照不同的時(shí)間桶進(jìn)行保存之后,我們就可以快速的查詢一個(gè)給定時(shí)間段內(nèi)的統(tǒng)計(jì)數(shù)據(jù)。具體的查詢過(guò)程如下:
1、查詢時(shí)間段的分解:
對(duì)于一個(gè)給定的時(shí)間段,首先將該時(shí)間段進(jìn)行分解,以獲得一個(gè)等價(jià)的時(shí)間桶集合。例如給定的時(shí)間段為2014-01-01 00:00:00至2014-01-01 01:01:01,用時(shí)間戳表示這個(gè)時(shí)間段為[1388505600,1388509261)。這個(gè)時(shí)間段可以分解成三個(gè)時(shí)間桶:[1388505600,1388509200)、[1388509200, 1388509260)、[1388509260, 1388509261),分別代表:
I 個(gè) I 小時(shí)桶(2014-01-01 00:00:00 至 2014-01-01 01:00:00);
I 個(gè) I 分鐘桶(2014-01-01 01:00:00 至 2014-01-01 01:01:00);
I個(gè) I 秒桶(2014-01-01 01:01:00 至 2014-01-01 01:01:01);
2、統(tǒng)計(jì)數(shù)據(jù)的查詢:
將給定的查詢時(shí)間段分解為一個(gè)等價(jià)的時(shí)間桶集合后,就可以按照分解后得到的時(shí)間桶分別查詢對(duì)應(yīng)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)。
[0037]3、時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)的合并:
各個(gè)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)查詢完成后,需要進(jìn)一步對(duì)統(tǒng)計(jì)數(shù)據(jù)進(jìn)行合并,以獲得整個(gè)查詢時(shí)間段的統(tǒng)計(jì)數(shù)據(jù)。還是以時(shí)間段[1388505600,1388509261)為例:
首先查詢得到I小時(shí)桶[1388505600,1388509200)的統(tǒng)計(jì)數(shù)據(jù),作為統(tǒng)計(jì)數(shù)據(jù)的中間結(jié)果。
[0038]然后查詢I分鐘桶[1388509200,1388509260)的統(tǒng)計(jì)數(shù)據(jù),并將這些統(tǒng)計(jì)數(shù)據(jù)合并進(jìn)中間結(jié)果,此時(shí)統(tǒng)計(jì)數(shù)據(jù)的中間結(jié)果就是時(shí)間段[1388505600,1388509260)的統(tǒng)計(jì)數(shù)據(jù)。
[0039]最后查詢I秒桶[1388509260,1388509261)的統(tǒng)計(jì)數(shù)據(jù),并將這些統(tǒng)計(jì)數(shù)據(jù)合并進(jìn)中間結(jié)果,這時(shí)中間結(jié)果就是最終的統(tǒng)計(jì)數(shù)據(jù),也就是時(shí)間段2014-01-01 00:00:00至2014-01-01 01:01:01 的統(tǒng)計(jì)結(jié)果。
[0040]如果需要查詢2個(gè)小時(shí)的統(tǒng)計(jì)數(shù)據(jù),我們需要從存儲(chǔ)設(shè)備讀取的數(shù)據(jù)量將不再是16MB/秒X 7200秒=112.5GB,而是可以通過(guò)直接讀取小時(shí)級(jí)的統(tǒng)計(jì)數(shù)據(jù)128MB x 2小時(shí)=256MB。大大降低了讀取數(shù)據(jù)的量,也就大大提高了統(tǒng)計(jì)數(shù)據(jù)的查詢效率。
[0041]上述本申請(qǐng)實(shí)施例中的技術(shù)方案,至少具有如下的技術(shù)效果或優(yōu)點(diǎn):
由于采用了將存儲(chǔ)空間進(jìn)行合理劃分和對(duì)每秒統(tǒng)計(jì)數(shù)據(jù)的再處理后存儲(chǔ),以及在查詢數(shù)據(jù)時(shí)讀取數(shù)據(jù)量表小的技術(shù)手段,所以,有效解決了現(xiàn)有技術(shù)中現(xiàn)有的統(tǒng)計(jì)數(shù)據(jù)存儲(chǔ)和查詢方法存在只能存儲(chǔ)較短時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要大量時(shí)間,效率較低的技術(shù)問(wèn)題,進(jìn)而實(shí)現(xiàn)了能夠存儲(chǔ)較長(zhǎng)時(shí)間的統(tǒng)計(jì)數(shù)據(jù),以及查詢統(tǒng)計(jì)數(shù)據(jù)需要時(shí)間短,效率較高的技術(shù)效果。
[0042]盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
[0043]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)·明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種統(tǒng)計(jì)數(shù)據(jù)的存儲(chǔ)方法,其特征在于,所述方法包括: 根據(jù)不同的時(shí)間桶分別建立相應(yīng)的緩沖層; 將低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)存入低級(jí)統(tǒng)計(jì)數(shù)據(jù)緩沖層; 將所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并得到高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù); 將所述高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行存儲(chǔ)。
2.如權(quán)利要求1所述的方法,其特征在于,所述緩沖層能容納的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)的容量為:聞一級(jí)時(shí)間桶的時(shí)長(zhǎng)/本級(jí)時(shí)間桶的時(shí)長(zhǎng)。
3.如權(quán)利要求1所述的方法,其特征在于,所述將所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)進(jìn)行數(shù)據(jù)合并得到高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)具體包括: (1)提交所述低級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù); (2)判斷當(dāng)前統(tǒng)計(jì)數(shù)據(jù)時(shí)間是否超過(guò)高一級(jí)時(shí)間桶邊界,若否,則將當(dāng)前桶統(tǒng)計(jì)數(shù)據(jù)緩存至對(duì)應(yīng)的緩沖層并結(jié)束操作;若是,則將當(dāng)前級(jí)時(shí)間桶緩存層數(shù)據(jù)寫入磁盤; (3)在將當(dāng)前級(jí)時(shí)間桶緩存層數(shù)據(jù)寫入磁盤之后,將當(dāng)前級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)合并,獲得高一級(jí)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù); (4)清空當(dāng)前級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)的緩沖層; (5)將高一級(jí)的時(shí)間桶作為當(dāng)前級(jí)時(shí)間桶,并將所述高一級(jí)的時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)提交; (6)重復(fù)步驟(2)- (5)直到獲得所述高級(jí)時(shí)間桶統(tǒng)計(jì)數(shù)據(jù)。
4.一種統(tǒng)計(jì)數(shù)據(jù)的查詢方法,其特征在于,所述方法包括: 獲得查詢時(shí)間段,將所述查詢時(shí)間段進(jìn)行分解,獲得等價(jià)的時(shí)間桶集合; 讀取所述時(shí)間桶集合的統(tǒng)計(jì)數(shù)據(jù),獲得各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù); 將所述各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù)合并得到最終的統(tǒng)計(jì)數(shù)據(jù)。
5.如權(quán)利要求4所述的方法,其特征在于,所述將所述各個(gè)時(shí)間桶的統(tǒng)計(jì)數(shù)據(jù)合并得到最終的統(tǒng)計(jì)數(shù)據(jù)具體包括: (1)從所述時(shí)間桶集合中取出第一個(gè)查詢時(shí)間桶; (2)判斷是否成功取出一個(gè)查詢時(shí)間桶,若否,則查詢完成將查詢緩存中的合并結(jié)果統(tǒng)計(jì)數(shù)據(jù)返回,獲得所述最終的統(tǒng)計(jì)數(shù)據(jù)并停止后續(xù)步驟;若是,則按照時(shí)間桶表示的時(shí)間段在緩沖層和磁盤中查詢統(tǒng)計(jì)數(shù)據(jù); (3)在按照時(shí)間桶表示的時(shí)間段在緩沖層和磁盤中查詢統(tǒng)計(jì)數(shù)據(jù)之后,判斷查詢緩存中是否已有統(tǒng)計(jì)數(shù)據(jù);若否,則將統(tǒng)計(jì)數(shù)據(jù)插入所述查詢緩存中,然后重復(fù)步驟(I)- (3);若是,將統(tǒng)計(jì)數(shù)據(jù)與所述查詢緩存中的統(tǒng)計(jì)數(shù)據(jù)合并,然后重復(fù)步驟(I) - (3)。
【文檔編號(hào)】G06F17/30GK103678627SQ201310701529
【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】羅鷹, 何祖剛, 林康, 侯勇軍, 伍宏寧 申請(qǐng)人:成都科來(lái)軟件有限公司