一種面向單機(jī)的海量小記錄高效存儲(chǔ)管理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種在單一計(jì)算機(jī)上高效存儲(chǔ)海量小記錄的存儲(chǔ)管理方法,屬于信息 存儲(chǔ)相關(guān)技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,尤其是大數(shù)據(jù)時(shí)代的來臨,信息化社會(huì)的諸多領(lǐng)域產(chǎn)生 了海量的數(shù)據(jù),并且呈爆炸式增長。海量存儲(chǔ)的需求面臨嚴(yán)峻考驗(yàn),這使得數(shù)據(jù)存儲(chǔ)管理技 術(shù)在信息系統(tǒng)中所處地位也越來越重要。
[0003] 在很多應(yīng)用系統(tǒng)中,經(jīng)常需要在單機(jī)環(huán)境下管理大規(guī)模的日志記錄。比較典型的 場景是安全審計(jì)記錄。這種場景具有如下特點(diǎn):
[0004] 1)這種記錄的單條記錄通常比較小。比如在信息安全中的審計(jì)日志記錄,平均每 條記錄僅有幾百個(gè)字節(jié);
[0005] 2)數(shù)量巨大。通常單機(jī)需要管理的日志數(shù)量達(dá)到幾十億條甚至更多,存儲(chǔ)容量達(dá) 到TB級(jí)甚至更大;
[0006] 3)效率要求高。對(duì)入庫效率要求非常高,達(dá)到每秒鐘上萬條條甚至更多的記錄。 而這種環(huán)境下的計(jì)算機(jī)處理能力通常還比較弱。
[0007] 4)數(shù)據(jù)操作簡單。一般為數(shù)據(jù)順序入庫,需要支持支持隨機(jī)讀取。不需要支持中 間插入操作,記錄更新頻率較低,不需要支持事務(wù)。
[0008] 在這種環(huán)境下,使用傳統(tǒng)關(guān)系型數(shù)據(jù)庫系統(tǒng)無論是在數(shù)據(jù)存儲(chǔ)規(guī)模,還是入庫效 率等方面都不能滿足要求。而直接存儲(chǔ)于文件系統(tǒng)又將導(dǎo)致大量磁盤碎片的產(chǎn)生。所以有 必要開發(fā)一種單機(jī)環(huán)境下面向海量小記錄的高效存儲(chǔ)管理技術(shù)。
[0009] 在現(xiàn)有的NoSQL的研宄中,對(duì)于海量數(shù)據(jù)的存儲(chǔ)采用多機(jī)分布式的分片管理技 術(shù),不適合本發(fā)明所針對(duì)的單機(jī)環(huán)境。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明的主要目的在于針對(duì)現(xiàn)有存儲(chǔ)方法無法滿足單機(jī)環(huán)境中海量小記錄存儲(chǔ) 管理的需求的問題,提出一種面向單機(jī)的海量小記錄高效存儲(chǔ)管理方法,使得能夠在單一 計(jì)算機(jī)上高效的接收并存儲(chǔ)大規(guī)模的小記錄。
[0011] 為達(dá)到上述目的,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:
[0012] -種面向單機(jī)的海量小記錄高效存儲(chǔ)管理方法,該方法至少包括如下幾項(xiàng)內(nèi)容:
[0013] A.數(shù)據(jù)接收及緩存:接收小記錄數(shù)據(jù),為避免頻繁I/O請(qǐng)求以及造成磁盤碎片,先 將記錄存儲(chǔ)在內(nèi)存緩沖區(qū)中;
[0014] B.自動(dòng)分塊:所述內(nèi)存緩沖區(qū)無法容納新記錄時(shí),將所述內(nèi)存緩沖區(qū)中的數(shù)據(jù)寫 入到磁盤存儲(chǔ)器中,并清空所述內(nèi)存緩沖區(qū)以寫入新的所述接收的新記錄。為防止單個(gè)文 件太大影響I/O性能,限制每個(gè)數(shù)據(jù)文件的大小閾值。如果當(dāng)前分塊文件大小超過所述閾 值,自動(dòng)新建分塊文件,并將新數(shù)據(jù)將寫入到新分塊文件中;
[0015] C.樹狀目錄生成:為防止當(dāng)個(gè)目錄下文件太多影響I/O性能,限制每個(gè)文件夾下 面的文件總數(shù),以簡化的樹管理算法實(shí)現(xiàn)文件夾和分塊文件的樹狀組織;
[0016] D.記錄標(biāo)識(shí):采用特殊標(biāo)識(shí)直接記錄每個(gè)記錄的物理地址,方便記錄的訪問。
[0017] 優(yōu)選的:
[0018] 所述內(nèi)存緩沖區(qū)的大小可配置。
[0019] 所述塊文件動(dòng)態(tài)生成過程包括以下步驟:
[0020] 步驟1.如果沒有當(dāng)前分塊文件cFile,由樹狀目錄生成算法獲取當(dāng)前工作目錄 cPath,在cPath中生成分塊文件,將該塊文件作為當(dāng)前塊文件cFile,結(jié)束;
[0021] 步驟2.如果cFile剩余空間足以寫入所述內(nèi)存緩沖區(qū)的數(shù)據(jù),結(jié)束;
[0022] 步驟3.如果當(dāng)前目錄cPath中塊文件總數(shù)沒有超過預(yù)定閾值,則在當(dāng)前目錄中生 成分塊文件,并將該塊文件作為當(dāng)前工作塊文件cFile,結(jié)束;
[0023] 步驟4.由樹的樹狀目錄生成算法生成新的存儲(chǔ)目錄,將新的存儲(chǔ)目錄作為當(dāng)前 目錄cPath,在cPath中生成塊文件,并將該塊文件作為當(dāng)前塊文件cFile。
[0024] 所述樹狀目錄結(jié)構(gòu)可以采用B-樹、B+樹或AVL樹結(jié)構(gòu);樹狀目錄結(jié)構(gòu)的階數(shù),單 個(gè)文件夾下的文件夾的數(shù)量、塊文件的數(shù)量和大小均是可配置的。
[0025] 所述的樹狀目錄生成算法可以采用簡化的B-樹、B+樹或AVL樹生成算法。簡化 的算法充分利用數(shù)據(jù)順序插入的特征,避免樹的旋轉(zhuǎn)操作。
[0026] 所述每一條記錄被添加一個(gè)標(biāo)識(shí),所述標(biāo)識(shí)由分塊文件編號(hào)以及塊內(nèi)偏移組成。 根據(jù)所述的分塊文件標(biāo)識(shí)可以定位到分塊文件路徑,根據(jù)所述塊內(nèi)偏移可以定位到記錄 在塊文件內(nèi)部的起始位置。從而由所述記錄標(biāo)識(shí)可以直接定位記錄的物理地址,方便記錄 的隨機(jī)訪問。
[0027] 有益效果
[0028] 本發(fā)明提供的方法具有如下優(yōu)勢:
[0029] 1)更高的性能。本發(fā)明提出了一種基于單機(jī)實(shí)現(xiàn)海量小記錄的存儲(chǔ)管理方法。利 用操作系統(tǒng)的文件目錄結(jié)構(gòu)實(shí)現(xiàn)自動(dòng)生長的樹結(jié)構(gòu),在此樹結(jié)構(gòu)上實(shí)現(xiàn)動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)和 維護(hù),可以達(dá)到恒定的高寫入速度,同時(shí)降低存儲(chǔ)對(duì)硬件性能的要求。
[0030]2)更容易管理海量數(shù)據(jù)。通過自動(dòng)分片和自動(dòng)的目錄管理,可以很方便的實(shí)現(xiàn)數(shù) 據(jù)的備份、刪除等管理。
[0031] 3)更好的處理復(fù)雜數(shù)據(jù)類型的能力。本發(fā)明可以根據(jù)用戶應(yīng)用領(lǐng)域的不同,以實(shí) 際需要為導(dǎo)向定制每條記錄的字段,從而增強(qiáng)了本發(fā)明處理復(fù)雜數(shù)據(jù)類型的能力。
【附圖說明】
[0032] 圖1是本發(fā)明實(shí)施例的樹型存儲(chǔ)結(jié)構(gòu)示意圖;
[0033] 圖2是本發(fā)明實(shí)施例的工作流程示意圖;
[0034] 圖3是本發(fā)明實(shí)施例的數(shù)據(jù)緩沖區(qū)域示意圖;
[0035] 圖4是本發(fā)明實(shí)施例的數(shù)據(jù)緩存流程圖;
[0036] 圖5是本發(fā)明實(shí)施例的塊文件生成流程圖;
[0037] 圖6是本發(fā)明實(shí)施例的B-樹樹狀目錄生成示意圖;
[0038] 圖7是本發(fā)明實(shí)施例的B+樹樹狀目錄生成示意圖。
【具體實(shí)施方式】
[0039] 下面詳細(xì)描述中以實(shí)例的方式給出了許多具體細(xì)節(jié),以確保對(duì)本發(fā)明技術(shù)方法的 透徹理解。但是,對(duì)于知道本領(lǐng)域基本常識(shí)的人,能夠理解沒有這些具體細(xì)節(jié),本發(fā)明的實(shí) 施例也能實(shí)現(xiàn)。另外,沒有詳細(xì)描述眾所周知的方法、過程、部件和電路,以避免本發(fā)明的實(shí) 現(xiàn)變得不清楚。
[0040] 本發(fā)明的基本思想是:將小記錄首先寫入內(nèi)存緩沖區(qū),當(dāng)內(nèi)存緩沖區(qū)滿時(shí)將緩沖 區(qū)內(nèi)容寫入到塊文件中;塊文件被分散到自動(dòng)生成的樹狀文件目錄結(jié)構(gòu)中。
[0041] 如圖2所示,本發(fā)明具體工作流程如下:
[0042] 1、接收用戶提交的新記錄;
[0043] 2、生成記錄標(biāo)識(shí),采用特殊標(biāo)識(shí)直接記錄每個(gè)記錄的物理地址,方便記錄的訪 問;