[發(fā)明專利]一種面向海量小文件存儲系統(tǒng)的Key-Value存儲方法無效
| 申請?zhí)枺?/td> | 201310688270.1 | 申請日: | 2013-12-16 |
| 公開(公告)號: | CN103617293A | 公開(公告)日: | 2014-03-05 |
| 發(fā)明(設計)人: | 王雷;王振;王平 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 面向 海量 文件 存儲系統(tǒng) key value 存儲 方法 | ||
技術領域
本發(fā)明涉及分海量小文件存儲領域,具體涉及一種面向海量小文件存儲系統(tǒng)的Key-Value存儲方法。
背景技術
近年來,社交網(wǎng)站如Facebook、Twitter、人人網(wǎng)和電子商務網(wǎng)站e-Bay、阿里巴巴等網(wǎng)絡服務發(fā)展迅速,這類服務都需要存儲大量圖片、短文本等小文件。小文件通常指文件大小小于64M的文件,例如互聯(lián)網(wǎng)應用經(jīng)常需要存儲的圖片、郵件、電子書、音樂文件、微博、文本內(nèi)容等。
小文件存儲逐漸在學術界和工業(yè)界引起了一些關注。社交網(wǎng)站Facebook存儲了2600億張圖片,容量超過20PB,這些文件絕大部分都小于64MB。在超級計算機領域,例如,ORNL’s?CrayXT5集群(18688個節(jié)點,每個節(jié)點12個處理器)上的應用程序會周期性地將應用狀態(tài)寫入文件,導致系統(tǒng)累積大量的小文件。在具體科研計算環(huán)境中,例如某些生物學計算中,可能產(chǎn)生3000萬個文件,而其平均大小只有190KB。美國西北太平洋國家實驗室發(fā)表于2007年的一份研究報告數(shù)據(jù)表明,該實驗室所使用的系統(tǒng)中存儲了1200萬個文件,其中小于64MB的文件占文件總數(shù)的94%,小于64KB的占58%。音樂網(wǎng)站巨鯨網(wǎng)已經(jīng)收錄了360萬MP3格式的音樂文件。各種資料都表明,互聯(lián)網(wǎng)上訪問的數(shù)據(jù)多為高訪問頻率的小文件。
小文件的檢索信息是通過保存Key-Value鍵值對來實現(xiàn)的,通常使用NoSQL數(shù)據(jù)庫(如Redis和LevelDB)。然而LevelDB和Redis等主流Key-Value存儲引擎在存儲檢索信息時效果不好。原因如下:
1.小文件存儲系統(tǒng)記錄的value數(shù)據(jù)格式固定,大小統(tǒng)一,相對于Redis適用于各種數(shù)據(jù)結構,小文件存儲系統(tǒng)可以針對特定應用簡化數(shù)據(jù)結構,減少了對數(shù)據(jù)結構進行打包和解析的操作,并避免實現(xiàn)通信協(xié)議,從而節(jié)省CPU開銷,降低延遲。
2.Redis系統(tǒng)主要針對將數(shù)據(jù)緩存在內(nèi)存中的應用。Redis可以配置持久化功能,但小文件存儲系統(tǒng)可以針對其特定應用,能夠更好地支持持久化。
3.LevelDB是單機版持久化Key-Value存儲引擎,但LevelDB使用內(nèi)存中的MemTable和磁盤上的Level文件塊來降低寫入時的延遲,但對于讀請求,LevelDB可能需要多次磁盤操作(最多要讀6次以上磁盤文件),因此LevelDB非常適合于寫多讀少的情況。而在真實的互聯(lián)網(wǎng)應用中,如Facebook網(wǎng)站上的相冊或者淘寶網(wǎng)上商品照片,其應用特征為一次寫入,多次讀取,因此LevelDB也不適合小文件存儲系統(tǒng)中保存檢索信息。
發(fā)明內(nèi)容
本發(fā)明提出了一種面向小文件存儲系統(tǒng)的輕量級可持久化的Key-Value存儲引擎KVDB。
KVDB結構設計如圖1。KVDB包括兩個部分,內(nèi)存中的HashTable結構和磁盤上的持久化存儲Store。
HashTable類圖如圖2。DictEntry用來表示上圖中的哈希表的一個條目。使用鏈表法解決哈希沖突。HashTable保存了用于檢索的key和value在Store中的位置。
Store用于存放value內(nèi)容,Store可以寫入一個value內(nèi)容,并返回該value內(nèi)容在Store內(nèi)部的偏移量,或者給定一個起始位置,Store可以讀取出一個value內(nèi)容。Store的類圖如圖3。在KVDB中,所有要保存的這些數(shù)據(jù)結構類型,都必須能夠進行序列化和反序列化(serialize和deserialize),以便Store類將該數(shù)據(jù)結構存放在磁盤進行持久化。Store類對應一個磁盤文件,該類包含一個指向該磁盤文件的句柄和一些統(tǒng)計信息,所有要保存的數(shù)據(jù)結構都寫入這個磁盤中,同時Store提供讀寫接口函數(shù)。為提供斷電恢復功能,Store還提供了一個從磁盤中加載的接口函數(shù)。為提高讀取速度,Store中用于存放value內(nèi)容的文件在加載時,通過mmap函數(shù)將文件內(nèi)容映射到內(nèi)存中。這樣,訪問Store對應的磁盤文件時,通常都可以在內(nèi)存中訪問到。
KVDB的類圖如圖4。KVDB公開的接口包括構造函數(shù),初始化函數(shù)init,格式化函數(shù)format,寫入一條key-value鍵值對put函數(shù),讀取一條key-value鍵值對get函數(shù)。
附圖說明
圖1是KVDB的結構圖
圖2是KVDB的HashTable類圖
圖3是KVDB中的Store類圖
圖4是KVDB類圖
具體實施方式
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經(jīng)北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310688270.1/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種數(shù)據(jù)庫海量數(shù)據(jù)比對的方法
- 基于云計算的海量數(shù)據(jù)訪問處理系統(tǒng)
- 一種實現(xiàn)海量數(shù)據(jù)離線分析的方法
- 一種海量矢量切片數(shù)據(jù)云存儲方法及系統(tǒng)
- 一種多源海量數(shù)據(jù)處理系統(tǒng)及方法
- 快速實現(xiàn)海量數(shù)據(jù)準實時全量統(tǒng)計的方法、裝置及系統(tǒng)
- 一種海量數(shù)據(jù)分析系統(tǒng)及方法
- 在線繪制地圖海量線的方法
- 一種海量點數(shù)據(jù)聚合渲染方法、裝置、設備及存儲介質(zhì)
- 一種海量不確定XML數(shù)據(jù)存儲方法





