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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。