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

一種新的壓縮比特位圖索引的方法

文檔序號(hào):6545442閱讀:288來(lái)源:國(guó)知局
一種新的壓縮比特位圖索引的方法
【專利摘要】本發(fā)明公開(kāi)了計(jì)算機(jī)網(wǎng)絡(luò)或大數(shù)據(jù)分析領(lǐng)域的一種新的壓縮比特位圖索引的方法,即ICX算法,用以解決目前壓縮比特位圖的研究中存在的問(wèn)題。該方法主要是對(duì)COMPAX算法進(jìn)行改進(jìn),提出Nearly?Identical的概念,具體包括:把待壓縮的01比特序列分成以31bits為單位的塊,對(duì)塊進(jìn)行分類標(biāo)記:F-塊和L-塊,L塊又分為C-L-塊,0-NI-L-塊和1-NI-L塊,0-NI2-L塊,1-NI2-L塊;根據(jù)ICX碼本與編碼規(guī)則,在碼本編碼FL序列基礎(chǔ)上,進(jìn)一步編碼,具體分為:L-字編碼,F(xiàn)-字編碼,F(xiàn)LF-字編碼,LFL-字編碼,NI-FL字編碼,NI2-FL字編碼。與COMPAX算法相比,本發(fā)明提高了編碼效率,有效實(shí)現(xiàn)了一種新的壓縮比特位圖索引的方法。
【專利說(shuō)明】—種新的壓縮比特位圖索引的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)或大數(shù)據(jù)分析領(lǐng)域,特別涉及一種新的壓縮比特位圖索引的方法。
【背景技術(shù)】
[0002]互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展把我們帶進(jìn)了信息爆炸的時(shí)代,海量信息內(nèi)容極大豐富了用戶。而移動(dòng)互聯(lián)網(wǎng)的爆發(fā),使得用戶可以從任何地方,任何時(shí)間訪問(wèn)網(wǎng)絡(luò)上的任何內(nèi)容,產(chǎn)生更為豐富流量數(shù)據(jù)。
[0003]據(jù)思科(Cisco)公司預(yù)測(cè),任何一家大型互聯(lián)網(wǎng)公司在日常運(yùn)營(yíng)中生成和累計(jì)的用戶流量數(shù)據(jù)是相當(dāng)龐大的,以至于不能用千兆(Giga,G)或萬(wàn)億(Trillion,T)級(jí)字節(jié)的數(shù)據(jù)來(lái)衡量。為此,思科曾預(yù)言,網(wǎng)絡(luò)的數(shù)據(jù)流量在2011到2016年之間將以4倍的速率增長(zhǎng),并于2016年達(dá)到1.3澤(Zetta,十萬(wàn)億億)字節(jié)。據(jù)中國(guó)聯(lián)通的數(shù)據(jù),聯(lián)通WCDMA3G網(wǎng)絡(luò)移動(dòng)用戶流量的年復(fù)合增長(zhǎng)率為135%,目前已經(jīng)達(dá)到5千萬(wàn)億字節(jié)(Petabyte,PB)規(guī)模。
[0004]對(duì)網(wǎng)絡(luò)的內(nèi)容和運(yùn)行狀況監(jiān)控,保證網(wǎng)絡(luò)健康正常地運(yùn)行已成為一項(xiàng)重要工作。在中國(guó)“十二五”規(guī)劃綱要第三篇第十三章第二節(jié)中,已經(jīng)明確提出要“加強(qiáng)網(wǎng)絡(luò)與信息安全保障”,充分體驗(yàn)了國(guó)家對(duì)信息安全的重視。而網(wǎng)絡(luò)的自由性造成了網(wǎng)絡(luò)攻擊的普遍性。在網(wǎng)絡(luò)鏈路方面,網(wǎng)絡(luò)中某個(gè)節(jié)點(diǎn)的錯(cuò)誤配置可能會(huì)給整個(gè)網(wǎng)絡(luò)帶來(lái)災(zāi)難性的后果;網(wǎng)絡(luò)攻擊會(huì)造成鏈路的阻塞,服務(wù)器的崩潰,甚至是局部網(wǎng)絡(luò)通信的中斷。在網(wǎng)絡(luò)內(nèi)容方面,人們可以在各個(gè)地方上傳不良信息,進(jìn)行非法活動(dòng),給其他互聯(lián)網(wǎng)的使用者帶來(lái)不好的思想、精神、經(jīng)濟(jì)等方面的影響和損失。由于這些行為常常不能在發(fā)生時(shí)被發(fā)現(xiàn),因此需要對(duì)網(wǎng)絡(luò)流量進(jìn)行記錄,以供后期進(jìn)行研究、分析和舉證。
[0005]流量記錄的一項(xiàng)核心技術(shù)是高速網(wǎng)包索引,流量記錄的目的是為以后檢索與查找,從而識(shí)別可能的網(wǎng)絡(luò)事件。以IOGbps鏈路為例,如果按每個(gè)網(wǎng)包64字節(jié)計(jì)算,每秒將達(dá)1400萬(wàn)網(wǎng)包,產(chǎn)生的索引量巨大,檢索查找速度慢。
[0006]因特網(wǎng)服務(wù)提供商(Internet Service Provider, ISP)管理和運(yùn)行的大型的高速網(wǎng)絡(luò),鏈路速度在IO-1OOGbps級(jí),即每秒中產(chǎn)生的數(shù)據(jù)量為1-10GB量級(jí),如果要進(jìn)行流量的記錄,代價(jià)非常高。這樣的設(shè)備和技術(shù)的價(jià)格也是一般用戶無(wú)法承受的。而同時(shí),互聯(lián)網(wǎng)的發(fā)展使得許多公司擁有自己的企業(yè)網(wǎng)絡(luò),也有許多公司將自己的服務(wù)器托管到因特網(wǎng)數(shù)據(jù)中心(Internet Data Center, IDC)運(yùn)行。這樣的局部網(wǎng)絡(luò)的數(shù)目非常龐大,他們的網(wǎng)絡(luò)帶寬一般在100?1000Mbps。管理這些局部的網(wǎng)絡(luò)也是一個(gè)非?,F(xiàn)實(shí)的問(wèn)題,為這樣的網(wǎng)絡(luò)設(shè)計(jì)和實(shí)現(xiàn)廉價(jià)的網(wǎng)絡(luò)流量記錄工具具有很大的應(yīng)用前景。
[0007]網(wǎng)包的索引信息具有以下一些特點(diǎn):海量、數(shù)據(jù)結(jié)構(gòu)固定、只增不改、重復(fù)性較高。海量是指網(wǎng)包索引信息條數(shù)眾多,一天可以產(chǎn)生幾百萬(wàn)條甚至上億條索引信息。數(shù)據(jù)結(jié)構(gòu)固定是指每一條網(wǎng)包的索引信息都有固定的格式和固定的長(zhǎng)短。只增不改是指網(wǎng)包的索引信息只會(huì)不斷增加,一旦產(chǎn)生,以后不可能也不需要在進(jìn)行修改。重復(fù)性高指就每一個(gè)域來(lái)看,一個(gè)域中的千萬(wàn)條數(shù)據(jù)出現(xiàn)大量的重復(fù)。這些特點(diǎn)導(dǎo)致使用關(guān)系型數(shù)據(jù)庫(kù)處理這樣的數(shù)據(jù)效率并不高,因?yàn)閭鹘y(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)是面向更改的,儲(chǔ)存在數(shù)據(jù)庫(kù)中的數(shù)據(jù)需要經(jīng)常的改動(dòng)。
[0008]Bitmap壓縮數(shù)據(jù)庫(kù)
[0009]Bitmap索引數(shù)據(jù)庫(kù)專門(mén)為科學(xué)數(shù)據(jù)而設(shè)計(jì),這些數(shù)據(jù)通常是由科學(xué)儀器或是科學(xué)仿真產(chǎn)生的,特點(diǎn)是數(shù)據(jù)量極其大,而且不再更改。Bitmap索引數(shù)據(jù)庫(kù)解決了如何在海量的科學(xué)數(shù)據(jù)中快速的找出那些需要的少量的數(shù)據(jù)的問(wèn)題,而傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)并不適合這項(xiàng)任務(wù)。
[0010]Bitmap索引數(shù)據(jù)庫(kù)中用到的技術(shù)主要是Bitmap索引、Bitmap壓縮和歸類。在Bitmap索引數(shù)據(jù)庫(kù)中,數(shù)據(jù)是按列存儲(chǔ)的,一個(gè)列的數(shù)據(jù)存儲(chǔ)在一起,并做Bitmap索引。一個(gè)簡(jiǎn)單的Bitmap索引的例子如圖1所示。其中RowID表示對(duì)應(yīng)值在表中第幾行,生成的索引是一個(gè)矩陣,矩陣中每一行只有一個(gè)1,其余都是零,標(biāo)I的位置對(duì)應(yīng)于該行數(shù)據(jù)在這一列上的取值。這樣生成的Bitmap索引有一個(gè)比較大的缺點(diǎn),索引的列數(shù)隨著取值的多樣話而線性增長(zhǎng)。為了控制索引的大小和查詢時(shí)間,需要對(duì)索引壓縮和歸類。壓縮是減小索引中大量O或I帶來(lái)的空間消耗,歸類是對(duì)Bitmap索引的一些列的合并。比如值1.01和1.02可以歸類成I。通過(guò)歸類可以減少Bitmap索引的列數(shù),增加查詢和儲(chǔ)存的效率。
[0011]目前主要的位圖索引壓縮算法為字對(duì)齊混合編碼(Word-Aligned Hybrid code,WAH) , Position List Word-Aligned Hybrid code (PLffAH)和 Compressed AdaptiveIndex (COMPAX)。其中 PLWAH 有改進(jìn)版(即為 PLWAH with adaptive counter),COMPAX 也有改進(jìn)版(COMPAX+oLSH)。
[0012]IWAH索引壓縮算法
[0013]WAH是Fastbit比特位壓縮數(shù)據(jù)庫(kù)的默認(rèn)算法,如圖2。將原始碼流分成以31bits (對(duì)于WAH64就是63bits)為單位的塊(chunk)。chunk有兩種類型:
[0014](I)Literal,即這 31bits 中有 O 有 I。
[0015](2)Fill,即這31bits全為O或者全為I。
[0016]Literal類型的Chunk:類型標(biāo)志位為O,余下的31bit即為原來(lái)的literalchunk ;Fill類型的Chunk:分為1-Fill和0-Fill。此時(shí)32bits中類型標(biāo)志位為1,第二位作為Fill類型的標(biāo)志(Ο-Fill即為0,1-Fill即為1),余下為30bits作為counter,表示連續(xù)出現(xiàn)多少個(gè)O-Fill (或者Ι-Fill)的chunk的。
[0017]2PLWAH索引壓縮算法
[0018]同樣是將原始碼流分成以31bits為單位的chunk。Chunk也和上文一樣分成Literal和Fill兩種類型,但是壓縮方式有變化。
[0019]第一步:依照WAH方法對(duì)于FiIΙ-chunk和Literal-chunk添加標(biāo)志位與編碼,形成一組以32-bits word為單位的編碼(標(biāo)志位為O稱之為literal_word,標(biāo)志位為I的稱之為fill-word,下同)。此處的區(qū)別是對(duì)于fill-word只有低25bits作為counter (WAH方法是低30bits都是counter, PLffAH要留出中間的5bits作為position list,下面會(huì)用到.)
[0020]第二步:
[0021]檢查每個(gè)fill-word 后的 word。如果下一個(gè) word 是 literal-word 且是”nearlyidentical” 的(nearly identical 定義是 literal-word 和上一個(gè) fill-word 的差異小于等于s位,s此處暫時(shí)為1,后面會(huì)進(jìn)一步討論),則在fill-word的position list上填入下一個(gè)word(此時(shí)為literal-word)的差異位位置(此處是31位,因此差異位標(biāo)號(hào)為1-31,留出5bits目的在此),同時(shí)刪去下一個(gè)word(因?yàn)樾畔⒁呀?jīng)保存在此fill-word中,沒(méi)有必要繼續(xù)留著)若fill-word后的word是如下三種情況:(I)異類型的fill-word(2)非nearly-1dentical的literal-word(3)同類型的fill-word(這種情況產(chǎn)生的原因是連續(xù)的 fill-chunk 超出了 I 個(gè) fill-word 的 counter 的計(jì)數(shù)范圍),則 position list 不變。
[0022]進(jìn)行擴(kuò)展討論:
[0023]對(duì)于32位PLWAH,但是nearly identical的定義中的s不為1,則在第一步(即利用WAH原理編碼)時(shí)需要留出5*s位position list,余下的32_2_5*s位為counter.在第二步時(shí),向fill-word中的position list添加差異位時(shí)須按序添加差異位位置(5個(gè)bits標(biāo)示一個(gè)差異位,5*s個(gè)bits標(biāo)示至多s個(gè)差異位,但是原文沒(méi)有明確說(shuō)當(dāng)實(shí)際差異位小于s時(shí)是向最高有效位(most significant bit,MSB)對(duì)齊還是向最低有效位(Leastsignificant bit, LSB)位對(duì)齊,只給了個(gè)接口),當(dāng)s = O時(shí)PLWAH退化成WAH。
[0024]對(duì)于64 位 PLWAH, position list 以 6 為單位,即留出 6*s 位為 position list,余下的64-2-6*位為counter.[0025]PLWAH+adaptive counter方法,如圖4所不,對(duì)PLWAH進(jìn)行了小幅改進(jìn),即考慮連續(xù)出現(xiàn)極多的O或者I以至于I個(gè)word的counter無(wú)法完全容納。此處選用的方法為使用兩個(gè)連續(xù)的同類型fill-word,把兩個(gè)counter部分視為一個(gè)大的counter,第一個(gè)fill-word記錄LSB25位,第二個(gè)fill-word記錄MSB25位(相當(dāng)于50位的大counter),同時(shí)第一個(gè) fill-word 的 position list 為空,第二個(gè) fill-word 的 position list 照常進(jìn)行計(jì)算。這樣的好處是無(wú)需將擴(kuò)展word位數(shù)即可完成對(duì)更多連續(xù)碼流的編碼任務(wù),節(jié)約index空間。
[0026]3C0MPAX 算法
[0027]COMPAX算法如圖5所示,這里以32位為例。
[0028]COMPAX的標(biāo)志位相對(duì)較多。這里L(fēng)iteral和Fi 11的定義同WAH和PLWAH。
[0029]同樣是每31bits分成一個(gè)chunk,并且將這些chunk按照以下特征分組:
[0030](I)Literal-Fill-Literal (LFL),即 I 個(gè) literal chunk+N 個(gè) Fill chunk+1 個(gè)literal chunk,且這兩個(gè)literal chunk的非0位(或者非I位)在同一個(gè)byte上(一個(gè)chunk在前面補(bǔ)一位O即構(gòu)成4個(gè)完整的byte,要求非零位在同一個(gè)完整的byte上)
[0031](2)Fill-Literal-Fill(FLF),即 N 個(gè) Fill-chunk+Ι 個(gè) literal chunk+N 個(gè)fill-chunk(對(duì) literal chunk 的要求同上)
[0032](3) Fi 11 (F),分為 O-Fill 和 1-Fi 11,無(wú)法按照(I)和(2)進(jìn)行分組的 fill-chunk即歸入此類型。
[0033](4) Literal (L),無(wú)法按照(I)和(2)進(jìn)行分組的literal chunk即歸入此類型。
[0034]對(duì)于這四種類型,有四種不同的word。
[0035](l)L-word第一位為標(biāo)志位I,余下31位即為原來(lái)的literal chunk。
[0036](2)F-word第一位為標(biāo)志位0,對(duì)于O-Fill第二、三位為00,對(duì)于1-Fill第二、三位為11。余下29bits為counter,即記錄有多少個(gè)連續(xù)這樣的chunk。[0037](3)LFL_word第一位為標(biāo)志位0,二三位為01,第4、5位(2bits)標(biāo)示第一個(gè)literal chunk的非零byte位置(共4個(gè)byte,標(biāo)號(hào)為00-11),第6、7位(2bits)標(biāo)示第二個(gè)literal chunk的非零byte位置(共4個(gè)byte,標(biāo)號(hào)為0_3)第八位標(biāo)識(shí)F類型,O為
0-Fill,I 為 1-Fill ;第 9-16 位(8bits, Ibyte)為第一個(gè) literal chunk 中非零 byte,第17-24位(8bits, lbyte)為Fill的counter,標(biāo)不有多少個(gè)連續(xù)的fill chunk(即多少個(gè)連續(xù) 31bits 的 0/1),第 25-32 位(8bits, lbyte)為第二個(gè) literal chunk 中的非零 byte。
[0038](4)FLF-word第一位為標(biāo)志位0,第二、三位為10,第四位為第一個(gè)fill的類型(Ο-Fill為0,1-Fill為1,下同),第五位為第二個(gè)fill的類型,第六、七位為L(zhǎng)的非零byte位置(標(biāo)號(hào)為00-11),第八位空閑。第9-16位(8bits)為第一個(gè)fill的counter,第17-24位(8bits, lbyte)為 literal chunk 的非零 byte,第 25-32 位為第二個(gè) fill 的 counter。
[0039]在已知COMPAX的情況讀碼方式如下:
[0040](I)第一位如果為 I,為 L-word ;
[0041](2)第一位如果為O:
[0042](2.1)第二、三位為 00:0-fill word
[0043](2.2)第二、三位為 11:l-fill word
[0044](2.3)第二、三位為 01 =LFL
[0045](2.4)第二、三位為 10 =FLF
[0046]COMPAX+oLSH(online-locality-sensitive-hashing)
[0047]壓縮方式同C0MPAX,但是先對(duì)輸入碼流進(jìn)行處理,將相近的包放在相近的位置,這樣對(duì)壓縮率提高非常明顯。

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

