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

一種內(nèi)存中海量時(shí)間戳型數(shù)據(jù)高速均勻訪問的索引方法

文檔序號:6336554閱讀:197來源:國知局
專利名稱:一種內(nèi)存中海量時(shí)間戳型數(shù)據(jù)高速均勻訪問的索引方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)存儲和管理領(lǐng)域,尤其涉及一種用于實(shí)現(xiàn)內(nèi)存中海量時(shí)間戳型數(shù)據(jù)高速和均勻訪問的索引方法。
背景技術(shù)
隨著操作系統(tǒng)從32位向64位的過渡,其支持的主存大小已經(jīng)沖破32位時(shí)4G的限制,最新的windoWS7的64位操作系統(tǒng)支持的主存大小已經(jīng)達(dá)到了 192G,比現(xiàn)在許多計(jì)算機(jī)設(shè)備的外存還要大,而主存的訪問速度比磁盤的訪問速度高幾個(gè)數(shù)量級,因此,為了實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)響應(yīng),通常會將海量數(shù)據(jù)存放在主存中,并建立索引,通過高效的索引機(jī)制實(shí)現(xiàn)數(shù)據(jù)的高速和均勻訪問。內(nèi)存中海量數(shù)據(jù)的索引結(jié)構(gòu)需要考慮兩個(gè)問題一是,由于內(nèi)存資源寶貴,數(shù)據(jù)索引結(jié)構(gòu)占用的內(nèi)存空間要盡可能小;二是,索引結(jié)構(gòu)要能實(shí)現(xiàn)數(shù)據(jù)的高速訪問,同時(shí)保證訪問時(shí)間均勻?,F(xiàn)有的哈希加1棵T樹的索引結(jié)構(gòu)hybrid-HT,實(shí)際上是一套數(shù)據(jù),兩套對應(yīng)的索弓丨,哈希索引用于點(diǎn)查詢,T樹索引用于段查詢,由于是一套數(shù)據(jù)兩套索引,因此,占用的內(nèi)存空間相當(dāng)大;另外,由于只有1棵T樹,在數(shù)據(jù)量大的情況下,T樹的層數(shù)將很高,查詢時(shí)間不受控。針對這種索引結(jié)構(gòu)的缺陷,名稱為“組態(tài)實(shí)時(shí)數(shù)據(jù)庫索引機(jī)制的研究與實(shí)現(xiàn)”(作者張河,中南大學(xué)2008年碩士學(xué)位論文)的論文提出了一種改進(jìn)的H-T*算法,該H-T*算法中有多棵T樹,每棵T樹存儲哈希值相同的數(shù)據(jù),所有數(shù)據(jù)存在T樹中,哈希只用來存放T 樹根節(jié)點(diǎn)的位置,因此,相對于hybrid-HT算法,H-T*算法占用的內(nèi)存空間大大減少,但是, 該文提出的哈希算法,不能對每棵T樹的規(guī)模進(jìn)行限制,這導(dǎo)致最壞的情況下,多棵T樹退化為1棵T樹,從而導(dǎo)致查詢時(shí)間長且不均勻。在另一名稱為“海量數(shù)據(jù)內(nèi)存數(shù)據(jù)庫中快速定位的網(wǎng)格+T樹索引的方法”的中國第200610038378. 6號發(fā)明專利說明書(公告日2008年9月10日)中,披露了另外一種索引方法,該方法為了實(shí)現(xiàn)多關(guān)鍵字的查詢,在T樹上層建立網(wǎng)格,相當(dāng)于一個(gè)坐標(biāo)系,坐標(biāo)系中每個(gè)點(diǎn)是一棵T樹。該方法的缺點(diǎn)是,在數(shù)據(jù)趨勢不能很好預(yù)測的情況下,網(wǎng)格的劃分很難合理,這會導(dǎo)致各個(gè)網(wǎng)格T樹層數(shù)不均,差異很大,如此,查詢時(shí)訪問內(nèi)存的次數(shù)就會很多,而且訪問時(shí)間不均勻。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種內(nèi)存中海量時(shí)間戳型數(shù)據(jù)高速均勻訪問的索引方法,它可以減少內(nèi)存空間的占用,提高數(shù)據(jù)訪問的效率,并能保證訪問時(shí)間的均衡。為解決上述技術(shù)問題,本發(fā)明的內(nèi)存中海量時(shí)間戳型數(shù)據(jù)高速均勻訪問的索引方法,采用了哈希表管理多棵T樹的索引結(jié)構(gòu),T樹用于存儲時(shí)間戳型數(shù)據(jù),哈希表用于存儲T 樹根節(jié)點(diǎn)的位置。所述每棵T樹中存儲的數(shù)據(jù)是一個(gè)固定時(shí)間長度的時(shí)間段內(nèi)的數(shù)據(jù)。所述哈希表存放在一個(gè)數(shù)組中,且在該哈希表中按照T樹時(shí)間戳的順序存儲每棵T樹根節(jié)點(diǎn)的位置。所述索引結(jié)構(gòu)在進(jìn)行數(shù)據(jù)的插入時(shí),包括以下步驟1)計(jì)算數(shù)據(jù)要插入的T樹的根節(jié)點(diǎn)在數(shù)組中的下標(biāo);2)從該棵T樹的根節(jié)點(diǎn)開始,在該棵T樹中查找數(shù)據(jù)要插入的節(jié)點(diǎn);3)將數(shù)據(jù)插入該棵T樹。所述索引結(jié)構(gòu)在進(jìn)行數(shù)據(jù)查詢時(shí),包括以下步驟1)計(jì)算要查詢數(shù)據(jù)所在T樹的根節(jié)點(diǎn)在數(shù)組中的下標(biāo);2)從該棵T樹的根節(jié)點(diǎn)開始,在該棵T樹中查詢該數(shù)據(jù)。所述T樹根節(jié)點(diǎn)下標(biāo)的計(jì)算公式為下標(biāo)=(數(shù)據(jù)時(shí)間戳-所有T樹的最小時(shí)間戳)/每棵T樹存儲數(shù)據(jù)的時(shí)間段長度。本發(fā)明通過哈希加多棵T樹的索引結(jié)構(gòu),將海量數(shù)據(jù)均勻分散存儲在多棵T樹中, 查詢數(shù)據(jù)時(shí),通過哈希定位到一棵T樹,在該T樹中進(jìn)行查詢,從而控制了每棵T樹的層數(shù), 減少了內(nèi)存空間的占用和數(shù)據(jù)查詢時(shí),訪問內(nèi)存的次數(shù),相較于現(xiàn)有的索引方法,本發(fā)明的數(shù)據(jù)訪問效率更高,訪問時(shí)間也更均衡。


