專(zhuān)利名稱:一種數(shù)據(jù)存儲(chǔ)處理方法、查找方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)處理方法、數(shù)據(jù)查找方法及其裝置。
背景技術(shù):
近年來(lái),隨著制造技術(shù)的成熟,閃存(Flash)存儲(chǔ)器的成本越來(lái)越低,存儲(chǔ)容量和密度越來(lái)越大,逐漸在存儲(chǔ)器市場(chǎng)上占據(jù)重要地位。已經(jīng)有取代磁盤(pán)作為主要聯(lián)機(jī)存儲(chǔ)介 質(zhì)的趨勢(shì)。由于Flash的工作原理與磁盤(pán)截然不同,現(xiàn)有的存儲(chǔ)系統(tǒng)不能很好在Flash上 工作,必須要通過(guò)一些中間映射技術(shù)將Flash封裝成像磁盤(pán)一樣的塊設(shè)備才能運(yùn)行,效率 十分低下,使Flash的快速讀寫(xiě)特性得不到充分發(fā)揮。大容量Flash存儲(chǔ)器的出現(xiàn),為更加 高效地存儲(chǔ)和查找數(shù)據(jù)帶來(lái)了希望,同時(shí)也對(duì)高效的數(shù)據(jù)存儲(chǔ)技術(shù)的實(shí)現(xiàn)提出了前所未有 的挑戰(zhàn)。目前,提出一種日志結(jié)構(gòu)的Flash文件系統(tǒng)JFFS (Journal Flash File System), 其最新版本JFFS3中采用了 B+樹(shù)作為索引結(jié)構(gòu)。JFFS3直接把最新插入或更新后的原始數(shù) 據(jù)記錄標(biāo)記為日志,并在內(nèi)存中維護(hù)一個(gè)小型的B+樹(shù)結(jié)構(gòu)以提高日志區(qū)的記錄查找效率。 等到緩存滿了之后再對(duì)Flash上的B+樹(shù)進(jìn)行更新,同時(shí)日志區(qū)的數(shù)據(jù)記錄將轉(zhuǎn)變?yōu)檎?shù) 據(jù)記錄,此后插入的記錄則為新的日志記錄,并在內(nèi)存中為其維護(hù)新的臨時(shí)索引,如此反復(fù) 進(jìn)行。它的出發(fā)點(diǎn)是要延緩B+樹(shù)結(jié)構(gòu)的更新,以達(dá)到批量更新日志的目的。事實(shí)上,JFFS算法的原理在本質(zhì)上是通過(guò)使用日志來(lái)延緩對(duì)B+樹(shù)結(jié)構(gòu)的更新,從 而將多次Flash寫(xiě)操作合并為一次寫(xiě)。但減少Flash寫(xiě)操作卻并不意味著能夠提高數(shù)據(jù)的 寫(xiě)入效率。另外,該算法需要占用大量的Flash空間,數(shù)據(jù)維護(hù)操作復(fù)雜。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例提供一種數(shù)據(jù)存儲(chǔ)處理方法及其對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)處理裝 置,數(shù)據(jù)查找方法及其對(duì)應(yīng)的數(shù)據(jù)查找裝置。減少了對(duì)Flash存儲(chǔ)空間的占用,數(shù)據(jù)維護(hù)操 作簡(jiǎn)單,并能實(shí)現(xiàn)高效的數(shù)據(jù)查找。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)處理方法,包括將數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)記錄區(qū);將所述數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí)形成日志信息,并 將所述日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū);為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并將所述布隆過(guò)濾器數(shù)據(jù)以順 序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要區(qū)。相應(yīng)的,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲(chǔ)處理裝置,包括記錄處理單元,用于將數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)記錄區(qū);日志處理單元,用于將所述數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo) 識(shí)形成日志信息,并將所述日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū);日志摘要處理單元,用于為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并將所述布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要區(qū)。相應(yīng)的,本發(fā)明實(shí)施例提供的一種與所述存儲(chǔ)方法相對(duì)應(yīng)的數(shù)據(jù)查找方法包括根據(jù)數(shù)據(jù)的標(biāo)識(shí)查找閃存中的日志摘要區(qū)的布隆過(guò)濾器數(shù)據(jù),并根據(jù)查找到的布隆過(guò)濾器數(shù)據(jù)確定數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在日志區(qū)域中的位置;根據(jù)所述確定的位置,在所述日志區(qū)域中查找包含所述數(shù)據(jù)的標(biāo)識(shí)的日志信息, 并獲得所述日志信息中的物理地址;以所述物理地址為索引到所述閃存中的數(shù)據(jù)記錄區(qū)中的相應(yīng)物理地址處獲取數(shù)據(jù)。相應(yīng)的,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)查找裝置,包括摘要查找單元,用于根據(jù)數(shù)據(jù)的標(biāo)識(shí)查找閃存中的日志摘要區(qū)的布隆過(guò)濾器數(shù) 據(jù),并根據(jù)查找到的布隆過(guò)濾器數(shù)據(jù)確定數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在日志區(qū)域中的位 置;日志查找單元,用于根據(jù)所述確定的位置,在所述日志區(qū)域中查找包含所述數(shù)據(jù) 的標(biāo)識(shí)的日志信息,并獲得所述日志信息中的物理地址;數(shù)據(jù)查找單元,用于以所述物理地址為索引到所述閃存中的數(shù)據(jù)記錄區(qū)中的相應(yīng) 物理地址處獲取數(shù)據(jù)。本發(fā)明實(shí)施例,采用數(shù)據(jù)記錄區(qū)、日志區(qū)以及日志摘要區(qū)的Flash存儲(chǔ)架構(gòu),減少 了對(duì)Flash存儲(chǔ)空間的占用,并且各區(qū)均采用順序存儲(chǔ)的方式存儲(chǔ),使數(shù)據(jù)維護(hù)操作簡(jiǎn)單, 同時(shí)本發(fā)明實(shí)施例利用布隆過(guò)濾器數(shù)據(jù)存儲(chǔ)日志摘要,可提高數(shù)據(jù)查詢效率。
圖1是本發(fā)明的數(shù)據(jù)存儲(chǔ)處理方法的一實(shí)施例的流程示意圖;圖2. 1是本發(fā)明的將數(shù)據(jù)寫(xiě)入日志摘要區(qū)的一階段狀態(tài)示意圖;圖2. 2是本發(fā)明的將數(shù)據(jù)寫(xiě)入日志摘要區(qū)的另一階段狀態(tài)示意圖;圖2. 3是本發(fā)明的將數(shù)據(jù)寫(xiě)入日志摘要區(qū)的另一階段狀態(tài)示意圖;圖3是本發(fā)明的數(shù)據(jù)存儲(chǔ)裝置的一實(shí)施例結(jié)構(gòu)組成示意圖;圖4是本發(fā)明的數(shù)據(jù)查找方法的一實(shí)施例流程示意圖;圖5是本發(fā)明的數(shù)據(jù)查找裝置的一實(shí)施例結(jié)構(gòu)組成示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)處理方法,圖1是本發(fā)明實(shí)施例提供的數(shù)據(jù)存 儲(chǔ)處理方法的第一實(shí)施例的流程示意圖,如圖1所示,本實(shí)施例的方法主要包括步驟S100,將數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)記錄區(qū);其中,所述順 序存儲(chǔ)是指,后寫(xiě)入的數(shù)據(jù)順序追加到前一數(shù)據(jù)的末尾,并在數(shù)據(jù)區(qū)的某尾地址存入數(shù)據(jù) 后,返回到數(shù)據(jù)區(qū)的首地址繼續(xù)存儲(chǔ)。具體的,在步驟S100,在將數(shù)據(jù)寫(xiě)入到閃存的數(shù)據(jù)記錄區(qū)的時(shí)候,可首先將數(shù)據(jù)寫(xiě)入到所述數(shù)據(jù)記錄區(qū)在內(nèi)存中的緩沖頁(yè)中,當(dāng)內(nèi)存中的緩沖頁(yè)滿的時(shí)候,再將緩沖頁(yè)的內(nèi)容寫(xiě)入到閃存的數(shù)據(jù)記錄區(qū)中。步驟S102,將所述數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí)形成日 志信息,并將所述日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū);其中,所述物理地址 為所述數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中存儲(chǔ)的物理頁(yè)地址,在數(shù)據(jù)查找過(guò)程中,可利用該物理地 址查找到該數(shù)據(jù)。其中,所述數(shù)據(jù)的標(biāo)識(shí)用于唯一標(biāo)志一個(gè)數(shù)據(jù),具體的所述數(shù)據(jù)的標(biāo)識(shí)可 以為一個(gè)鍵值Key。當(dāng)采用Rec表示一個(gè)數(shù)據(jù),Addr表示該數(shù)據(jù)在數(shù)據(jù)記錄區(qū)中的物理地 址,Key為所述數(shù)據(jù)的鍵值,這樣,一個(gè)日志信息可表示為<R. Key,R.Addr〉。相應(yīng)的,在步 驟S102,在將所述日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū)時(shí),可首先將所述日 志信息寫(xiě)入到所述日志區(qū)在內(nèi)存中的緩沖頁(yè)中,當(dāng)內(nèi)存中的緩沖頁(yè)滿的時(shí)候,再將緩沖頁(yè) 中的內(nèi)容寫(xiě)入到閃存的日志區(qū)中。具體的,所述日志信息在日志區(qū)中以日志頁(yè)的形式存在。步驟S104,為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù)(Bloom Filter),并 將所述布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要區(qū)。相應(yīng)的,在步驟S104, 在將所述布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要區(qū)時(shí),可首先將所述布 隆過(guò)濾器數(shù)據(jù)寫(xiě)入到所述日志摘要區(qū)在內(nèi)存中的緩沖頁(yè)中,當(dāng)內(nèi)存中的緩沖頁(yè)滿的時(shí)候, 再將緩沖頁(yè)中的內(nèi)容寫(xiě)入到閃存的日志摘要區(qū)中。進(jìn)一步,首先將所述布隆過(guò)濾器數(shù)據(jù)寫(xiě) 入到所述日志摘要區(qū)在內(nèi)存中的緩沖頁(yè)中,當(dāng)內(nèi)存中的緩沖頁(yè)滿的時(shí)候,再將緩沖頁(yè)中的 內(nèi)容寫(xiě)入到閃存的日志摘要區(qū)中的一種實(shí)現(xiàn)方式可為將所述日志摘要緩沖區(qū)的一頁(yè)中的每個(gè)布隆過(guò)濾器數(shù)據(jù)均劃分為四段,將每個(gè)布 隆過(guò)濾器數(shù)據(jù)的第一段到第四段數(shù)據(jù)以順序存儲(chǔ)的方式分別按列寫(xiě)入到閃存中的日志摘 要區(qū)的四個(gè)物理頁(yè)中,直到所述四個(gè)物理頁(yè)被寫(xiě)滿;將所述四個(gè)物理頁(yè)中每個(gè)物理頁(yè)包含的每個(gè)塊再次劃分為四段,將每個(gè)塊的四段 數(shù)據(jù)的第一段到第四段以順序存儲(chǔ)的方式分別按列寫(xiě)入到閃存中的日志摘要區(qū)的四個(gè)新 的物理頁(yè)中,直到新的物理頁(yè)再次被寫(xiě)滿;依此類(lèi)推,直到將所述日志摘要緩沖區(qū)中一個(gè)布 隆過(guò)濾器數(shù)據(jù)的每一位分別寫(xiě)入到所述閃存的日志摘要區(qū)的不同物理頁(yè)中。圖2. 1至圖2. 3示出了本發(fā)明實(shí)施例將布隆過(guò)濾器數(shù)據(jù)寫(xiě)入閃存的日志摘要區(qū)的 階段示意圖。具體的,假設(shè)一個(gè)Bloom Filter包含m比特的數(shù)字,本例中是希望將Bloom Filter的m比特的數(shù)字分別存儲(chǔ)在m個(gè)物理頁(yè)中,即第i個(gè)比特位存儲(chǔ)在第i個(gè)物理頁(yè)中。 寫(xiě)入日志摘要區(qū)時(shí),首先將Bloom Filter存儲(chǔ)在日志摘要區(qū)在內(nèi)存中的緩沖區(qū)(SLA緩沖) 內(nèi)。當(dāng)SLA緩沖區(qū)滿的時(shí)候,將緩沖區(qū)的Bloom Filter寫(xiě)入到閃存中。隨著SLA緩沖區(qū) 的不斷的寫(xiě)入,對(duì)閃存上的數(shù)據(jù)不斷的進(jìn)行重組。重組的基本思想是如果第一次將一個(gè) Bloom Filter存儲(chǔ)在P個(gè)物理頁(yè)中,那么將Bloom Filter的第[(i_l)*m/P,i*m/P)比特 位存儲(chǔ)在第i個(gè)物理頁(yè)中。比如說(shuō),第1個(gè)物理頁(yè)存儲(chǔ)的是一個(gè)Bloom Filter的第
頁(yè)上,具體的,將一個(gè)物理頁(yè)的每個(gè)Sector 劃分為4個(gè)劃分塊,然后將每一塊寫(xiě)入新的4頁(yè)中的一個(gè)sector中,依此類(lèi)推。數(shù)據(jù)的組 織方式和第一步一樣,也是按列進(jìn)行存儲(chǔ)。這樣Flash上的日志摘要區(qū)就變?yōu)?6個(gè)新的物 理頁(yè),即如圖2. 2中所示的物理頁(yè),每個(gè)物理頁(yè)中的數(shù)據(jù)來(lái)自于第一步中物理頁(yè)的一個(gè)劃 分塊。第一步中的4個(gè)物理頁(yè)將被作為垃圾等待回收。當(dāng)有數(shù)據(jù)不停寫(xiě)入的時(shí)候,如此反 復(fù),直到這16個(gè)物理頁(yè)全部寫(xiě)滿。當(dāng)圖2. 2中的物理頁(yè)全部寫(xiě)滿的時(shí)候,進(jìn)行重組,如圖2. 3所示,重組的方法也是 將每個(gè)物理頁(yè)的數(shù)據(jù)寫(xiě)入新的4個(gè)物理頁(yè)中,并且按列的方式寫(xiě)入。過(guò)程和圖2. 2—致。然 后如此反復(fù)進(jìn)行,直至達(dá)到m個(gè)物理頁(yè),也就是將Bloom Filter的m比特位的數(shù)據(jù)分別存 儲(chǔ)在m個(gè)物理頁(yè)中。較佳的,本實(shí)施例在步驟S104之后還可包括步驟S106,將需刪除的數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址以順序存儲(chǔ)的方式寫(xiě) 入到閃存中的數(shù)據(jù)刪除區(qū)。具體實(shí)現(xiàn)中,該步驟可選。較佳的,本實(shí)施例在步驟S106之后還可包括步驟S108,將用于替換所述刪除的數(shù)據(jù)的更新數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存 中的數(shù)據(jù)記錄區(qū)。然后執(zhí)行步驟S102。具體實(shí)現(xiàn)中,該步驟可選。本發(fā)明實(shí)施例,采用數(shù)據(jù)記錄區(qū)、日志區(qū)以及日志摘要區(qū)的Flash存儲(chǔ)架構(gòu),減少 了對(duì)Flash存儲(chǔ)空間的占用,并且各區(qū)均采用順序存儲(chǔ)的方式存儲(chǔ),使數(shù)據(jù)維護(hù)操作簡(jiǎn)單, 同時(shí)本發(fā)明實(shí)施例利用布隆過(guò)濾器數(shù)據(jù)存儲(chǔ)日志摘要,可提高數(shù)據(jù)查詢效率。相應(yīng)的,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)處理裝置,該數(shù)據(jù)存儲(chǔ)處理裝置可用 于執(zhí)行數(shù)據(jù)存儲(chǔ)處理方法,圖3是本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)處理裝置的一實(shí)施例結(jié)構(gòu)組成 示意圖,如圖3所示,本實(shí)施例的裝置至少包括記錄處理單元30、日志處理單元32以及日志 摘要處理單元34,其中記錄處理單元30,用于將數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)記錄區(qū);日志處理單元32,用于將所述數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的 標(biāo)識(shí)形成日志信息,并將所述日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū);仍參考 圖3,日志處理單元32包括第一緩沖處理單元321和日志寫(xiě)入單元323,其中第一緩沖處理單元321,用于將所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí) 形成日志信息存入內(nèi)存中的日志緩沖區(qū);日志寫(xiě)入單元323,用于將所述日志緩沖區(qū)中的日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū)。 日志摘要處理單元34,用于為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并 將所述布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要區(qū)。仍參考圖3,日志摘要 處理單元34包括第二緩沖處理單元341和摘要寫(xiě)入單元343,其中第二緩沖處理單元341,用于為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并 將所述布隆過(guò)濾器數(shù)據(jù)存入內(nèi)存中的日志摘要緩沖區(qū);摘要寫(xiě)入單元343,用于將所述日志摘要緩沖區(qū)中的布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ) 的方式寫(xiě)入到閃存中的日志摘要區(qū)。具體的,摘要寫(xiě)入單元343可將所述日志摘要緩沖區(qū) 的一頁(yè)中的每個(gè)布隆過(guò)濾器數(shù)據(jù)均劃分為四段,將每個(gè)布隆過(guò)濾器數(shù)據(jù)的第一段到第四段 數(shù)據(jù)以順序存儲(chǔ)的方式分別按列寫(xiě)入到閃存中的日志摘要區(qū)的四個(gè)物理頁(yè)中,直到所述四 個(gè)物理頁(yè)被寫(xiě)滿;將所述四個(gè)物理頁(yè)中每個(gè)物理頁(yè)包含的每個(gè)塊再次劃分為四段,將每個(gè) 塊的四段數(shù)據(jù)的第一段到第四段以順序存儲(chǔ)的方式分別按列寫(xiě)入到閃存中的日志摘要區(qū) 的四個(gè)新的物理頁(yè)中,直到新的物理頁(yè)再次被寫(xiě)滿;依此類(lèi)推,直到將所述日志摘要緩沖區(qū) 中一個(gè)布隆過(guò)濾器數(shù)據(jù)的每一位分別寫(xiě)入到所述閃存的日志摘要區(qū)的不同物理頁(yè)中。較佳的,本實(shí)施例的裝置還包括刪除處理單元36,用于將需刪除的數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址以順序存 儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)刪除區(qū)。具體實(shí)現(xiàn)中,刪除處理單元36可選。較佳的,本實(shí)施例的記錄處理單元30還用于將用于替換所述刪除處理單元36刪 除的數(shù)據(jù)的更新數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)記錄區(qū)。具體實(shí)現(xiàn)中,記錄處 理單元30的該功能可選。本發(fā)明實(shí)施例,采用數(shù)據(jù)記錄區(qū)、日志區(qū)以及日志摘要區(qū)的Flash存儲(chǔ)架構(gòu),減少 了對(duì)Flash存儲(chǔ)空間的占用,并且各區(qū)均采用順序存儲(chǔ)的方式存儲(chǔ),使數(shù)據(jù)維護(hù)操作簡(jiǎn)單, 同時(shí)本發(fā)明實(shí)施例利用布隆過(guò)濾器數(shù)據(jù)存儲(chǔ)日志摘要,可提高數(shù)據(jù)查詢效率。相應(yīng)的,本發(fā)明實(shí)施例提供了一種對(duì)應(yīng)于上述數(shù)據(jù)存儲(chǔ)處理方法的數(shù)據(jù)查找方 法,圖4是本發(fā)明實(shí)施例的數(shù)據(jù)查找方法的一實(shí)施例流程組成示意圖。如圖4所示,本實(shí)施 例的方法包括步驟S400,根據(jù)數(shù)據(jù)的標(biāo)識(shí)查找閃存中的日志摘要區(qū)的布隆過(guò)濾器數(shù)據(jù),并根據(jù) 查找到的布隆過(guò)濾器數(shù)據(jù)確定數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在日志區(qū)域中的位置;所述數(shù)據(jù) 的標(biāo)識(shí)用于唯一標(biāo)志一個(gè)數(shù)據(jù),具體的所述數(shù)據(jù)的標(biāo)識(shí)可以為一個(gè)鍵值Key。具體的,在步 驟S400,利用所述數(shù)據(jù)的標(biāo)識(shí)及多個(gè)哈希函數(shù)計(jì)算出第二布隆過(guò)濾器數(shù)據(jù),所述第二布隆 過(guò)濾器數(shù)據(jù)包括多個(gè)布隆過(guò)濾器數(shù)據(jù);遍歷所述日志摘要區(qū)中的布隆過(guò)濾器數(shù)據(jù),查找是 否存在所述第二布隆過(guò)濾器數(shù)據(jù)指示的位均為1的第一布隆過(guò)濾器數(shù)據(jù),如果是,則根據(jù) 該第一布隆過(guò)濾器數(shù)據(jù)確定出所述數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在所述日志區(qū)域中的位置。如前面的數(shù)據(jù)存儲(chǔ)處理方法,在日志摘要區(qū)中,一個(gè)Bloom Filter的m比特的 數(shù)字分別存儲(chǔ)在m個(gè)物理頁(yè)中,現(xiàn)假設(shè)有k個(gè)用于構(gòu)造第二布隆過(guò)濾器數(shù)據(jù)的哈希函數(shù) 的個(gè)數(shù),Key為要查詢的日志對(duì)應(yīng)的鍵值。利用k個(gè)哈希函數(shù)計(jì)算出Key對(duì)應(yīng)的k個(gè)第二
Bloom Filter,分別為hi (Key),h2 (Key)......hk (Key)。然后在所有的日志摘要區(qū)的Bloom
Filter中查找!^僅巧),!^ ^),···,!^ ^)指示的位置上為1的第一布隆過(guò)濾器數(shù)據(jù), 如果找到所述hi (Key),h2 (Key), ... , hk(Key)位置上為1的Bloom Filter (即查找到第一布隆過(guò)濾器數(shù)據(jù)),則可根據(jù)該第一布隆過(guò)濾器數(shù)據(jù)確定包含所述鍵值Key的日志信息 在日志區(qū)域的位置。如果在所有的Bloom Filter中都不能找到hi (Key),h2 (Key),···, hk(Key)位置上為1的BloomFilter,那么證明不存在包含所述鍵值Key的日志信息。步驟S402,根據(jù)所述確定的位置,在所述日志區(qū)域中查找包含所述數(shù)據(jù)的標(biāo)識(shí)的 日志信息,并獲得所述日志信息中的物理地址;步驟S404,以所述物理地址為索引到所述閃存中的數(shù)據(jù)記錄區(qū)中的相應(yīng)物理地址處獲取數(shù)據(jù)。較佳的,本實(shí)施例在步驟S404之前還包括步驟S403,以所述物理地址為索引查找所述閃存中的數(shù)據(jù)刪除區(qū)中是否存儲(chǔ)有所 述物理地址;如果查找到,則停止到所述閃存中的數(shù)據(jù)記錄區(qū)中的相應(yīng)物理地址處獲取數(shù)據(jù);如果未查找到,則執(zhí)行步驟S404,以所述物理地址為索引到所述閃存中的數(shù)據(jù)記 錄區(qū)中的相應(yīng)物理地址處獲取數(shù)據(jù)。本發(fā)明實(shí)施例,采用數(shù)據(jù)記錄區(qū)、日志區(qū)以及日志摘要區(qū)的Flash存儲(chǔ)架構(gòu),減少 了對(duì)Flash存儲(chǔ)空間的占用,并且各區(qū)均采用順序存儲(chǔ)的方式存儲(chǔ),使數(shù)據(jù)維護(hù)操作簡(jiǎn)單, 同時(shí)本發(fā)明實(shí)施例利用布隆過(guò)濾器數(shù)據(jù)存儲(chǔ)日志摘要,可提高數(shù)據(jù)查詢效率。相應(yīng)的,本發(fā)明實(shí)施例提供了數(shù)據(jù)查找裝置,該裝置可用于實(shí)現(xiàn)上述的數(shù)據(jù)查找 方法,具體的圖5是本發(fā)明實(shí)施例的數(shù)據(jù)查找裝置的一實(shí)施例結(jié)構(gòu)組成示意圖,如圖5所 示,本實(shí)施例的裝置至少包括摘要查找單元50、日志查找單元52以及數(shù)據(jù)查找單元54,其 中摘要查找單元50,用于根據(jù)數(shù)據(jù)的標(biāo)識(shí)查找閃存中的日志摘要區(qū)的布隆過(guò)濾器 數(shù)據(jù),并根據(jù)查找到的布隆過(guò)濾器數(shù)據(jù)確定數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在日志區(qū)域中的位 置;仍參考圖5,摘要查找單元50包括計(jì)算單元501和遍歷查找單元503,其中計(jì)算單元501,用于利用所述數(shù)據(jù)的標(biāo)識(shí)及多個(gè)哈希函數(shù)計(jì)算出第二布隆過(guò)濾器 數(shù)據(jù),所述第二布隆過(guò)濾器數(shù)據(jù)包括多個(gè)布隆過(guò)濾器數(shù)據(jù);遍歷查找單元503,用于遍歷所述日志摘要區(qū)中的布隆過(guò)濾器數(shù)據(jù),查找是否存在 所述第二布隆過(guò)濾器數(shù)據(jù)指示的位均為1的第一布隆過(guò)濾器數(shù)據(jù),如果是,則確定出所述 數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在所述日志區(qū)域中的位置。具體的,遍歷查找單元503可從不 同物理頁(yè)中依次提取出一個(gè)布隆過(guò)濾器數(shù)據(jù)的每一位,當(dāng)每提取出一位,如果該位為所述 第二布隆過(guò)濾器指示的位,則判斷該位是否為1,如果是繼續(xù)提取該布隆過(guò)濾器數(shù)據(jù)的下一 位;當(dāng)遍歷完一個(gè)布隆過(guò)濾器數(shù)據(jù),采用相同的方式遍歷下一個(gè)布隆過(guò)濾器數(shù)據(jù),直到遍歷 完所述日志摘要區(qū)中的布隆過(guò)濾器數(shù)據(jù)。日志查找單元52,用于根據(jù)所述確定的位置,在所述日志區(qū)域中查找包含所述數(shù) 據(jù)的標(biāo)識(shí)的日志信息,并獲得所述日志信息中的物理地址;數(shù)據(jù)查找單元54,用于以所述物理地址為索引到所述閃存中的數(shù)據(jù)記錄區(qū)中的相 應(yīng)物理地址處獲取數(shù)據(jù)。較佳的,本實(shí)施例的數(shù)據(jù)查找裝置還包括刪除查找單元56,用于以所述物理地址為索引查找所述閃存中的數(shù)據(jù)刪除區(qū)中是 否存儲(chǔ)有所述物理地址;
如果查找到,則停止到所述閃存中的數(shù)據(jù)記錄區(qū)中的相應(yīng)物理地址處獲取數(shù)據(jù);如果未查找到,則通知所述數(shù)據(jù)查找單元54以所述物理地址為索引到所述閃存 中的數(shù)據(jù)記錄區(qū)中的相應(yīng)物理地址處獲取數(shù)據(jù)。具體實(shí)現(xiàn)中,該刪除查找單元56可選。本發(fā)明實(shí)施例,采用數(shù)據(jù)記錄區(qū)、日志區(qū)以及日志摘要區(qū)的Flash存儲(chǔ)架構(gòu),減少 了對(duì)Flash存儲(chǔ)空間的占用,并且各區(qū)均采用順序存儲(chǔ)的方式存儲(chǔ),使數(shù)據(jù)維護(hù)操作簡(jiǎn)單, 同時(shí)本發(fā)明實(shí)施例利用布隆過(guò)濾器數(shù)據(jù)存儲(chǔ)日志摘要,可提高數(shù)據(jù)查詢效率。需要說(shuō)明的是,通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解 到本發(fā)明可借助軟件加必需的硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以全部通過(guò)硬件來(lái)實(shí)施。 基于這樣的理解,本發(fā)明的技術(shù)方案對(duì)背景技術(shù)做出貢獻(xiàn)的全部或者部分可以以軟件產(chǎn)品 的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤(pán)等,包 括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行 本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來(lái)限定本發(fā)明之權(quán)利范 圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
權(quán)利要求
一種數(shù)據(jù)存儲(chǔ)處理方法,其特征在于,包括將數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)記錄區(qū);將所述數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí)形成日志信息,并將所述日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū);為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并將所述布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要區(qū)。
2.如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)處理方法,其特征在于,所述將所述數(shù)據(jù)在所述數(shù)據(jù) 記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí)形成日志信息,并將所述日志信息以順序存儲(chǔ)的方 式寫(xiě)入到閃存中的日志區(qū)包括將所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí)形成日志信息存入內(nèi)存中的日志 緩沖區(qū);將所述日志緩沖區(qū)中的日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū)。
3.如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)處理方法,其特征在于,所述為所述日志區(qū)中的日志 構(gòu)建布隆過(guò)濾器數(shù)據(jù),并將所述布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要 區(qū)包括為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并將所述布隆過(guò)濾器數(shù)據(jù)存入內(nèi)存 中的日志摘要緩沖區(qū);將所述日志摘要緩沖區(qū)中的布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志 摘要區(qū)。
4.如權(quán)利要求3所述的數(shù)據(jù)存儲(chǔ)處理方法,其特征在于,所述將所述日志摘要緩沖區(qū) 中的布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志摘要區(qū)包括將所述日志摘要緩沖區(qū)的一頁(yè)中的每個(gè)布隆過(guò)濾器數(shù)據(jù)均劃分為四段,將每個(gè)布隆過(guò) 濾器數(shù)據(jù)的第一段到第四段數(shù)據(jù)以順序存儲(chǔ)的方式分別按列寫(xiě)入到閃存中的日志摘要區(qū) 的四個(gè)物理頁(yè)中,直到所述四個(gè)物理頁(yè)被寫(xiě)滿;將所述四個(gè)物理頁(yè)中每個(gè)物理頁(yè)包含的每個(gè)塊再次劃分為四段,將每個(gè)塊的四段數(shù)據(jù) 的第一段到第四段以順序存儲(chǔ)的方式分別按列寫(xiě)入到閃存中的日志摘要區(qū)的四個(gè)新的物 理頁(yè)中,直到新的物理頁(yè)再次被寫(xiě)滿;依此類(lèi)推,直到將所述日志摘要緩沖區(qū)中一個(gè)布隆過(guò) 濾器數(shù)據(jù)的每一位分別寫(xiě)入到所述閃存的日志摘要區(qū)的不同物理頁(yè)中。
5.一種數(shù)據(jù)查找方法,其特征在于,包括根據(jù)數(shù)據(jù)的標(biāo)識(shí)查找閃存中的日志摘要區(qū)的布隆過(guò)濾器數(shù)據(jù),并根據(jù)查找到的布隆過(guò) 濾器數(shù)據(jù)確定數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在日志區(qū)域中的位置;根據(jù)所述確定的位置,在所述日志區(qū)域中查找包含所述數(shù)據(jù)的標(biāo)識(shí)的日志信息,并獲 得所述日志信息中的物理地址;以所述物理地址為索引到所述閃存中的數(shù)據(jù)記錄區(qū)中的相應(yīng)物理地址處獲取數(shù)據(jù)。
6.如權(quán)利要求5所述的數(shù)據(jù)查找方法,其特征在于,所述根據(jù)數(shù)據(jù)的標(biāo)識(shí)查找閃存中 的日志摘要區(qū)的布隆過(guò)濾器數(shù)據(jù),并根據(jù)查找到的布隆過(guò)濾器數(shù)據(jù)確定數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的 日志信息在日志區(qū)域中的位置包括利用所述數(shù)據(jù)的標(biāo)識(shí)及多個(gè)哈希函數(shù)計(jì)算出第二布隆過(guò)濾器數(shù)據(jù),所述第二布隆過(guò)濾 器數(shù)據(jù)包括多個(gè)布隆過(guò)濾器數(shù)據(jù);遍歷所述日志摘要區(qū)中的布隆過(guò)濾器數(shù)據(jù),查找是否存在所述第二布隆過(guò)濾器數(shù)據(jù)指 示的位均為1的第一布隆過(guò)濾器數(shù)據(jù),如果是,則根據(jù)所述第一布隆過(guò)濾器數(shù)據(jù)確定出所 述數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在所述日志區(qū)域中的位置。
7.如權(quán)利要求6所述的數(shù)據(jù)查找方法,其特征在于,所述遍歷所述日志摘要區(qū)中的布 隆過(guò)濾器數(shù)據(jù),查找是否存在所述多個(gè)布隆過(guò)濾器數(shù)據(jù)指示的位均為1的第一布隆過(guò)濾器 數(shù)據(jù)包括從不同物理頁(yè)中依次提取出一個(gè)布隆過(guò)濾器數(shù)據(jù)的每一位,當(dāng)每提取出一位,如果該 位為所述第二布隆過(guò)濾器指示的位,則判斷該位是否為1,如果是繼續(xù)提取該布隆過(guò)濾器數(shù) 據(jù)的下一位;當(dāng)遍歷完一個(gè)布隆過(guò)濾器數(shù)據(jù),采用相同的方式遍歷下一個(gè)布隆過(guò)濾器數(shù)據(jù),直到遍 歷完所述日志摘要區(qū)中的布隆過(guò)濾器數(shù)據(jù)。
8.一種數(shù)據(jù)存儲(chǔ)處理裝置,其特征在于,包括記錄處理單元,用于將數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)記錄區(qū);日志處理單元,用于將所述數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí)形 成日志信息,并將所述日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū);日志摘要處理單元,用于為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并將所述 布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要區(qū)。
9.如權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)處理裝置,其特征在于,所述日志處理單元包括第一緩沖處理單元,用于將所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí)形成日志 信息存入內(nèi)存中的日志緩沖區(qū);日志寫(xiě)入單元,用于將所述日志緩沖區(qū)中的日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中 的日志區(qū)。
10.如權(quán)利要求9所述的數(shù)據(jù)存儲(chǔ)處理裝置,其特征在于,所述日志摘要處理單元包括第二緩沖處理單元,用于為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并將所述 布隆過(guò)濾器數(shù)據(jù)存入內(nèi)存中的日志摘要緩沖區(qū);摘要寫(xiě)入單元,用于將所述日志摘要緩沖區(qū)中的布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě) 入到閃存中的日志摘要區(qū)。
11.如權(quán)利要求10所述的數(shù)據(jù)存儲(chǔ)處理裝置,其特征在于,所述摘要寫(xiě)入單元用于將 所述日志摘要緩沖區(qū)的一頁(yè)中的每個(gè)布隆過(guò)濾器數(shù)據(jù)均劃分為四段,將每個(gè)布隆過(guò)濾器數(shù) 據(jù)的第一段到第四段數(shù)據(jù)以順序存儲(chǔ)的方式分別按列寫(xiě)入到閃存中的日志摘要區(qū)的四個(gè) 物理頁(yè)中,直到所述四個(gè)物理頁(yè)被寫(xiě)滿;將所述四個(gè)物理頁(yè)中每個(gè)物理頁(yè)包含的每個(gè)塊再 次劃分為四段,將每個(gè)塊的四段數(shù)據(jù)的第一段到第四段以順序存儲(chǔ)的方式分別按列寫(xiě)入到 閃存中的日志摘要區(qū)的四個(gè)新的物理頁(yè)中,直到新的物理頁(yè)再次被寫(xiě)滿;依此類(lèi)推,直到將 所述日志摘要緩沖區(qū)中一個(gè)布隆過(guò)濾器數(shù)據(jù)的每一位分別寫(xiě)入到所述閃存的日志摘要區(qū) 的不同物理頁(yè)中。
12.—種數(shù)據(jù)查找裝置,其特征在于,包括摘要查找單元,用于根據(jù)數(shù)據(jù)的標(biāo)識(shí)查找閃存中的日志摘要區(qū)的布隆過(guò)濾器數(shù)據(jù),并 根據(jù)查找到的布隆過(guò)濾器數(shù)據(jù)確定數(shù)據(jù)的標(biāo)識(shí)對(duì)應(yīng)的日志信息在日志區(qū)域中的位置;日志查找單元,用于根據(jù)所述確定的位置,在所述日志區(qū)域中查找包含所述數(shù)據(jù)的標(biāo) 識(shí)的日志信息,并獲得所述日志信息中的物理地址;數(shù)據(jù)查找單元,用于以所述物理地址為索引到所述閃存中的數(shù)據(jù)記錄區(qū)中的相應(yīng)物理 地址處獲取數(shù)據(jù)。
13.如權(quán)利要求12所述的數(shù)據(jù)查找方法,其特征在于,所述摘要查找單元包括計(jì)算單元,用于利用所述數(shù)據(jù)的標(biāo)識(shí)及多個(gè)哈希函數(shù)計(jì)算出第二布隆過(guò)濾器數(shù)據(jù),所述第二布隆過(guò)濾器數(shù)據(jù)包括多個(gè)布隆過(guò)濾器數(shù)據(jù);遍歷查找單元,用于遍歷所述日志摘要區(qū)中的布隆過(guò)濾器數(shù)據(jù),查找是否存在所述第二布隆過(guò)濾器數(shù)據(jù)指示的位均為1的第一布隆過(guò)濾器數(shù)據(jù),如果是,則確定出所述數(shù)據(jù)的 標(biāo)識(shí)對(duì)應(yīng)的日志信息在所述日志區(qū)域中的位置。
14.如權(quán)利要求13所述的數(shù)據(jù)查找方法,其特征在于,所述遍歷查找單元用于從不同物理頁(yè)中依次提取出一個(gè)布隆過(guò)濾器數(shù)據(jù)的每一位,當(dāng)每提取出一位,如果該位為所述第 二布隆過(guò)濾器指示的位,則判斷該位是否為1,如果是繼續(xù)提取該布隆過(guò)濾器數(shù)據(jù)的下一 位;當(dāng)遍歷完一個(gè)布隆過(guò)濾器數(shù)據(jù),采用相同的方式遍歷下一個(gè)布隆過(guò)濾器數(shù)據(jù),直到遍歷 完所述日志摘要區(qū)中的布隆過(guò)濾器數(shù)據(jù)。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種數(shù)據(jù)存儲(chǔ)處理方法、查找方法及其裝置,其中,所述數(shù)據(jù)存儲(chǔ)處理方法包括將數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中的數(shù)據(jù)記錄區(qū);將所述數(shù)據(jù)在所述數(shù)據(jù)記錄區(qū)中的物理地址及所述數(shù)據(jù)的標(biāo)識(shí)形成日志信息,并將所述日志信息以順序存儲(chǔ)的方式寫(xiě)入到閃存中的日志區(qū);為所述日志區(qū)中的日志信息構(gòu)建布隆過(guò)濾器數(shù)據(jù),并將所述布隆過(guò)濾器數(shù)據(jù)以順序存儲(chǔ)的方式寫(xiě)入到閃存中日志摘要區(qū)。本發(fā)明實(shí)施例,采用數(shù)據(jù)記錄區(qū)、日志區(qū)以及日志摘要區(qū)的Flash存儲(chǔ)架構(gòu),減少了對(duì)Flash存儲(chǔ)空間的占用,并且各區(qū)均采用順序存儲(chǔ)的方式存儲(chǔ),使數(shù)據(jù)維護(hù)操作簡(jiǎn)單,同時(shí)本發(fā)明實(shí)施例利用布隆過(guò)濾器數(shù)據(jù)存儲(chǔ)日志摘要,可提高數(shù)據(jù)查詢效率。
文檔編號(hào)G06F12/02GK101799783SQ20091003673
公開(kāi)日2010年8月11日 申請(qǐng)日期2009年1月19日 優(yōu)先權(quán)日2009年1月19日
發(fā)明者孟小峰, 饒興 申請(qǐng)人:中國(guó)人民大學(xué);華為技術(shù)有限公司