The invention provides a file storage and indexing method, device and file method, which includes the file storage and indexing method: according to the actual key file storage in alphabetical order of the values of each file, data file; generate index files, each file index data file which N bytes the actual key index file index using each file value as the key value, each index point to one or more files in the data file, the key value of the corresponding offset value offset the first document one or more files to the key value, key value corresponding to size value the first file one or more files to the size value of key. The invention solves the problem that the indexing scheme adopted by the Haystack system consumes large memory resources, and reduces the consumption of memory resources by the indexing system.
【技術實現步驟摘要】
文件存儲和索引方法、裝置及讀取文件的方法
本專利技術涉及文件存儲及索引領域,具體而言,涉及一種文件存儲和索引方法、裝置及讀取文件的方法。
技術介紹
當今互聯網,數據呈現爆炸式增長,社交網絡、移動通信、網絡視頻、電子商務等各種應用往往能產生億級甚至十億、百億級的海量小文件。由于在元數據管理、訪問性能、存儲效率等方面面臨巨大的挑戰,海量小文件問題成為了業界公認的難題。業界的一些知名互聯網公司,也對海量小文件提出了解決方案,例如:著名的社交網站Facebook,存儲了超過600億張圖片,專門推出了Haystack系統,針對海量小圖片進行定制優化的存儲。其他的小文件處理方案還有淘寶的TFS等,這些系統的核心思想都是將小文件追加到一個數據文件中,同時生成索引文件,通過索引文件來定位小文件的位置。下面介紹Facebook采用的Haystack的解決方案:Facebook的Haystack對小文件的解決辦法是,把小文件合起來。將一些小文件的數據依次追加到數據文件中,并且生成索引文件,通過索引來查找小文件在數據文件中的offset和size,對文件進行讀取。(1)Haystack的數據文件部分:Haystack的數據文件,將每個小文件封裝成一個needle,包含文件的key、size、data等數據信息。所有小文件按寫入的先后順序追加到數據文件中。(2)Haystack的索引文件部分:Haystack的索引文件保存每個needle的key,以及該needle在數據文件中的offset、size等信息。程序啟動時會將索引加載到內存中,在內存中通過查找索引,來定位在數據文件中 ...
【技術保護點】
一種文件存儲和索引方法,其特征在于包括:按照文件的實際key值的字母順序存儲各文件,得到數據文件;生成用于索引所述數據文件中各文件的索引文件,其中,所述索引文件中的索引使用各文件的實際key值的前N字節作為key值,每個索引指向所述數據文件中的一個或者多個文件,所述key值對應的offset值為所述key值指向的一個或者多個文件中首個文件的offset值,所述key值對應的size值為所述key值指向的一個或者多個文件中首個文件的size值,N為正整數。
【技術特征摘要】
1.一種文件存儲和索引方法,其特征在于包括:按照文件的實際key值的字母順序存儲各文件,得到數據文件;生成用于索引所述數據文件中各文件的索引文件,其中,所述索引文件中的索引使用各文件的實際key值的前N字節作為key值,每個索引指向所述數據文件中的一個或者多個文件,所述key值對應的offset值為所述key值指向的一個或者多個文件中首個文件的offset值,所述key值對應的size值為所述key值指向的一個或者多個文件中首個文件的size值,N為正整數。2.根據權利要求1所述的方法,其特征在于,所述索引文件中的offset字段和size字段是通過512字節對齊的。3.根據權利要求1所述的方法,其特征在于,生成用于索引所述數據文件中各文件的索引文件還包括:按照key值前綴分層存儲所述索引文件的索引,其中,所述key值前綴對應的分層中存儲的索引的key值為截去所述key值前綴的簡短key值,其中,所述key值前綴的字節長度小于N。4.根據權利要求3所述的方法,其特征在于,所述索引文件的索引的offset值是以所述索引所在分層為偏移范圍的層內offset值,所述層內offset值的字節數是根據分層的最大層地址空間確定的。5.根據權利要求1至4中任一項所述的方法,其特征在于,所述方法還包括:將所述數據文件中的所有文件映射到bloomfilter中,以使讀取所述數據文件中的文件時通過快速搜索所述bloomfilter來判斷將要讀取的文件是否可能存在。6.一種文件存儲和索引裝置,其特征在于包括:數據文件存儲模塊,用于存儲數據文件,其中,所述數據文件是按照文件的實際key值的字母順序存儲各文件所得到的;索引文件生成模塊,用于生成用于索引所述數據文件中各文件的索引文件,其中,所述索引文件中的索引使用各文件的實際key值的前N字節作為key值,每個索引指向所述數據文件中的一個...
【專利技術屬性】
技術研發人員:陳闖,張炎潑,
申請(專利權)人:貴州白山云科技有限公司,
類型:發明
國別省市:北京,11
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。