圖1是本發(fā)明實(shí)施例的索引結(jié)構(gòu)示意圖;圖2是圖1中的T樹節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更清楚明白,以下結(jié)合附圖和實(shí)施例,對本發(fā)明做進(jìn)一步的詳細(xì)說明內(nèi)存中的數(shù)據(jù)通常是時(shí)間戳型的數(shù)據(jù),即每個(gè)數(shù)據(jù)帶有一個(gè)時(shí)間戳,作為數(shù)據(jù)在內(nèi)存中存儲的Key(關(guān)鍵字)。本發(fā)明實(shí)施例針對時(shí)間戳型數(shù)據(jù)的特點(diǎn),設(shè)計(jì)了哈希加多棵 T樹的索引結(jié)構(gòu),每棵T樹中存儲固定時(shí)間長度的時(shí)間段(Range)內(nèi)的數(shù)據(jù),在T樹上層有一哈希數(shù)組(Array),數(shù)組中按照T樹時(shí)間戳(QueryTime)由小到大的順序,存儲每棵T樹根節(jié)點(diǎn)(Root)的位置,T樹節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)可參閱圖2所示,每個(gè)節(jié)點(diǎn)中存儲數(shù)據(jù)的Key和指針。當(dāng)需要在上述索引結(jié)構(gòu)中插入數(shù)據(jù)時(shí),首先判斷內(nèi)存空間是否夠用,如果不夠,則釋放時(shí)間最早的一棵T樹,將數(shù)組中的所有內(nèi)容前移一個(gè)下標(biāo),然后根據(jù)需要插入的數(shù)據(jù)的時(shí)間戳(QueryTime),通過以下哈希算法獲取數(shù)據(jù)要插入的T樹的根節(jié)點(diǎn)在數(shù)組中對應(yīng)的下標(biāo)i :i = (QueryTime-MinTime)/Range,其中,MinTime為所有T樹的最小時(shí)間戳,再根據(jù)計(jì)算得到的下標(biāo)i,獲取該棵T樹根節(jié)點(diǎn)的位置,并從此根節(jié)點(diǎn)開始,在該棵T樹中查找數(shù)據(jù)要插入的節(jié)點(diǎn),將數(shù)據(jù)插入T樹中。如果內(nèi)存空間夠用,則直接按照上述方法計(jì)算數(shù)據(jù)要插入的T樹的位置,將數(shù)據(jù)插入T樹。當(dāng)需要查詢數(shù)據(jù)時(shí),則根據(jù)所需要查詢的數(shù)據(jù)的時(shí)間戳,通過前述哈希算法獲取對應(yīng)的T樹在數(shù)組中的下標(biāo),根據(jù)計(jì)算獲得的下標(biāo),獲取該棵T數(shù)根節(jié)點(diǎn)的位置,然后從該根節(jié)點(diǎn)開始,在該棵T樹中查詢數(shù)據(jù)。由于一棵T樹的層數(shù)很少,規(guī)模有限,因此,數(shù)據(jù)查詢時(shí)訪問內(nèi)存的次數(shù)大大減少,查詢效率大大提高,而且查詢時(shí)間也比較均衡。
以下通過一個(gè)具體的實(shí)施例,對上述索引方法做進(jìn)一步的說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用于解釋本發(fā)明,并不用于限定本發(fā)明。如圖1所示,本實(shí)施例設(shè)置了 5棵T樹,每棵T樹存儲2000秒時(shí)間段的數(shù)據(jù),即每 2000秒對應(yīng)一棵T樹,所有T樹的最小時(shí)間戳為1000秒,因此,5棵T樹分別存儲1000 3000,3000 5000,5000 7000,7000 9000,9000 11000 秒時(shí)間段的數(shù)據(jù)。每個(gè) 2000 秒時(shí)間段有4000條數(shù)據(jù),則每棵T樹存儲4000條紀(jì)錄,定義T樹的每個(gè)節(jié)點(diǎn)存儲一條數(shù)據(jù), 則根據(jù)計(jì)算公式數(shù)據(jù)個(gè)數(shù)=2n-l,T樹的層數(shù)η為12。當(dāng)要查詢時(shí)間戳為3753的數(shù)據(jù)時(shí),根據(jù)上述哈希算法,計(jì)算出該數(shù)據(jù)所在T樹的根節(jié)點(diǎn)的下標(biāo)i :i = (3753-1000)/2000 = 1,從而得到該棵T樹的位置是在3000 5000 秒時(shí)間段,然后在此T樹中查詢時(shí)間戳為3753的記錄。在數(shù)據(jù)量更大的情況下,例如,200萬條數(shù)據(jù),則本發(fā)明可以用500棵T樹,每棵T 樹12層,來存儲這些數(shù)據(jù),在查詢數(shù)據(jù)時(shí),內(nèi)存的訪問次數(shù)仍為12次,即訪問次數(shù)不會隨著數(shù)據(jù)量的增大而增加。而倘若采用現(xiàn)有索引方法中1棵T樹的索引結(jié)構(gòu),則T樹的層數(shù)需要21層,查詢數(shù)據(jù)時(shí),需要訪問內(nèi)存21次,且隨著數(shù)據(jù)量的增大,訪問內(nèi)存的次數(shù)也會相應(yīng)增加。由此可見,對于大量時(shí)間戳型數(shù)據(jù)的存儲和管理(例如,內(nèi)存實(shí)時(shí)數(shù)據(jù)庫),本發(fā)明的索引方法明顯更具有優(yōu)勢。
權(quán)利要求
1.一種內(nèi)存中海量時(shí)間戳型數(shù)據(jù)高速均勻訪問的索引方法,其特征在于采用哈希表管理多棵T樹的索引結(jié)構(gòu),T樹用于存儲時(shí)間戳型數(shù)據(jù),哈希表用于存儲T樹根節(jié)點(diǎn)的位置。
2.如權(quán)利要求1所述的索引方法,其特征在于所述T樹存儲的數(shù)據(jù)是一個(gè)固定時(shí)間長度的時(shí)間段內(nèi)的數(shù)據(jù)。
3.如權(quán)利要求2所述的索引方法,其特征在于所述哈希表存放在一個(gè)數(shù)組中,且該哈希表按照T樹時(shí)間戳的順序存儲每棵T樹根節(jié)點(diǎn)的位置。
4.如權(quán)利要求3所述的索引方法,其特征在于,所述索引結(jié)構(gòu)在進(jìn)行數(shù)據(jù)的插入時(shí),包括以下步驟1)計(jì)算數(shù)據(jù)要插入的T樹的根節(jié)點(diǎn)在數(shù)組中的下標(biāo);2)從該棵T樹的根節(jié)點(diǎn)開始,在該棵T樹中查找數(shù)據(jù)要插入的節(jié)點(diǎn);3)將數(shù)據(jù)插入該棵T樹。
5.如權(quán)利要求4所述的索引方法,其特征在于,所述步驟1)之前還包括步驟判斷內(nèi)存空間是否夠用,如果不夠,則釋放數(shù)組中的第一棵T樹,并將后續(xù)T樹往前移,然后再進(jìn)行步驟1);如果夠用,則直接轉(zhuǎn)到步驟1)。
6.如權(quán)利要求3所述的索引方法,其特征在于,所述索引結(jié)構(gòu)在進(jìn)行數(shù)據(jù)查詢時(shí),包括以下步驟1)計(jì)算要查詢數(shù)據(jù)所在T樹的根節(jié)點(diǎn)在數(shù)組中的下標(biāo);2)從該棵T樹的根節(jié)點(diǎn)開始,在該棵T樹中查詢該數(shù)據(jù)。
7.如權(quán)利要求4或6所述的索引方法,其特征在于,所述T樹根節(jié)點(diǎn)下標(biāo)的計(jì)算公式為下標(biāo)=(數(shù)據(jù)時(shí)間戳-所有T樹的最小時(shí)間戳)/每棵T樹存儲數(shù)據(jù)的時(shí)間段長度。
全文摘要
本發(fā)明公開了一種內(nèi)存中海量時(shí)間戳型數(shù)據(jù)高速均勻訪問的索引方法,該方法采用哈希表管理多棵T樹的索引結(jié)構(gòu),每棵T樹用于存儲固定長度時(shí)間段內(nèi)的時(shí)間戳型數(shù)據(jù),哈希表用于存儲T樹根節(jié)點(diǎn)的位置。該索引方法將海量數(shù)據(jù)均勻分散存儲在多棵T樹中,查詢數(shù)據(jù)時(shí),通過哈希算法定位到一棵T樹,在該棵T樹中進(jìn)行查詢,從而減少了內(nèi)存訪問的次數(shù),提高了數(shù)據(jù)訪問的效率,且使訪問時(shí)間更均衡。
文檔編號G06F17/30GK102479189SQ20101055549
公開日2012年5月30日 申請日期2010年11月23日 優(yōu)先權(quán)日2010年11月23日
發(fā)明者張冬, 張超鋒, 沈春鋒 申請人:上海寶信軟件股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
泉州市| 信丰县| 忻城县| 清水县| 治县。| 扶余县| 溧阳市| 昌黎县| 尉氏县| 砀山县| 墨竹工卡县| 松潘县| 平和县| 巨野县| 澄迈县| 三原县| 从江县| 宜春市| 瑞金市| 长岛县| 青海省| 丹巴县| 沛县| 泗洪县| 都安| 黑山县| 潜山县| 勃利县| 广饶县| 太原市| 金坛市| 芒康县| 汝阳县| 商南县| 内江市| 加查县| 湖州市| 临洮县| 瓦房店市| 巴林右旗| 荆门市|