[0048]本發(fā)明的目的在于,提出一種新的壓縮比特位圖索引的方法(Improved COMPAX,ICX),用以解決目前位圖索引壓縮算法中存在的問(wèn)題。
[0049]為實(shí)現(xiàn)上述目的,本發(fā)明提出的技術(shù)方案是,一種新的壓縮比特位圖索引的方法,其特征是所述方法包括下列步驟:
[0050]步驟1:把待壓縮的01比特序列分成以31bits為單位的塊,對(duì)塊進(jìn)行分類標(biāo)記;
[0051]步驟2:根據(jù)ICX碼本與編碼規(guī)則,在碼本編碼FL序列基礎(chǔ)上,進(jìn)一步編碼。
[0052]所述步驟I中把待壓縮的01比特序列分成以31bits為單位的塊,對(duì)塊進(jìn)行分類標(biāo)記,具體包括:F_塊和L-塊,L塊又分為C-L-塊,O-N1-L-塊和1-N1-L塊,0-NI2-L塊,
1-NI2-L塊。
[0053]所述O-N1-L-塊的定義為:一個(gè)L-塊(補(bǔ)O后)與全O字比較,差異比特在同一個(gè)字節(jié)內(nèi),則記做O-N1-L-塊。
[0054]所述1-N1-L-塊的定義為:一個(gè)L-塊(補(bǔ)I后)與全I(xiàn)字比較,差異比特在同一個(gè)字節(jié)內(nèi),則記做O-N1-L-塊。
[0055]所述0-NI2-L-塊的定義為:一個(gè)L-塊(補(bǔ)O后)與全O字比較,差異比特在同2個(gè)字節(jié)內(nèi),則記做O-NI2-L-塊。
[0056]所述1-NI2-L-塊的定義為:一個(gè)L-塊(補(bǔ)I后)與全I(xiàn)字比較,差異比特在同2個(gè)字節(jié)內(nèi),則記做1-NI2-L-塊。[0057]所述步驟2中根據(jù)ICX碼本與編碼規(guī)則,在碼本編碼FL序列基礎(chǔ)上,進(jìn)一步編碼,具體包括:L-字編碼,F(xiàn)-字編碼,F(xiàn)LF-字編碼,LFL-字編碼,N1-FL字編碼,NI2-FL字編碼。
[0058]所述FLF-字編碼的定義為:對(duì)滿足[I個(gè)或多個(gè)同類型F-塊]-[I個(gè)O-N1-L塊或者1-N1-L塊]-[I個(gè)或多個(gè)同類型的F-塊]的塊組合進(jìn)行編碼。
[0059]所述LFL-字編碼的定義為:對(duì)滿足[一個(gè)N1-L-塊]-[I個(gè)或多個(gè)F-塊]-[一個(gè)N1-L塊]的塊組合進(jìn)行編碼。
[0060]所述N1-FL-字編碼的定義為:對(duì)滿足[一個(gè)N1-LF塊]-[一個(gè)或者多個(gè)同類型F塊]的塊組合進(jìn)行編碼。
[0061]所述N1-FL-字編碼的定義為:對(duì)滿足[一個(gè)NI2-LF塊]-[一個(gè)或多個(gè)同類型的F-塊]的塊組合進(jìn)行編碼。
[0062]本發(fā)明的有益效果在于ICX比COMPAX有更好的編碼效率。
【專利附圖】

【附圖說(shuō)明】
[0063]圖1是Bitmap索引示例。
[0064]圖2是WAH算法不例。
[0065]圖3是PLWAH32算法示例。
[0066]圖 4 是 PLWAH+adaptive counter:(以 PLWAH32, s = I 為例)。
[0067]圖5 是 COMPAX 算法。
[0068]圖6是將I個(gè)C-L-塊編碼為L(zhǎng)-字。
[0069]圖7是當(dāng)原比特序列中連續(xù)出現(xiàn)7個(gè)O-F-塊時(shí)的編碼結(jié)果。
[0070]圖8是當(dāng)原比特序列中連續(xù)出現(xiàn)3個(gè)1-F-塊時(shí)的編碼結(jié)果。
[0071 ] 圖9是通過(guò)COMPAX和ICX算法分別將原比特序列編碼為FLF。
[0072]圖10是用ICX將原比特序列編碼為FLF,用COMPAX將原比特序列編碼為一個(gè)F字+—個(gè)L字+—個(gè)F字。
[0073]圖11是可以被COMPAX和ICX兩種方式編碼為L(zhǎng)FL的一個(gè)原比特序列。
[0074]圖12是不可以被COMPAX方式編碼為L(zhǎng)FL,只能被ICX編碼為L(zhǎng)FL的一個(gè)原比特序列。
[0075]圖13是圖12中的原比特序列被COMPAX編碼的結(jié)果。
[0076]圖14是不可以被COMPAX方式編碼為L(zhǎng)FL,只能被ICX編碼為L(zhǎng)FL的一個(gè)原比特序列。
[0077]圖15是圖14中的原比特序列被COMPAX編碼的結(jié)果。
[0078]圖16是N1-L類型且第二個(gè)是Fill時(shí)編碼的流程圖。
[0079]圖17是無(wú)法被WAH和COMPAX進(jìn)行編碼的一個(gè)原比特序列。
[0080]圖18是NI2-FL字編碼中第6_8位的編碼規(guī)則。
[0081 ] 圖19是無(wú)法被WAH和COMPAX進(jìn)行編碼的一個(gè)原比特序列。
[0082]圖20是ICX的碼本。
【具體實(shí)施方式】
[0083]下面結(jié)合附圖,對(duì)優(yōu)選實(shí)施例作詳細(xì)說(shuō)明。應(yīng)該強(qiáng)調(diào)的是,下述說(shuō)明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。
[0084]本發(fā)明解決問(wèn)題的思路是完成ICX算法:首先,對(duì)01比特序列進(jìn)行有效壓縮的算法,通過(guò)設(shè)計(jì)的ICX碼本,對(duì)符合特征的01串轉(zhuǎn)換為兩類31比特塊,稱為F-塊和L-塊,L塊又分為C-L-塊,O-N1-L-塊和1-N1-L塊,0-NI2-L-塊和1-NI2-L塊;然后,根據(jù)ICX碼本與編碼規(guī)則,在碼本編碼FL序列基礎(chǔ)上,進(jìn)一步編碼,具體包括:L-字編碼,F(xiàn)-字編碼,F(xiàn)LF-字編碼,LFL-字編碼,N1-FL字編碼,NI2-FL字編碼。
[0085]下面以互聯(lián)網(wǎng)流量大數(shù)據(jù)檢索系統(tǒng)為例,實(shí)現(xiàn)ICX位圖索引壓縮算法。
[0086]基于提出位圖索引編碼的大數(shù)據(jù)檢索系統(tǒng)實(shí)現(xiàn)分成三個(gè)模塊:數(shù)據(jù)預(yù)處理模塊,位圖索引構(gòu)建模塊,數(shù)據(jù)檢索模塊。
[0087]I數(shù)據(jù)預(yù)處理模塊:
[0088]在數(shù)據(jù)進(jìn)入模塊之前有預(yù)處理過(guò)程,以動(dòng)態(tài)和靜態(tài)模式進(jìn)行數(shù)據(jù)處理。對(duì)于靜態(tài)模式(對(duì)于已經(jīng)存儲(chǔ)的原始數(shù)據(jù)文件進(jìn)行重新處理來(lái)實(shí)現(xiàn)壓縮與構(gòu)建索引),將數(shù)據(jù)文件中的數(shù)據(jù)項(xiàng)利用局部敏感函數(shù)(LSH,相近的數(shù)據(jù)項(xiàng)得到的哈希值也相近)計(jì)算哈希值,并按照哈希值順序進(jìn)行重排序(reorder)過(guò)程,之后將數(shù)據(jù)提交給數(shù)據(jù)壓縮模塊與索引構(gòu)建模塊進(jìn)行下一步處理。對(duì)于動(dòng)態(tài)模式,用一段固定存儲(chǔ)空間,緩存接收實(shí)時(shí)抓取的流量,當(dāng)緩存數(shù)據(jù)達(dá)到上限時(shí),提交給下一級(jí)來(lái)進(jìn)行重排序的操作(類似于靜態(tài)模式),之后數(shù)據(jù)提交給索引構(gòu)建模塊進(jìn)行下一步處理。而由于此時(shí)緩存已經(jīng)被清空,可以繼續(xù)接受網(wǎng)絡(luò)上的實(shí)時(shí)流量,這樣就實(shí)現(xiàn)了動(dòng)態(tài)處理的過(guò)程。
[0089]2位圖索引構(gòu)建模塊:
[0090]位圖編碼部分為利用所提的編碼方法,將原始位圖編碼成最終的位圖索引文件,并進(jìn)行存儲(chǔ)。利用位圖索引的理由是檢索速度快,在實(shí)際對(duì)海量數(shù)據(jù)進(jìn)行查找分析時(shí)相對(duì)更為實(shí)用與方便,但是位圖本身的特點(diǎn)是空間占用巨大,會(huì)成為空間開(kāi)銷的主要負(fù)擔(dān),需要對(duì)于位圖進(jìn)行重新編碼來(lái)降低此部分的空間開(kāi)銷。位圖索引構(gòu)建傳統(tǒng)有兩個(gè)步驟:位圖生成與位圖編碼,也可以合二為一。
[0091]3數(shù)據(jù)檢索模塊:
[0092]用戶輸入希望檢索的條件,之后系統(tǒng)從構(gòu)建的位圖索引文件中依照索引查找對(duì)應(yīng)的條目,可快速執(zhí)行與,或,非與JOIN操作。如果對(duì)索引文件全部解碼的話,會(huì)造成巨大的時(shí)間開(kāi)銷與空間開(kāi)銷,因此引入了動(dòng)態(tài)判斷策略,輸入檢索條件通過(guò)動(dòng)態(tài)判斷策略的處理決定是部分解碼(partial-decompression)還是全部解碼(full-decompression).部分解碼的方法是只對(duì)命中條目附近的塊(block)進(jìn)行解碼并抽出檢索命中的數(shù)據(jù),而全部解碼則利用在部分解碼帶來(lái)收益不大的場(chǎng)景,這樣可以相對(duì)提高檢索效率。
[0093]下面的實(shí)施例是按照本發(fā)明提出的ICX算法對(duì)位圖索引構(gòu)建模塊中的位圖編碼部分進(jìn)行處理,將其原始位圖編碼成最終的位圖索引文件,并進(jìn)行存儲(chǔ)的過(guò)程。
[0094]下面結(jié)合【專利附圖】
附圖
【附圖說(shuō)明】本發(fā)明的具體實(shí)現(xiàn)方式。該方法包括如下的步驟:
[0095]步驟1:把待壓縮的01比特序列分成以31bits為單位的±夾,對(duì)塊進(jìn)行分類標(biāo)記,可分為以下幾類:Fill (F-塊)和Literal (L-塊),L-塊又分為common-literal-chunk (C-L-塊),0-nearly identical-literal-chunk (O-N1-L-塊)和
1-nearIy identical-literal-chunk(l-N1-L塊),0-nearly identical-2-1iteral-chunk(0-NI2-L 塊),1-nearIy identical-2-1iteral-chunk(1-NI2-L塊)。[0096]L F-塊,代表塊中31比特全為O或者全為1,全為O的塊定義為O-Fill塊(下面簡(jiǎn)稱O-F-塊),全為I的塊定義為1-Fill塊(下面簡(jiǎn)稱1-F-塊)。
[0097]2.L-塊,代表塊中31比特不全為O且不全為I。
[0098]3.將31比特塊分為7-8-8-8四部分,最前面補(bǔ)上一位空白位(不一定是零,下面會(huì)分情況說(shuō)明),構(gòu)成四個(gè)字節(jié)(一個(gè)32位字),如果和一個(gè)全O字比較,空白位置O ;如果和全I(xiàn)字比較,空白位置I。
[0099]定義Nearly Identical塊為如下四種類型:
[0100]1.如果一個(gè)L-塊(補(bǔ)O后)與全O字比較,差異比特在同一個(gè)字節(jié)內(nèi),則認(rèn)為這個(gè) L-塊和一個(gè) O-F-塊是 nearly identical 的,記作 0-N1-L-塊;
[0101]2.如果一個(gè)L-塊(補(bǔ)I后)與全I(xiàn)字比較,差異比特在同一個(gè)字節(jié)內(nèi),則認(rèn)為這個(gè)L塊和一個(gè)1-F-塊是nearly identical的,記作1-N1-L-塊;
[0102]3.如果一個(gè)L-塊(補(bǔ)O后)與全O字比較,差異比特在兩個(gè)字節(jié)內(nèi),則認(rèn)為這個(gè)L-塊和一個(gè) O-F-塊是 nearly identical (type2)的,記作 0-NI2-L-塊;
[0103]4.如果一個(gè)L-塊(補(bǔ)I后)與全I(xiàn)字比較,差異比特在兩個(gè)字節(jié)內(nèi),則認(rèn)為這個(gè)L 塊和一個(gè) 1-F-塊是 nearly identical 的,記作 1-NI2-L-塊。
[0104]5.其他的L-塊記作C-L-塊。
[0105]步驟2:根據(jù)ICX碼本與編碼規(guī)則,在碼本編碼FL序列基礎(chǔ)上,進(jìn)一步編碼。主要分為以下幾種類型:Literal word(L-字)編碼,F(xiàn)ill Word(F-字)編碼,F(xiàn)ill-Literal-Fill Word(FLF_ 字)編碼,Literal-Fi11-Literal Word(LFL_ 字)編碼,F(xiàn)ill (Nearly Identical) -Literal Word(N1-FL 字)編碼,F(xiàn)ill (Nearly Identical-TypeTwo) (NI2-FL 字)編碼。
[0106]1.一個(gè)L-字是對(duì)I個(gè)C-L-塊進(jìn)行編碼,編碼方式為在這個(gè)C-L-塊的最高位前補(bǔ)I構(gòu)成一個(gè)字。圖6是將I個(gè)C-L-塊編碼為L(zhǎng)-字。
[0107]2.一個(gè)F-字是對(duì)I個(gè)或多個(gè)同類型的F-塊進(jìn)行編碼,前五位為類型標(biāo)志位00000,第六位表示的為F-字所編碼的F-塊的類型(O為O-F-塊,I為1-F-塊),后26位為計(jì)數(shù)器(counter),標(biāo)志著連續(xù)出現(xiàn)的同類型F-塊的數(shù)量。
[0108]圖7是當(dāng)原比特序列中連續(xù)出現(xiàn)7個(gè)O-F-塊時(shí)的編碼結(jié)果。
[0109]圖8是當(dāng)原比特序列中連續(xù)出現(xiàn)3個(gè)1-F-塊時(shí)的編碼結(jié)果。
[0110]3.一個(gè)FLF-字是對(duì)滿足如下條件的塊的組合進(jìn)行編碼:[1個(gè)或多個(gè)同類型F-塊]-[1個(gè)O-N1-L塊或者1-N1-L塊]-[I個(gè)或多個(gè)同類型的F-塊],或者說(shuō)[F-字]-[N1-L塊]-[F-字].(此處說(shuō)F-字并不完全準(zhǔn)確,但是首先COMPAX中原文寫(xiě)的也是Fill Word,且此處實(shí)質(zhì)上也是對(duì)多個(gè)同類型F-塊合并后所得,因此借用F-字概念,實(shí)際長(zhǎng)度并非為一個(gè)字,F(xiàn)LF-字整個(gè)的長(zhǎng)度為一個(gè)字,本段后文以及下一段中提到的F-字與此處均相同)
[0111]前三位為字的類型標(biāo)志位011,第四位為第一個(gè)F-字的類型(O為0-Fill,I為Ι-Fill.下同),第五位為第二個(gè)F-字的類型,第六位為N1-L塊的類型(O為O-N1-L-塊,I為1-N1-L-塊),第七、八位為差異位所在字節(jié)的位置(從00到11,可表示四個(gè)字節(jié))。第二個(gè)字節(jié)(9-16位)為第一個(gè)F-字的計(jì)數(shù)器,第三個(gè)字節(jié)(17-24位)為NL-塊的差異字節(jié)(dirty byte,如果為第一個(gè)字節(jié),則在最高位補(bǔ)一位,內(nèi)容為N1-L塊對(duì)應(yīng)的類型,如果是其余三個(gè)字節(jié)中的一個(gè)的話原樣復(fù)制即可)。
[0112]圖9是通過(guò)COMPAX和ICX算法將原比特序列編碼為FLF。
[0113]圖10是用ICX將原比特序列編碼為FLF,用COMPAX將原比特序列編碼為一個(gè)F字+ —個(gè)L字+ —個(gè)F字。ICX能夠?qū)⒃忍匦蛄芯幋a為FLF,但是由于原比特序列不滿足COMPAX對(duì)于FLF的定義,COMPAX無(wú)法將原比特序列編碼為FLF,只能編碼為一個(gè)F字+ —個(gè)L字+—個(gè)F字。
[0114]4.一個(gè)LFL-字是對(duì)滿足如下條件的塊的組合進(jìn)行編碼:[一個(gè)N1-L-塊]-[I個(gè)或多個(gè)F-塊(或者直接稱作F-字)]-[一個(gè)N1-L塊].[0115]由于兩個(gè)NL-塊的類型不一定一致,因此前三位分配了兩種編碼方法:001表示兩個(gè)N1-L-塊類型相同,010表示兩個(gè)N1-L-塊類型不同。但二者僅在第四位的含義上有差別:
[0116]對(duì)于001-:第四位表不兩個(gè)N1-L塊的類型。為O表不均為0-N1-L塊,為I表不均為1-N1-L塊。
[0117]對(duì)于010-:第四位為O表示第一個(gè)為O-N1-L-塊,第二個(gè)為1_NI_L塊;第四位為I表不第個(gè)為1-N1-L塊,第二個(gè)為O-N1-L塊。O為O-N1-L塊,I為1-N1-L塊。
[0118]第5-6位表不第一個(gè)N1-L塊的差異位所在字節(jié)的位置(00-11),第7-8位表不第二個(gè)N1-L塊差異位所在字節(jié)的位置。第9-16位為第一個(gè)N1-L塊的差異字節(jié)(dirty byte,與FLF中的復(fù)制方式 相同),第17位為F-字類型標(biāo)志位,第18-24位為F-字的計(jì)數(shù)器,第25-32位為第二個(gè)N1-L塊的差異字節(jié)(dirty byte,與上文中的復(fù)制方式相同).[0119]例如:
[0120](I)圖11是可以被COMPAX和ICX兩種方式編碼為L(zhǎng)FL的一個(gè)原比特序列。它符合符合COMPAX和ICX對(duì)于LFL的定義,因此可以被兩種方式編碼。這里解釋ICX的編碼。由于從原比特序列可看出兩個(gè)N1-L塊均為O-N1-L塊,因此為O ;第5-6位標(biāo)志第一個(gè)N1-L塊差異字節(jié)位置,此處為01 ;第7-8位表示第二個(gè)N1-L塊的差異字節(jié)位置,此處為11 (需要在填入第二個(gè)N1-L塊差異字節(jié)時(shí)補(bǔ)上N1-L塊類型,對(duì)于本例相當(dāng)于在第25位填O)。第17位標(biāo)示F-字的類型,此處為O。
[0121](2)圖12是不可以被COMPAX方式編碼為L(zhǎng)FL,只能被ICX編碼為L(zhǎng)FL的一個(gè)原比特序列。此時(shí)COMPAX無(wú)法將其歸入LFL類。圖13是圖12中的原比特序列被COMPAX編碼的結(jié)果??梢钥闯?,COMPAX 將其編為 Literal fford+l-Fill fford+Literal Word。而 ICX可以將其歸入LFL類型,因此此時(shí)ICX比COMPAX有更好的編碼效率。
[0122](3)圖14是不可以被COMPAX方式編碼為L(zhǎng)FL,只能被ICX編碼為L(zhǎng)FL的一個(gè)原比特序列。圖15是圖14中的原比特序列被COMPAX編碼的結(jié)果。此時(shí)ICX比COMPAX有更好的編碼效率。
[0123]由上述⑴⑵(3)的例子可以看出當(dāng)原比特序列只能被ICX編碼為L(zhǎng)FL,不可以被COMPAX編碼為L(zhǎng)FL時(shí),ICX比COMPAX有更好的編碼效率。
[0124]5.一個(gè)N1-FL字是對(duì)滿足如下條件的塊的組合進(jìn)行編碼:[一個(gè)N1-LF塊]-[一個(gè)或者多個(gè)同類型F塊(即I個(gè)F字)]。對(duì)于一個(gè)N1-FL字,前五位為類型標(biāo)志位00001,第六位表示N1-L塊的類型,第七、第八位表示N1-L塊的差異位所在字節(jié)的位置,第9-16位為N1-L的差異位,第17位為Fill Word的類型,第18-32位作為Fill Word的計(jì)數(shù)器。[0125]由于編碼過(guò)程中N1-FL字和FLF字的判斷可能產(chǎn)生部分重疊,現(xiàn)將二者的編碼過(guò)程區(qū)分如下:
[0126]如果出現(xiàn)N1-L類型下一個(gè)是Fill:先判斷計(jì)數(shù)器大小,如果小于128,且再下一個(gè)是N1-L類型,將這三個(gè)塊編碼成LFL ;否則再考慮壓縮成LF類型;如果上述情況均不滿足,則為L(zhǎng)和F分開(kāi)的類型。圖16是N1-L類型且第二個(gè)是Fill時(shí)編碼的流程圖。
[0127]下面舉例說(shuō)明。
[0128]圖17是無(wú)法被WAH和COMPAX進(jìn)行編碼的一個(gè)原比特序列。由于WAH和COMPAX都無(wú)法對(duì)原比特序列進(jìn)行編碼,只能將圖17中的原比特序列編碼為一個(gè)L字+—個(gè)F字+一個(gè)L字的形式,但原比特序列能夠滿足ICX中對(duì)于N1-FL的定義,因此ICX將其編碼為一個(gè)N1-FL字+ —個(gè)L字,此時(shí)能夠看出ICX相比于COMPAX有著更高的編碼效率。
[0129]6.一個(gè)NI2-FL字對(duì)于滿足如下條件的塊的組合進(jìn)行編碼:[一個(gè)NI2-LF塊]-[一個(gè)或多個(gè)同類型的F-塊].前四位為類型標(biāo)志位0001,第五位為NI2-LF塊的類型,第6_8位通過(guò)一定的編碼方式來(lái)標(biāo)示兩個(gè)差異位的位置。圖18是NI2-FL字編碼中第6-8位的編碼規(guī)則。
[0130]第9-16位為第一個(gè)差異位的內(nèi)容,第17-24位為第二個(gè)差異位的內(nèi)容,第25位為Fill Word的類型,第26-32位為Fill Word的計(jì)數(shù)器。
[0131]下面舉例說(shuō)明:
[0132]圖19是無(wú)法被WAH和COMPAX進(jìn)行編碼的一個(gè)原比特序列。由于WAH和COMPAX都沒(méi)有辦法對(duì)于原比特序列進(jìn)行壓縮,只能編成一個(gè)L字+ —個(gè)F字的形式,而ICX能夠?qū)⒃忍匦蛄袎嚎s成一個(gè)NI2-LF字的形式。
[0133]圖20是ICX的碼本。
[0134]由上面的具體實(shí)施例可以看出ICX是以COMPAX為基礎(chǔ)進(jìn)行了改進(jìn),ICX的優(yōu)點(diǎn)如下所示:
[0135]1.對(duì)于FLF字情況:
[0136]COMPAX只能處理兩個(gè)F-字屬于同種類且L-塊為O-N1-L塊的情況(事實(shí)上,COMPAX沒(méi)有考慮1-N1-L塊的所有情況),而ICX對(duì)于F-字是否同種類,以及N1-L塊的類型沒(méi)有要求,這樣相當(dāng)于擴(kuò)展了大約三倍的可編碼情況數(shù)(假定O-F字出現(xiàn)的概率和1-F字出現(xiàn)的概率相近,1-N1-L塊和O-N1-L塊出現(xiàn)的概率相近)。
[0137]而在ICX可以處理而COMPAX無(wú)法處理的情況時(shí)COMPAX的編碼效率退化成WAH (如FLF中的例2)。也就是說(shuō)ICX比COMPAX有著更好的編碼效率。
[0138]2.對(duì)于LFL字情況:
[0139]COMPAX只能處理兩個(gè)L同為0_NI_L塊這種情況,而ICX對(duì)于N1-L的種類沒(méi)有要求,這樣相當(dāng)于擴(kuò)展了三倍的可編碼情況數(shù)(假定1-N1-L塊和O-N1-L塊出現(xiàn)的概率相近,1-NI2-L塊和0-NI2-L塊出現(xiàn)的概率相近)。
[0140]3.對(duì)于N1-LF字的情況
[0141]如果無(wú)法滿足LFL字,ICX可以對(duì)于N1-LF字這種情況進(jìn)行處理,而COMPAX則直接編碼成一個(gè)L字+ —個(gè)F字。
[0142]4.對(duì)于NI2-LF字的情況
[0143]COMPAX中沒(méi)有對(duì)于NI2-LF塊的定義,因此無(wú)法對(duì)于這種情況進(jìn)行進(jìn)一步的壓縮,而ICX對(duì)于這種情況進(jìn)行了考慮并且可以將這兩部分合并成為一個(gè)字。
[0144]在上述ICX可處理而COMPAX無(wú)法處理的情況時(shí),COMPAX的編碼效率退化成WAH (如LFL中的例(2)、⑶)。
[0145]也就是說(shuō)ICX比COMPAX有更好的編碼效率。
[0146]因此可知,對(duì)于互聯(lián)網(wǎng)流量大數(shù)據(jù)檢索系統(tǒng)中的位圖索引構(gòu)建模塊,ICX編碼的效率比COMPAX更高。
[0147]以上所述,僅為本發(fā)明較佳的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種新的壓縮比特位圖索引的方法,其特征是所述方法包括: 步驟1:把待壓縮的Ol比特序列分成以31bits為單位的塊,對(duì)塊進(jìn)行分類標(biāo)記; 步驟2:根據(jù)ICX碼本與編碼規(guī)則,在碼本編碼FL序列基礎(chǔ)上,進(jìn)一步編碼。
2.根據(jù)權(quán)利要求1所述的一種新的壓縮比特位圖索引的方法,其特征是所述把待壓縮的01比特序列分成以31bits為單位的塊,對(duì)塊進(jìn)行分類標(biāo)記具體包括:F-塊和L-塊,L塊又分為 C-L-塊,O-N1-L-塊和 1-N1-L-塊,0-ΝΙ2-L 塊,1-NI2-L 塊。
3.根據(jù)權(quán)利要求2所述的一種新的壓縮比特位圖索引的方法,其特征是所述0-N1-L-塊的定義為:一個(gè)L-塊(補(bǔ)O后)與全O字比較,差異比特在同一個(gè)字節(jié)內(nèi),則記做 O-N1-L-塊。
4.根據(jù)權(quán)利要求2所述的一種新的壓縮比特位圖索引的方法,其特征是所述1-N1-L-塊的定義為:一個(gè)L-塊(補(bǔ)I后)與全I(xiàn)字比較,差異比特在同一個(gè)字節(jié)內(nèi),則記做 O-N1-L-塊。
5.根據(jù)權(quán)利要求2所述的一種新的壓縮比特位圖索引的方法,其特征是所述0-NI2-L-塊的定義為:一個(gè)L-塊(補(bǔ)O后)與全O字比較,差異比特在同2個(gè)字節(jié)內(nèi),則記做0-NI2-L-塊。
6.根據(jù)權(quán)利要求2所述的一種新的壓縮比特位圖索引的方法,其特征是所述1-NI2-L-塊的定義為:一個(gè)L-塊(補(bǔ)I后)與全I(xiàn)字比較,差異比特在同2個(gè)字節(jié)內(nèi),則記做1-NI2-L-塊。
7.根據(jù)權(quán)利要求1所述的一種新的壓縮比特位圖索引的方法,其特征是所述根據(jù)ICX碼本與編碼規(guī)則,在碼本編碼FL序列基礎(chǔ)上,進(jìn)一步編碼,具體包括:L-字編碼,F(xiàn)-字編碼,F(xiàn)LF-字編碼,LFL-字編碼,N1-FL字編碼,NI2-FL字編碼。
8.根據(jù)權(quán)利要求7所述的一種新的壓縮比特位圖索引的方法,其特征是所述FLF-字編碼的定義為:對(duì)滿足[I個(gè)或多個(gè)同類型F-塊]-[I個(gè)O-N1-L塊或者1-N1-L塊]-[I個(gè)或多個(gè)同類型的F-塊]的塊組合進(jìn)行編碼。
9.根據(jù)權(quán)利要求7所述的一種新的壓縮比特位圖索引的方法,其特征是所述LFL-字編碼的定義為:對(duì)滿足[一個(gè)N1-L-塊]-[I個(gè)或多個(gè)F-塊]-[一個(gè)N1-L塊]的塊組合進(jìn)行編碼。
10.根據(jù)權(quán)利要求7所述的一種新的壓縮比特位圖索引的方法,其特征是所述N1-FL-字編碼的定義為:對(duì)滿足[一個(gè)N1-LF塊]-[一個(gè)或者多個(gè)同類型F塊]的塊組合進(jìn)行編碼。
11.根據(jù)權(quán)利要求7所述的一種新的壓縮比特位圖索引的方法,其特征是所述N1-FL-字編碼的定義為:對(duì)滿足[一個(gè)NI2-LF塊]-[一個(gè)或多個(gè)同類型的F-塊]的塊組合進(jìn)行編碼。
【文檔編號(hào)】G06F17/30GK103942329SQ201410182226
【公開(kāi)日】2014年7月23日 申請(qǐng)日期:2014年4月30日 優(yōu)先權(quán)日:2014年4月30日
【發(fā)明者】陳震, 溫禹豪, 馬戈, 曹軍威 申請(qǐng)人:清華大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
巴彦淖尔市| 黄冈市| 紫金县| 中江县| 墨脱县| 平和县| 项城市| 榆社县| 乐陵市| 姚安县| 绥中县| 苏州市| 永福县| 光泽县| 济宁市| 昌宁县| 民乐县| 九寨沟县| 东宁县| 建昌县| 商水县| 塘沽区| 昆明市| 武汉市| 黎城县| 泉州市| 台江县| 呼玛县| 霍邱县| 万安县| 吴旗县| 洪泽县| 顺昌县| 崇文区| 普定县| 大宁县| 万载县| 安乡县| 洛隆县| 新巴尔虎右旗| 玉山县|