CN105069048A - 一种小文件存储方法、查询方法和装置 - Google Patents
一种小文件存储方法、查询方法和装置 Download PDFInfo
- Publication number
- CN105069048A CN105069048A CN201510438056.XA CN201510438056A CN105069048A CN 105069048 A CN105069048 A CN 105069048A CN 201510438056 A CN201510438056 A CN 201510438056A CN 105069048 A CN105069048 A CN 105069048A
- Authority
- CN
- China
- Prior art keywords
- small documents
- file
- index
- cryptographic hash
- filename
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种小文件存储方法、查询方法和装置,小文件存储方法包括:获取待存储的小文件;其中,该小文件包括文件大小小于预设阈值的文件;将获取到的小文件存储到当前的打包文件中,并生成小文件的元数据;小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;根据小文件的文件名计算小文件的属性值,其中,该属性值包括:文件名哈希值;将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子***。通过本发明,利用文件名哈希值替代现有技术中索引文件中存储的文件名,提高了索引文件的实用性和小文件的查询效率。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种小文件存储方法、查询方法和装置。
背景技术
小文件一般指大小在几千字节(KB)到几兆字节(MB)的单个文件,现有的网络上存在有大量的图片、文档等小文件,目前,用户在想要对网络上的小文件进行处理(比如:对从网络上的图片进行编辑或者修改等操作)时,需要将网络上的小文件下载到用户本地的文件***中进行存储,然后才可以对存储的小文件进行处理。
文件***在存储小文件时,一般在文件***将小文件的内容和小文件属性信息存储到打包文件后,将小文件的文件名和小文件存储打包文件之后形成的小文件元数据存储在文件***的索引子***中,作为小文件的索引文件。小文件属性信息包括:小文件的文件名、数据长度和创建时间等;小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置和小文件的数据长度。
现有的文件***中,通常小文件的索引文件存储的是小文件的文件名,在进行文件查找时,***需要使用该索引文件中的文件名与用户提供的文件名进行对比,才可以定位用户查找的小文件的位置,但是文件名一般是英文、中文和数字混合的字符串,比较复杂,也比较长,所以比对的速度较慢,导致返回给用户待处理小文件的时间较长。
发明内容
本发明的目的在于提供一种小文件存储方法、查询方法和装置,以使索引文件存储的内容更简洁、更合理,而且在查询小文件的过程中通过哈希值比对,提升查询效率。
第一方面,本发明实施例提供了一种小文件存储方法,所述方法包括:
获取待存储的小文件;其中,所述小文件包括文件大小小于预设阈值的文件;
将获取到的所述小文件存储到当前的打包文件中,并生成所述小文件的元数据;所述小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
根据所述小文件的文件名计算所述小文件的属性值,其中,所述属性值包括:文件名哈希值;
将计算得到的所述属性值和所述小文件的元数据作为所述小文件的索引文件存储到索引子***。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述方法还包括:
获取所述小文件的索引文件在所述索引子***中的位置信息;
从所述小文件的文件名哈希值中取出预设位数的数字串,作为所述小文件的快速查询信息;
将所述位置信息和所述快速查询信息在预设的快速查找表中进行关联存储。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,将计算得到的所述属性值和所述小文件的元数据作为所述小文件的索引文件存储到索引子***包括:
当索引子***中存在文件名哈希值相同的多个小文件时,为所述多个小文件建立索引链表;
存储所述多个小文件对应的所述索引链表。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,将获取到的所述小文件存储到当前的打包文件中包括:
确定获取到的所述小文件的占用量;
判断当前的打包文件的剩余存储容量是否大于所述小文件的占用量;
如果是,将所述小文件存储在所述当前的打包文件中;
如果否,生成新的打包文件存储所述小文件。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,在将获取到的所述小文件存储到当前的打包文件中,并形成小文件的元数据之前,所述方法还包括:
获取多个缓存空间对应的指针,其中,所述缓存空间用于缓存待存储的所述小文件;
根据多个缓存空间对应的指针生成所述小文件的缓存空间链表;
将获取的所述小文件缓存至所述缓存空间链表对应的多个缓存空间中。
结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,将获取到的所述小文件存储到当前的打包文件中包括:
判断所述多个缓存空间是否均写满;
如果是,将所述多个缓存空间中缓存的所述小文件写入所述打包文件中;
如果否,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;
当所述等待时间达到所述预设时间时,将所述多个缓存空间中缓存的小文件写入所述打包文件中。
结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述文件名哈希值包括:文件名的第一哈希值和第二哈希值;所述第一哈希值的长度小于所述第二哈希值的长度。
第二方面,本发明实施例提供了一种小文件查询方法,所述方法包括:
接收用户的小文件查询请求,所述小文件查询请求包括所述用户欲查询的小文件的文件名;其中,所述小文件包括文件大小小于预设阈值的文件;
根据接收到的所述小文件的文件名,计算所述小文件的文件名哈希值;
通过计算得到的所述文件名哈希值查询索引子***中的索引文件,根据查询结果定位所述小文件的位置;其中,所述索引文件包括小文件的文件名对应的属性值和所述小文件的元数据,所述属性值包括:文件名哈希值;所述元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
从定位的所述位置获取所述小文件;
将获取到的所述小文件返回给所述用户。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,通过计算得到的所述文件名哈希值查询索引子***中的索引文件,根据查询结果定位所述小文件的位置包括:
从计算得到的所述文件名哈希值中,取出预设位数的数字串,作为快速查询信息;
根据所述快速查询信息,在所述索引子***的快速查找表中,查询出所述文件名哈希值对应的小文件的索引文件在所述索引子***中的位置信息;
根据得到的所述位置信息,在所述索引子***中查询出所述索引文件;
根据查询出的所述索引文件中存储的所述小文件的元数据,定位所述小文件的位置。
结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,通过计算得到的所述文件名哈希值查询索引子***中的索引文件,根据查询结果定位所述小文件的位置还包括:
当所述文件名哈希值包括所述小文件的文件名对应的第一哈希值和第二哈希值时,通过第一哈希值查询索引子***中的索引文件;其中,所述第一哈希值的长度小于所述第二哈希值的长度;
当通过所述第一哈希值查询出多个小文件的索引文件时,根据所述第二哈希值,在所述索引子***存储的所述多个小文件对应的索引链表中,查询出所述第二哈希值对应的小文件的索引文件;
根据查询出的所述小文件的索引文件中存储的所述小文件的元数据,定位所述小文件的位置。
第三方面,本发明实施例提供了一种小文件存储装置,所述装置包括:
小文件获取模块,用于获取待存储的小文件;其中,所述小文件包括文件大小小于预设阈值的文件;
小文件存储模块,用于将获取到的所述小文件存储到当前的打包文件中,并生成所述小文件的元数据;所述小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
计算模块,用于根据所述小文件的文件名计算所述小文件的属性值,其中,所述属性值包括:文件名哈希值;
索引文件存储模块,用于将计算得到的所述属性值和所述小文件的元数据作为所述小文件的索引文件存储到索引子***。
结合第三方面,本发明实施例提供了第三方面的第一种可能的实施方式,其中,所述装置还包括:
位置信息获取单元,用于获取所述小文件的索引文件在所述索引子***中的位置信息;
快速查询信息获取模块,用于从所述小文件的文件名哈希值中取出预设位数的数字串,作为所述小文件的快速查询信息;
关联存储模块,用于将所述位置信息和所述快速查询信息在预设的快速查找表中进行关联存储。
结合第三方面,本发明实施例提供了第三方面的第二种可能的实施方式,其中,索引文件存储模块包括:
索引链表建立单元,用于当索引子***中存在文件名哈希值相同的多个小文件时,为所述多个小文件建立索引链表;
索引链表存储单元,用于存储所述多个小文件对应的所述索引链表。
结合第三方面,本发明实施例提供了第三方面的第三种可能的实施方式,其中,小文件存储模块,包括:
小文件占用量确定单元,用于确定获取到的所述小文件的占用量;
小文件占用量判断单元,用于判断当前的打包文件的剩余存储容量是否大于所述小文件的占用量;
小文件存储单元,用于所述小文件占用量判断单元的判断结果为是时,将所述小文件存储在所述当前的打包文件中;
打包文件生成单元,用于所述小文件占用量判断单元的判断结果为否时,生成新的打包文件存储所述小文件。
结合第三方面,本发明实施例提供了第三方面的第四种可能的实施方式,其中,所述装置还包括:
缓存空间指针获取模块,用于获取多个缓存空间对应的指针,其中,所述缓存空间用于缓存待存储的所述小文件;
缓存空间链表生成模块,用于根据多个缓存空间对应的指针生成所述小文件的缓存空间链表;
小文件缓存模块,用于将所述小文件获取模块获取的所述小文件缓存至所述缓存空间链表对应的多个缓存空间中。
结合第三方面的第四种可能的实施方式,本发明实施例提供了第三方面的第五种可能的实施方式,其中,所述小文件存储模块包括:
缓存空间写满判断单元,用于判断所述多个缓存空间是否均写满;
第一小文件写入单元,用于所述缓存空间写满判断单元的判断结果为是时,将所述多个缓存空间中缓存的所述小文件写入所述打包文件中;
预设时间判断单元,用于所述缓存空间写满判断单元的判断结果为否时,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;
第二小文件写入单元,用于当所述预设时间判断单元的判断结果为所述等待时间达到所述预设时间时,将所述多个缓存空间中缓存的小文件写入所述打包文件中。
第四方面,本发明实施例提供了一种小文件查询装置,所述装置包括:
查询请求接收模块,用于接收用户的小文件查询请求,所述小文件查询请求包括所述用户欲查询的小文件的文件名;其中,所述小文件包括文件大小小于预设阈值的文件;
文件名哈希值计算模块,用于根据接收到的所述小文件的文件名,计算所述小文件的文件名哈希值;
小文件定位模块,用于通过计算得到的所述文件名哈希值查询索引子***中的索引文件,根据查询结果定位所述小文件的位置;其中,所述索引文件包括小文件的文件名对应的属性值和所述小文件的元数据,所述属性值包括:文件名哈希值;所述元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
小文件获取模块,用于从定位的所述位置获取所述小文件;
小文件返回模块,用于将获取到的所述小文件返回给所述用户。
结合第四方面,本发明实施例提供了第四方面的第一种可能的实施方式,其中,所述小文件定位模块包括:
快速查询信息确定单元,用于从计算得到的所述文件名哈希值中,取出预设位数的数字串,作为快速查询信息;
位置信息查询单元,用于根据所述快速查询信息,在所述索引子***的快速查找表中,查询出所述文件名哈希值对应的小文件的索引文件在所述索引子***中的位置信息;
索引文件查询单元,用于根据得到的所述位置信息,在所述索引子***中查询出所述索引文件;
小文件定位单元,用于根据查询出的所述索引文件中存储的所述小文件的元数据,定位所述小文件的位置。
本发明实施例提供的一种小文件存储方法和相关查询方法、装置,在将小文件存储到打包文件后,计算小文件的文件名的哈希值,并在小文件的索引文件中存储文件名哈希值,利用文件名哈希值替代现有技术中索引文件中存储的文件名,而哈希值是基于文件名的数字串,比文件名更简单,更适于后续文件查找过程中使用,这种索引文件的内容保障了后续文件查找的效率;
在查询小文件时,通过在索引子***中存储的索引文件中的文件名哈希值和用户欲查询小文件的文件名哈希值进行比对,确定用户欲查询的小文件,并将结果及时反馈给用户,对比的过程比较简单,大大节省了对比的时间,提高了小文件的查询效率。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的一种小文件存储方法所涉及的一种实施***的结构示意图;
图2示出了本发明实施例1所提供的一种小文件存储方法流程图;
图3示出了本发明实施例2所提供的一种小文件存储方法的具体流程图;
图4示出了本发明实施例2提供的小文件存储方法所使用的文件***的结构示意图;
图5示出了本发明实施例2提供的小文件存储方法中对小文件进行缓存并写入文件***的示意图;
图6示出了本发明实施例2提供的小文件存储方法中小文件在打包文件中的存储形式;
图7示出了本发明实施例2提供的小文件存储方法中索引子***和打包文件的索引示意图;
图8示出了本发明实施例3所提供的一种提出的小文件查询方法的流程图;
图9示出了本发明实施例4所提供的一种提出的小文件存储装置的结构示意图;
图10示出了本发明实施例5所提供的一种提出的小文件查询装置的结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中提到的小文件即相对较小的文件,其定义具体可以根据使用环境进行限定,例如比较典型的,购物网站中的图片(大到几MB,小到几KB不等)可以视为小文件。在现实的应用***中,小文件的特点是文件较小但文件数量较多,尤其购物类网站、视频应用等。
考虑到相关的文件***中,通常小文件的索引文件存储的是小文件的文件名,在进行文件查找时,***需要使用该索引文件中的文件名与用户提供的文件名进行对比,才可以定位用户查找的小文件的位置,但是文件名一般是英文、中文和数字混合的字符串,比较复杂,也比较长,所以比对的速度较慢,导致返回给用户待处理小文件的时间较长。基于此,本发明实施例提供了一种小文件存储方法和装置。参见图1,其示出了本发明实施例提供的小文件存储方法所涉及的一种实施***的结构示意图,该***包括:用于存储海量小文件的文件***10,文件***10包括:索引子***11和文件存储子***12。
其中,文件存储子***12,用于获取待存储的小文件,并对获取到的小文件进行存储,并在将小文件存储到打包文件以后,生成小文件的元数据并计算小文件的文件名哈希值,然后将小文件的元数据和小文件的文件名哈希值作为小文件的索引文件,发送到索引子***进行存储;索引子***11,用于对小文件的索引文件进行存储,并在对小文件的索引文件存储之后,获取小文件的索引文件在索引子***的位置信息和作为快速查找信息的小文件的文件名哈希值中取出预设位数的数字串,形成位置信息和快速查询信息的关联关系,并将位置信息和快速查询信息的关联关系存储在索引子***11预设的快速查找表中。
所以在索引子***11中,不仅存储有小文件的索引文件,还存储有包括小文件的索引文件在索引文件中的位置信息和部分文件名哈希值的关联关系的快速查找表,索引子***11和文件存储子***12分别设置在非易失性存储介质中。当用户启动文件***时,索引子***会被读取到文件***的内存中,对用户想要处理的存储在文件***中的小文件进行查询;当文件***的当前的剩余内存不足以读取索引子***时,文件***会通过在非易失性存储介质中存储的快速查找表中查找待处理的小文件,以向用户及时反馈查询结果。
文件***10,可以采用现有的任意可以存储小文件的服务器或者计算机,这里不再一一赘述。
文件***10中,用来存储小文件和小文件的索引文件的非易失性存储介质可以采用现有的任何型号的机械硬盘、固态硬盘和闪存,这里不再一一赘述。
实施例1
参见图2,本实施例提供一种小文件存储方法,该方法包括如下步骤:
步骤100、获取待存储的小文件;其中,小文件包括文件大小小于预设阈值的文件。
在本实施例中,小文件通常包括用户通过网络可以获取到的图片、文档、音乐等文件。当文件***在获取到待存储的文件时,会先通过设定的阈值确定待存的文件是不是小文件。
图片、文档、音乐等文件的大小一般在几千字节(KB)到几兆字节(MB)不等,所以在设定文件***所存储的小文件大小的阈值时,不应该将阈值设置的过大,可以设置为7至10MB中的任意数值。当然,阈值也可以设置为其他的数值,这里不再一一赘述。
上述文件***安装在服务器或者计算机上,用于对文件进行存储。文件***由服务器或者计算机上安装的操作***控制,对存储的小文件进行查询、读写等操作。
步骤101、将获取到的小文件存储到当前的打包文件中,并生成小文件的元数据;小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度。
上述打包文件设置在文件存储子***中,用于将多个小文件合并存储在一起,以减少文件***的碎片化,提高了文件***的读写性能。
上述打包文件标识可以在打包文件生成时,由文件***赋予打包文件一个数字串,用于和已有的打包文件进行区别。
小文件在打包文件中的位置信息包括小文件在打包文件的存储地址,该存储地址包括起始偏移地址和终止偏移位置。其中,起始偏移地址和终止偏移位置可以是文件***中非易失性存储介质的物理地址。
对于打包文件的大小,如果设置的太大,那么存储的小文件的数量就会很多,可能会耗费较长的时间来搜索用户查询的小文件后,才可以给用户反馈查询结果;而如果设置的太小,那么就会使得打包文件中存出不了几个小文件,可能就没有起到减少文件***的碎片化的作用,所以,为了合理的对打包文件进行使用,可以根据所存储的文件大小的特点,把打包文件设定为几十MB的大小,如:32MB至64MB中的某个数值。
比如:文档一般是几十KB到几百KB的大小,所以主要存储文档的文件***,可以预先设定打包文件的大小是16MB;而音乐一般是几MB大小,那么主要存储音乐的文件***,可以预先设定打包文件的大小是64MB。从而根据所存储的文件大小的特点,设置了不同的打包文件的大小。
步骤102、根据所述小文件的文件名计算小文件的属性值,该属性值包括:文件名哈希值。
上述小文件的属性值可以存储在索引子***中,用于表征出对应小文件与存储在文件存储子***中其他小文件的不同,以便在用户在文件***中查询某个小文件时,可以通过小文件的属性值查询该小文件。
上述文件名哈希值可以在文件***将小文件存储到打包文件后,根据预设的哈希算法对文件名进行散列运算而得到的结果,由于计算得到的文件名哈希值是32bit、64bit或者128bit长度的数字串,可以用来唯一确定小文件。
步骤103、将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子***。
本实施例的索引子***存储在文件***的非易失性存储介质中,当用户启动文件***时,索引子***会被读取到文件***的内存中,对用户输入文件***中的待处理小文件进行查询,索引子***使用索引文件中的文件名哈希值和用户的待处理文件的文件名哈希值进行比对,比对一致的即为用户待处理的文件对应的信息,根据该哈希值对应的元数据便可以定位用户待处理的文件的位置。
通过以上描述,本实施例提供一种小文件存储方法,在将小文件存储到打包文件后,计算小文件的文件名的哈希值,并在小文件的索引文件中存储文件名哈希值,利用文件名哈希值替代现有技术中索引文件中存储的文件名,而哈希值是基于文件名的数字串,比文件名更简单,更适于后续文件查找过程中使用,这种索引文件的内容保障了后续文件查找的效率。
当文件***的文件存储子***中存储了海量的小文件后,相应的索引子***中存储的索引文件数量也会非常庞大,使得文件***通过索引文件查询存储的小文件之前,需要耗费大量的时间和内存量将索引文件读取到内存中,为了提高文件***的查询效率,所述小文件存储方法还包括以下步骤(1)-(3):
(1)获取小文件的索引文件在索引子***中的位置信息;
(2)从小文件的文件名哈希值中取出预设位数的数字串,作为小文件的快速查询信息;
(3)将位置信息和快速查询信息在预设的快速查找表中进行关联存储。
其中,上述快速查找表预先设置在文件***的索引子***中。
上述小文件的索引文件在索引子***中的位置信息,包括小文件在索引子***中的存储地址。存储地址包括起始偏移地址和终止偏移位置。
通过设置快速查找表,可以在无需内存读取索引文件的情况下,就可以直接给用户反馈查询结果,方便用户使用。
随着文件***中的文件存储子***中存储的小文件越来越多,那么文件***对小文件的文件名进行哈希计算后,可能会出现两个以上数量的小文件的文件名哈希值相同的情况,为了应对两个以上数量的小文件的文件名哈希值相同的情况,将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子***包括:当索引子***中存在文件名哈希值相同的多个小文件时,为多个小文件建立索引链表;将多个小文件对应索引链表关联存储。
其中,当前存储到文件***的小文件的索引文件会位于索引链表的头部。
通过将文件名哈希值相同的索引文件形成链表,从而对索引子***中存储的海量索引文件进行分类,所以,在通过快速查找表进行文件的查询时,可以先通过索引链表,找到某类具有相同文件名哈希值的多个索引文件,然后再在这些索引文件中进行文件查询,就可以大大缩小文件的查询范围,快速的找出小文件。
打包文件的大小可以预设好的,为了不使打包文件的大小超出预设的大小,而造成文件***不稳定,那么为了解决这样的问题,将获取到的小文件存储到当前的打包文件中包括:确定获取到的小文件的占用量;判断当前的打包文件的剩余存储容量是否大于小文件的占用量;如果是,将小文件存储在当前的打包文件中;如果否,生成新的打包文件存储小文件。
其中,小文件的占用量指小文件被存储到打包文件时,会占用的打包文件存储容量。
文件***在获取到待存储的小文件之后,会先对待存储的小文件在内存中进行缓存,然后再发送到文件存储子***中的打包文件中存储起来,如果使用整个内存对待存储的小文件进行存储,那么容易造成内存碎片化,降低***性能,所以在将获取到的小文件存储到当前的打包文件中,并形成小文件的元数据之前,小文件存储方法还包括以下步骤:获取多个缓存空间对应的指针,其中,缓存空间用于缓存待存储的小文件;根据多个缓存空间对应的指针生成小文件的缓存空间链表;将小文件缓存至缓存空间链表对应的多个缓存空间中;将所述多个缓存空间中缓存的所述小文件写入打包文件中。
其中,多个缓存空间对应的指针是从空闲缓存空间链表中取得的。空闲缓存空间链表对应有空闲缓存空间,空闲缓存空间是文件***专门设置用来缓存待存储小文件的缓冲文件写入器中取出来的。
从缓冲文件写入器中取出的缓存空间的指针数量和每个缓存空间的大小和小文件的大小有关。
为了提高缓存小文件的缓存空间的使用效率,将所述多个缓存空间中缓存的所述小文件写入打包文件中包括以下步骤:判断多个缓存空间是否均写满;如果是,将多个缓存空间中缓存的小文件写入打包文件中;如果否,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;当等待时间达到预设时间时,将多个缓存空间中缓存的小文件写入打包文件中。
通过以上的描述,当文件***确定缓存有小文件的多个缓存空间等待缓存其他小文件的等待时间达到预设时间时,将缓存有小文件的多个缓存空间写入打包文件中,提高了文件***的小文件写入效率。
实施例2
参见图3所示的小文件存储方法的具体流程图,该方法包括如下步骤:
步骤200、获取待存储的小文件;其中,小文件包括文件大小小于预设阈值的文件。
当用户在网络上看到自己喜欢的图片、文档或者音乐等小文件时,可以通过文件***所在服务器或者计算机的输入设备,向服务器或者计算机的操作***发出小文件的获取指令,操作***根据用户发出的小文件的获取指令,从网络上获取待存储到文件***的小文件。
服务器或者计算机的输入设备,可以是键盘、鼠标等任意可以使用户向操作***发出小文件的获取指令的设备,这里不再一一赘述。
比如:用户想要在文件***中存储名称是“伤心1999”的歌曲时,可以通过文件***所在服务器或者计算机的鼠标,向服务器或者计算机的操作***发出歌曲“伤心1999”的获取指令,操作***根据用户发出的歌曲“伤心1999”的获取指令,从网络上获取歌曲“伤心1999”。
目前来说,常用的文件***包括:CIFS(CommonInternetFileSystem,通用网络文件***)、NFS(NetworkFileSystem,网络文件***)和NTFS(NewTechnologyFileSystem,新技术文件***)等,这些文件***对文件的存储格式各不相同而且又不兼容,为了使本实施例提出的文件***可以在常用的文件***中使用,本实施例提供了上述小文件存储方法所使用的文件***,该***的结构示意图如图4所示,其中,该***为通用文件***,其包括基础文件***、缓冲文件写入器、快速查询表、索引文件和打包文件。
上述基础文件***作为待存储的小文件和多个文件***之间的接口。基础文件***定义不同的接口分别与多个文件***进行对接,所以只要在不同的文件***实现相关的接口就可以在此文件***上实现小文件的存储。
基础文件***为每个文件***定义的接口包括但不限于:打开文件、关闭文件、读取文件(包括指定位置读取)、写入文件(包括指定位置写入)、删除文件、同步文件、调整文件当前指针位置、调整文件大小、重命名文件、判断文件或者路径是否存在、获取路径空间属性、创建路径、获取文件或者路径属性、列举文件等。
缓冲文件写入器是一种文件抽象,提供了文件操作的基本接口,但是内部实现采用了内存缓冲机制,从而提高了文件的创建、写入的IOPS。参见图5所示的小文件存储方法中对小文件进行缓存并写入文件***的示意图,在缓冲文件写入器中,存在两种内存队列,分别为:空闲队列和数据队列。空闲队列将所有空闲的内存连接起来,供以后写入数据使用;数据队列中的内存则是已经填入数据待写入到磁盘中。在将获取到的小文件存储到文件***的文件存储子***之前,文件***会通过内存中专门划出的缓冲文件写入器中取出多个缓存空间对小文件进行缓存,在小文件被缓存到多个缓存空间后,将多个缓存空间中缓存的小文件写入文件***的文件存储子***中。缓冲文件写入器具备如下特点:
(1)内存块的大小和数量可配置;
(2)内存块通过内存池技术进行管理,提高内存使用率,降低内存碎片,提高***性能;
(3)当前工作内存已经写满后送入数据队列;
(4)当前工作内存从空闲队列取出超过指定时间后送入数据队列,超时时间可配置;
(5)后台线程监听数据队列,一旦发现有新数据,立刻同步到文件中,并将内存块释放回空闲队列;
(6)写入内存块和数据同步到文件为两个独立线程,性能较高;
(7)缓冲机制可以避免瞬间数据量过大造成的数据浪涌。
步骤201、获取多个缓存空间对应的指针,其中,缓存空间用于缓存待存储的小文件。
其中,多个缓存空间对应的指针,是从缓冲文件写入器中设置的空闲缓存空间链表取出中,用于缓存小文件的多个缓存空间所对应的指针。
获取多个缓存空间对应的指针的过程具体包括:
确定缓冲文件写入器中是否具有空闲的缓存空间;
若确定缓冲文件写入器中具有空闲的缓存空间,那么根据获取到的小文件的大小,从缓冲文件写入器中的空闲缓存空间链表中获取多个缓存空间对应的指针。
上述的缓冲文件写入器,除了可以是文件***从内容中专门划分的区域外,还可以是文件***设置的专门用于缓存待存储小文件的缓存器,该缓冲文件写入器独立于文件***用于加载运行程序的内存。
因此,缓冲文件写入器,可以采用现有的任何型号和类型的随机存取存储器,这里不再一一赘述。
缓冲文件写入器中缓存空间的大小,可以由设计文件***的厂商预先确定,也可以由文件***的用户根据所存储小文件的特点进行设定。
比如:设计文件***的厂商预先设定缓存空间的大小是8MB,但是用户购买该文件***是为了存储文档和图片,由于文档和图片的大小通常是几十至几百KB,所以,用户可以将单位缓存空间的大小修改为4MB,以增加小文件的读写操作效率。
若小文件的大小大于单位缓存空间的大小,那么说明一个缓存空间是装不下小文件的全部数据的,那么需要将小文件分成多个部分并分别缓存到多个缓存空间中,所以可以通过小文件的大小和单位缓存空间的大小对报文进行分块处理,然后将分块后的报文分别存储到多个缓存空间中。
步骤202、根据多个缓存空间对应的指针生成小文件的缓存空间链表。
具体地,根据多个缓存空间对应的指针生成小文件的缓存空间链表包括:根据多个空闲缓存空间对应的指针,文件***先确定小文件在这些获取的缓存空间的缓存顺序,使第一个从空闲缓存空间链表中获取的指针作为缓存空间链表中报文的头指针,第二个从空闲缓存空间链表中获取的指针作为缓存空间链表中报文的第二个指针,……,最后一个从空闲缓存空间链表中获取的指针作为缓存空间链表中报文的尾指针,那么缓存空间链表的头指针对应的缓存空间确定存储小文件的第一部分数据、紧邻头指针的下一个指针对应的缓存空间确定存储小文件的第二部分数据,……,尾指针对应的缓存空间确定缓存报文的最后一部分数据,以此生成报文的缓存空间链表。
在多个缓存同一小文件的缓存空间中,缓存小文件最后一部分数据的缓存空间对应的指针被称作小文件的尾指针。
步骤203、将小文件缓存至缓存空间链表对应的多个缓存空间中。
根据缓存空间链表中各指针确定的小文件各个部分的缓存空间,文件***将小文件的各部分分别存储到对应的缓存空间中。
在有些情况下,小文件的大小小于取出的多个缓存空间的大小,所以在将小文件缓存到多个缓存空间之后,小文件的尾指针对应的缓存空间是处于未缓存满数据的状态,那么就会需要等待尾指针对应的缓存空间缓存满数据后,才会将缓存的小文件写入文件***的文件存储子***中。但有时等待的时间很长,降低了文件***对小文件的读写效率,为了解决这个问题,步骤203包括以下具体流程:判断多个缓存空间是否均写满;如果是,则进行步骤204;如果否,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;当等待时间达到预设时间时,进行步骤204。
通过预设时间,当文件***确定缓存有小文件的多个缓存空间等待缓存其他小文件的等待时间达到预设时间时,将缓存有小文件的多个缓存空间写入打包文件中,避免了缓存有小文件的缓存空间等待缓存其它小文件的时间过长而导致的文件***对小文件的读写效率低下的缺陷,提高了文件***对小文件的读写效率。
预设时间,可以由设计文件***的厂商预先确定,也可以由文件***的用户根据所存储小文件的特点进行设定。
比如:设计文件***的厂商设置的预设时间是500毫秒,但是用户购买该文件***是为了存储文档和图片,读写的数据量较大,需要快速读取存储小文件,那么,用户可以将预设时间的大小修改为200毫秒,以增加小文件的读写操作效率。
步骤204、将多个缓存空间中缓存的小文件写入打包文件中。
按照缓存空间链表中记录的指针顺序,将各指针对应的多个缓存空间中所缓存的小文件写入打包文件中。
在将所缓存的小文件写入打包文件之后,文件***释放缓存空间链表,使缓存空间链表对应的多个缓存空间重新成为空闲缓存空间,并将这些空间缓存空间的指针连接到空闲缓存空间链表中,以供缓存后续的小文件时继续使用。
通过步骤201至步骤204的描述,文件***设置专门的缓冲文件写入器,来缓存待存储的小文件,提高内存使用率,降低内存碎片,提高***性能,而且可以有效避免瞬间小文件的数据量过大造成数据浪涌而导致文件***损坏的问题。
打包文件的存储空间的存储容量是预先确定的,所以为了不使打包文件中存储的小文件的实际容量大于预先设定的打包文件的存储容量,包括以下具体流程:
步骤205、确定获取到的小文件的占用量。
小文件的占用量,就是小文件的大小,记载在小文件属性信息中;文件***获取到的小文件,包括小文件数据和小文件属性信息;小文件属性信息包括:小文件的文件名、数据长度和创建时间等。
文件***在将小文件存储到打包文件时,会连小文件的属性信息一并存储到打包文件中。
步骤206、判断当前的打包文件的剩余存储容量是否大于小文件的占用量如果是,执行步骤207,将小文件存储在当前的打包文件中;如果否,执行步骤208,生成新的打包文件存储小文件。
打包文件的剩余存储容量,是和打包文件标识一起存储在打包文件属性信息中;除了打包文件标识和打包文件属性信息之外,打包文件属性信息还包括打包文件在文件存储子***中的位置信息。
打包文件属性信息,可以表示为:“打包文件标识打包文件位置信息打包文件剩余存储容量”的形式,当然打包文件属性信息也可以通过其他的形式表现出来,这里不再一一赘述。
打包文件属性信息预先存储在文件***的***信息的打包文件属性信息列表中,文件***的***信息还包括文件***的属性信息列表和缓冲文件写入器的属性信息列表等。
打包文件属性信息,由文件***自动维护,当打包文件标识对应的打包文件存储新的小文件后,文件***会根据小文件的占用量和存储该小文件之前打包文件的剩余存储容量,更新打包文件标识对应的打包文件属性信息中记录的打包文件的剩余存储容量。
步骤207、将小文件存储在当前的打包文件中。
步骤208、生成新的打包文件存储小文件。
生成新的打包文件的具体流程包括:文件***会根据当前的打包文件的存储容量,从文件存储子***中分配未使用的存储空间中分配预设存储容量的存储空间作为新生成的打包文件的存储空间,并获取新生成的打包文件的存储空间所在文件存储子***中的位置信息和新生成的打包文件的存储空间的存储容量,然后生成新的打包文件标识,将新生成的打包文件的位置信息、存储容量和新生成的打包文件标识写入打包文件属性信息列表中,形成新生成的打包文件的打包文件属性信息。在生成新的打包文件之后,将小文件存储到新生成的打包文件中。
步骤209、生成小文件的元数据。
小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度。
通过步骤205至209的描述,使打包文件中存储的小文件的实际容量不会大于预先设定的打包文件的存储容量,保证了文件***的稳定性。
参见图6,为小文件在打包文件中的存储形式,包括:模数、名字、数据长度、创建时间、数据内容和校验和;其中,模数是固定数值的数字串,用于表示小文件的起始位置;名字是小文件的文件名;数据长度是小文件的数据大小;创建时间是小文件在文件***中的创建时间;数据内容是小文件的数据;校验和是对小文件的模数、名字、创建时间和数据长度进行哈希计算后得到的数字串,用于校验小文件存储数据的准确性,计算得到的校验和放置在小文件数据内容的后面,用于表示小文件的终止位置。
模数是固定数值的数字串,所以可以明确表示小文件在打包文件中的起始位置,而且与小文件属性信息一起通过哈希计算,得到小文件的校验和,还提供了一种校验小文件的高效方式。
小文件的数据内容不参与校验和计算,大幅降低校验数据量;打包文件中存有小文件属性信息,通过遍历所有的打包文件可以找到所有小文件属性信息,可以在数据崩溃后对数据进行恢复;小文件的小文件属性信息放在小文件数据前面,校验和放在小文件数据后面,只要小文件的检验和正确,文件***就可以确定小文件从数据开始到结束全部恢复到文件存储子***中。
步骤210、根据小文件的文件名计算小文件的属性值,其中,属性值包括:文件名哈希值。
哈希值一般的长度是32比特,所以在文件***中,哈希值的数量最多有232种可能性,但在一些情况下,比如:当文件***中存储的小文件数量大于文件名哈希值的数量232最大值时,就可能在索引子***中就会存储有文件名哈希值相同的多个小文件索引文件,所以通过哈希值就不能唯一确定小文件了,那么就会给小文件的查询带来不便。
因此,在步骤210中,为了使文件名哈希值还可以唯一标识小文件,分别采用第一哈希算法和第二哈希算法对小文件的文件名进行哈希运算,从而分别得到小文件的文件名的第一文件名哈希值和第二文件名哈希值;其中,第一文件名哈希值的长度小于第二文件名哈希值的长度。
这样,文件***查询某个小文件时,在长度较短的第一文件名哈希值不能唯一确定出小文件时,可以进一步通过比对长度较长的第二文件名哈希值唯一确定出小文件,而无需对文件的文件名进行比对,就可以快速的查询到小文件。
其中,第一文件名哈希值,可以是采用一致性哈希算法计算得到的32比特的哈希值;第二文件名哈希值,可以是采用MD5(MessageDigestAlgorithm,消息摘要算法第五版)计算得到的128比特的哈希值;当然,第一文件名哈希值和第二文件名哈希值也可以是采用其他的哈希算法计算得到的哈希值,这里不再一一赘述。
步骤211、将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子***。
步骤211包括如下具体步骤:
(1)、在将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子***后,获取刚存储的小文件的文件名哈希值,与之前存储在索引子***中的多个索引文件中的文件名哈希值进行比对,确定索引子***中是否存在与刚存储的小文件的文件名哈希值相同的小文件。
(2)、当确定索引子***中存在文件名哈希值相同的多个小文件时,为多个小文件建立索引链表。
其中,为多个小文件建立索引链表的过程包括:当索引文件子***中存在与刚存储的小文件的文件名哈希值相同的多个小文件相对应的索引链表时,那么以刚存储的小文件的索引文件中的指针作为索引链表的头指针,指向上一个文件名哈希值相同的小文件的索引文件,从而对已有的索引链表进行更新;当索引文件子***中不存在与刚存储的小文件的文件名哈希值相同的多个小文件相对应的索引链表时,以刚存储的小文件的索引文件中的指针作为索引链表的头指针,指向与它的文件名哈希值相同的小文件索引文件,生成具有相同文件名哈希值的多个小文件的索引链表。
(3)、存储多个小文件对应的索引链表。
多个小文件具有相同文件名哈希值,是指多个小文件的索引文件中记录的文件名哈希值相同。
在比对文件名哈希值以形成索引链表的过程中,由于文件名的第一文件名哈希值的长度较短,容易出现哈希值相同的情况,所以,文件***必须对文件名的第一文件名哈希值进行比对。而由于文件名的第二文件名哈希值的长度较长,不容易出现哈希值相同的情况,所以文件***可以不对文件名的第一文件名哈希值进行比对,以减少文件***的开销。
通过将文件名哈希值相同的索引文件形成索引链表,从而对索引子***中存储的海量索引文件进行分类,再在这些具有相同第一文件名哈希值的索引文件中通过第二文件名哈希值进行小文件的查询,就可以快速的找出小文件,而无需对索引子***中的所有索引文件进行查询,大大提高了查询小文件的效率。
索引子***中存储有文件***中存储的所有小文件的索引文件,索引子***存储在文件***的非易失性存储介质上,在文件***所在的服务器掉电或异常关机时,保证了索引文件不会丢失。本实施例将索引子***存储在文件***的非易失性存储介质中,在文件***启动时无须扫描全部小文件,仅仅通过扫描索引文件就可以完成快速建立索引的过程,而且,当文件***想要查询小文件时,只需将索引子***中存储的索引文件读取到内存中,就可以进行小文件的查询工作,方便快捷。
在内存不足或者索引子***中存储的索引文件数量庞大而导致的索引文件读取速度慢时,为了能够及时的向用户返回查询小文件的结果,本实施例提出的小文件存储方法还包括以下步骤:
步骤212、获取小文件的索引文件在索引子***中的位置信息。
小文件的索引文件在存储到索引子***中后,文件***就可以根据小文件的索引文件在索引子***中的存储地址,得到小文件的索引文件在索引子***中的位置信息。
步骤213、从小文件的文件名哈希值中取出预设位数的数字串,作为小文件的快速查询信息。
小文件的快速查询信息,可以是从第一文件名哈希值中取出的预设位数数字串;也可以是从第二文件名哈希值中取出的预设位数数字串。
小文件的快速查询信息,是计算得到的小文件的文件名哈希值数字串的一部分。具体从文件名哈希值中取出多少预设位数的数字串作为快速查询信息,文件***的制造商可以在文件***出厂之前进行设定,也可以由具有不同存储需求的用户根据文件***中要存储的文件数量确定,增加了文件***的实用性,方便了客户使用。
比如:文件***的制造商可以预先设定从小文件的文件名哈希值中取出20位数字串作为小文件的快速查询信息。而用户要在文件***中存储从1900年到现在的全世界的专利申请文件,可能会存储上亿个文档,由于存储的数据量较大,用户就可以设定从小文件的文件名哈希值中取出25位数字串,作为小文件的快速查询信息。但当用户要在文件***中存储某个学校的期中期末考试试卷的文档时,那么,也就是在文件***中存储几千个文档,由于存储的数据量相对较小,用户就可以设定从小文件的文件名哈希值中取出10位数字串,作为小文件的快速查询信息。
步骤214、将位置信息和快速查询信息在预设的快速查找表中进行关联存储。
通过步骤212至步骤214的描述,在索引子***中的快速查找表中存储小文件的位置信息和快速查询信息的关联关系,在计算得到小文件的文件名哈希值后,可以在存储在磁盘中存储的快速查找表中查询目标文件,无需内存读取索引文件就可以直接给用户反馈查询结果,方便了用户使用。而且,从小文件的文件名哈希值中取出预设位数的数字串,作为快速查询信息,使得生成的快速查找表的文件很小,方便文件***读取,进一步提高了文件***对小文件的查询效率。
当小文件的索引文件已经存储到索引子***中,并已经建立小文件的索引文件的位置信息和快速查询信息的关联关系,但由于***异常未将已经建立的小文件索引文件的位置信息和快速查询信息的关联关系存储到快速查找表中时,本实施例可以通过查找快速查找表中的索引文件的最大偏移地址,那么从这个最大偏移地址开始的关联信息即为未同步到快速查找表中的数据。那么就将已经建立小文件的索引文件的位置信息和快速查询信息的关联关系同步到快速查找表中索引文件的最大偏移地址的位置处,完成了数据的断点恢复操作。
断点恢复的优势是:恢复速度快,因为恢复的数据只有最后一次同步时间到***异常过程中的部分数据。
快速查找表的查询准确率与快速查找表中设定的快速查询信息的长度有关,快速查询信息的长度越长,那么快速查找表就越大,则查询准确率越高。同时,快速查找表会随着文件的写入而更新,为了保证数据的正确性,快速查找表的第一个和最后一个元素用于校验,保证整个表被同步到文件***中。
参见图7,为本实施例中索引子***和打包文件的索引示意图,其中,快速查找表、索引文件和打包文件的具体内容同上所述,这里不再赘述,由图7可以看出,通过简单的快速查找表、索引文件就可以确定小文件在打包文件中的位置,从而定位用户查询的文件***中存储的小文件,提高了文件***对小文件的查询效率。
通过以上描述,本实施例提供一种小文件存储方法,在将小文件存储到打包文件后,计算小文件的文件名的哈希值,并在小文件的索引文件中存储文件名哈希值,利用文件名哈希值替代现有技术中索引文件中存储的文件名,而哈希值是基于文件名的数字串,比文件名更简单,更适于后续文件查找过程中使用,这种索引文件的内容保障了后续文件查找的效率。
实施例3
对应于上述小文件存储方法,本实施例还提供一种小文件查询方法,用于文件***,参见图8,该方法包括以下步骤:
步骤300、接收用户的小文件查询请求,小文件查询请求包括所述用户欲查询的小文件的文件名;其中,小文件包括文件大小小于预设阈值的文件。
用户发出的小文件查询请求中携带有小文件的属性信息,小文件的属性信息包括但不限于:小文件的文件名、数据长度和创建时间。所以文件***在接收到小文件查询请求后,就可以从小文件的属性信息中获取到小文件的文件名。
步骤301、根据接收到的小文件的文件名,计算小文件的文件名哈希值。
文件名哈希值包括:第一文件名哈希值和第二文件名哈希值;第一文件名哈希值的长度小于第二文件名哈希值的长度。
文件***根据预设的哈希算法对接收到的小文件的文件名进行哈希计算,计算小文件的文件名哈希值。
文件名哈希值可以是32比特、64比特或者128比特长度的数字串,替代现有的文件名,用于存储在小文件的索引文件中标识小文件。
由于第一哈希值的长度小于第二哈希值的长度,那么第一哈希值,可以是采用一致性哈希算法计算得到的32比特的哈希值;第二哈希值,可以是采用MD5(MessageDigestAlgorithm,消息摘要算法第五版)计算得到的128比特的哈希值;当然,第一哈希值和第二哈希值也可以是采用其他的哈希算法计算得到的哈希值,这里不再一一赘述。
第一哈希值是32比特长度,所以有232种不同的情况,而第二哈希值是128比特长度,所以就有2128种不同的情况,所以,在文件***中,索引文件中记录的第一文哈希值可能会出现相同的情况,而第二哈希值出现相同情况的概率较小。
步骤302、通过计算得到的文件名哈希值查询索引子***中的索引文件,根据查询结果定位小文件的位置;其中,索引文件包括小文件的文件名对应的属性值和小文件的元数据,该属性值包括:文件名哈希值;该元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度。
为了根据计算得到的文件名哈希值和文件***的索引子***,获取到小文件,步骤302具体包括:通过计算得到的文件名哈希值与索引子***中存储的小文件的索引文件中记录的文件名哈希值进行对比,从而找出文件名哈希值对应的小文件的索引文件,根据找出的小文件的索引文件中记录的小文件的元数据,获取小文件。
小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度。
在通过计算得到的文件名哈希值与索引子***中存储的小文件的索引文件中记录的文件名哈希值进行对比的过程中,可能会找到多个与计算得到的文件名哈希值相同的小文件的索引文件,那么为了确定用户欲查询的小文件,就只能通过小文件的文件名在这多个小文件的索引文件对应的索引链表中,查询出具有相同文件名的小文件的索引文件。
当文件***的内存不足或者索引子***中存储的索引文件数量庞大而导致的索引文件读取速度慢时,为了能够及时的向用户返回查询小文件的结果,步骤302还可以包括由步骤(1-1)至步骤(1-4)所描述的流程。
(1-1)、从计算得到的文件名哈希值中,取出预设位数的数字串,作为快速查询信息。
(1-2)、根据快速查询信息,在索引子***的快速查找表中,查询出文件名哈希值对应的小文件的索引文件在索引子***中的位置信息。
快速查找表预先存储在索引子***中,预先存储有小文件的索引文件在索引子***中的位置信息和快速查询信息的关联关系,所以文件***可以根据快速查询信息,根据快速查找表中记录的位置信息和快速查询信息的关联关系,查询出文件名哈希值对应的小文件的索引文件在索引子***中的位置信息。
位置信息,记录了文件名哈希值对应的小文件的索引文件在索引子***中的起始存储地址和终止存储地址。
(1-3)、根据得到的位置信息,在索引子***中查询出索引文件。
(1-4)、根据查询出的索引文件中存储的小文件的元数据,定位小文件的位置。
在索引子***中的快速查找表中存储小文件的位置信息和快速查询信息的关联关系,在计算得到小文件的文件名哈希值后,可以通过快速查找表确定小文件的位置,无需内存读取索引文件就可以直接给用户反馈查询结果,加快了查询小文件的速度;而且,从小文件的文件名哈希值中取出预设位数的数字串,作为快速查询信息,对比速度比对比完整的文件名哈希值更快,而且使得生成的快速查找表的文件很小,方便文件***查询,进一步提高了文件***对小文件的查询效率。
当索引子***中存在多个第一文件名哈希值对应的多个小文件的索引文件时,为了唯一确定用户查询的小文件,步骤302还可以包括步骤(2-1)至步骤(2-3)所描述的流程。
(2-1)、当文件名哈希值包括小文件的文件名对应的第一哈希值和第二哈希值时,通过第一哈希值查询索引子***中的索引文件;其中,第一哈希值的长度小于第二哈希值的长度;
(2-2)、当通过第一文件名哈希值查询出多个小文件的索引文件时,根据第二文件名哈希值,在索引子***存储的多个小文件对应的索引链表中,查询出第二文件名哈希值对应的小文件的索引文件;
步骤(2-3)、根据查询出的小文件的索引文件中存储的小文件的元数据,定位小文件的位置。
多个小文件对应的索引链表,是在小文件的索引文件存储到索引子***之后形成的,索引链表中的小文件的索引文件中第一文件名哈希值相同而第二文件名哈希值不同,从而对索引子***中存储的海量索引文件进行分类,在当索引子***中查询出多个第一文件名哈希值对应的多个小文件的索引文件时,可以根据索引链表,在索引链表中具有相同第一文件名哈希值的索引文件中通过第二文件名哈希值进行小文件的查询,定位小文件的位置,缩小了查询的范围,可以快速的找出小文件,而无需对索引子***中的所有索引文件进行查询,大大提高了查询小文件的效率。
当通过第二文件名哈希值还不能唯一确定小文件时,通过打包文件中存储的文件名对小文件进行查询,从而确定用户查询的小文件。
步骤303、从定位的位置获取小文件。
步骤304、将获取到的小文件返回给用户。
本实施例提供的一种小文件查询方法,在查询小文件时,计算小文件的文件名哈希值,利用文件名哈希值在索引子***中存储的索引文件中的文件名哈希值和用户的待处理文件的文件名哈希值进行比对,确定用户欲查询的文件,并将结果及时反馈给用户;由于哈希值就是简单的数字串,所以对比的过程比较简单,大大节省了对比的时间,提高了小文件的查询效率。
实施例4
参见图9,本实施例提供一种小文件存储装置,所述装置包括:小文件获取模块400、小文件存储模块401、计算模块402和索引文件存储模块403。
其中,小文件获取模块400,用于获取待存储的小文件;其中,小文件包括文件大小小于预设阈值的文件;
小文件存储模块401,与小文件获取模块400连接,用于将获取到的小文件存储到当前的打包文件中,并生成小文件的元数据;小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
计算模块402,与小文件存储模块401连接,用于根据小文件的文件名计算小文件的属性值,其中,属性值包括:文件名哈希值;
索引文件存储模块403,用于将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子***。
当文件***的文件存储子***中存储了海量的小文件后,相应的索引子***中存储的索引文件数量也会非常庞大,使得文件***通过索引文件查询存储的小文件之前,需要耗费大量的时间和内存量将索引文件读取到内存中,为了提高文件***的查询效率,小文件存储装置还包括:
位置信息获取单元,用于获取小文件的索引文件在索引子***中的位置信息;
快速查询信息获取模块,用于从小文件的文件名哈希值中取出预设位数的数字串,作为小文件的快速查询信息;
关联存储模块,用于将位置信息和快速查询信息在预设的快速查找表中进行关联存储。
通过设置快速查找表,可以在无需内存读取索引文件的情况下,就可以直接给用户反馈查询结果,方便用户使用。
随着文件***中的文件存储子***中存储的小文件越来越多,那么文件***对小文件的文件名进行哈希计算后,可能会出现两个以上数量的小文件的文件名哈希值相同的情况,为了应对两个以上数量的小文件的文件名哈希值相同的情况,索引文件存储模块包括:
索引链表建立单元,用于当索引子***中存在文件名哈希值相同的多个小文件时,为多个小文件建立索引链表;
索引链表存储单元,用于存储多个小文件对应的索引链表。
通过将文件名哈希值相同的索引文件形成链表,从而对索引子***中存储的海量索引文件进行分类,所以,在通过快速查找表进行文件的查询时,可以先通过索引链表,找到某类具有相同文件名哈希值的多个索引文件,然后再在这些索引文件中进行文件查询,就可以大大缩小文件的查询范围,快速的找出小文件。
打包文件的大小是预设好的,为了不使打包文件的大小超出预设的大小,而造成文件***不稳定,为了解决这样的问题,小文件存储模块包括:
小文件占用量确定单元,用于确定获取到的小文件的占用量;
小文件占用量判断单元,用于判断当前的打包文件的剩余存储容量是否大于小文件的占用量;
小文件存储单元,用于小文件占用量判断单元的判断结果为是时,将小文件存储在当前的打包文件中;
打包文件生成单元,用于小文件占用量判断单元的判断结果为否时,生成新的打包文件存储小文件。
文件***在获取到待存储的小文件之后,会先对待存储的小文件在内存中进行缓存,然后再发送到文件存储子***中的打包文件中存储起来,如果使用整个内存对待存储的小文件进行存储,那么容易造成内存碎片化,降低***性能,小文件存储装置还包括:
缓存空间指针获取模块,用于获取多个缓存空间对应的指针,其中,缓存空间用于缓存待存储的小文件;
缓存空间链表生成模块,用于根据多个缓存空间对应的指针生成小文件的缓存空间链表;
小文件缓存模块,用于将小文件获取模块获取的小文件缓存至缓存空间链表对应的多个缓存空间中。
为了提高缓存小文件的缓存空间的使用效率,小文件存储模块包括:
缓存空间写满判断单元,用于判断多个缓存空间是否均写满;
第一小文件写入单元,用于缓存空间写满判断单元的判断结果为是时,将多个缓存空间中缓存的小文件写入打包文件中;
预设时间判断单元,用于缓存空间写满判断单元的判断结果为否时,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;
第二小文件写入单元,用于当等待时间达到预设时间时,将多个缓存空间中缓存的小文件写入打包文件中。
文件名哈希值包括:第一哈希值和第二哈希值;第一哈希值的长度小于第二哈希值的长度。
通过以上描述,本实施例提供一种小文件存储装置,在将小文件存储到打包文件后,计算小文件的文件名的哈希值,并在小文件的索引文件中存储文件名哈希值,利用文件名哈希值替代现有技术中索引文件中存储的文件名,而哈希值是基于文件名的数字串,比文件名更简单,更适于后续文件查找过程中使用,这种索引文件的内容保障了后续文件查找的效率。
实施例5
参见图10,本实施例提供一种小文件查询装置,该小文件查询装置包括:查询请求接收模块500、文件名哈希值计算模块501、小文件定位模块502、小文件获取模块503和小文件返回模块504;
查询请求接收模块500,用于接收用户的小文件查询请求,小文件查询请求包括用户欲查询的小文件的文件名;
文件名哈希值计算模块501,与查询请求接收模块500连接,用于根据接收到的小文件的文件名,计算小文件的文件名哈希值;
小文件定位模块502,与文件名哈希值计算模块501连接,用于通过计算得到的文件名哈希值查询索引子***中的索引文件,根据查询结果定位小文件的位置;其中,该索引文件包括小文件的文件名对应的属性值和小文件的元数据,该属性值包括:文件名哈希值;该元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
小文件获取模块503,与小文件定位模块502连接,用于从定位的位置获取小文件;
小文件返回模块504,与小文件获取模块503连接,用于将获取到的小文件返回给用户。
当文件***的内存不足或者索引子***中存储的索引文件数量庞大而导致的索引文件读取速度慢时,为了能够及时的向用户返回查询小文件的结果,小文件定位模块502通过如下快速查询信息确定单元、位置信息查询单元、索引文件查询单元和小文件定位单元定位小文件,具体包括:
快速查询信息确定单元,用于从计算得到的文件名哈希值中,取出预设位数的数字串,作为快速查询信息;
位置信息查询单元,用于根据所述快速查询信息,在索引子***的快速查找表中,查询出文件名哈希值对应的小文件的索引文件在索引子***中的位置信息;
索引文件查询单元,用于根据得到的位置信息,在索引子***中查询出索引文件;
小文件定位单元,用于根据查询出的索引文件中存储的小文件的元数据,定位小文件的位置。
在索引子***中的快速查找表中存储小文件的位置信息和快速查询信息的关联关系,在计算得到小文件的文件名哈希值后,可以通过快速查找表确定小文件的位置,无需内存读取索引文件就可以直接给用户反馈查询结果,加快了查询小文件的速度;而且,从小文件的文件名哈希值中取出预设位数的数字串,作为快速查询信息,对比速度比对比完整的文件名哈希值更快,而且使得生成的快速查找表的文件很小,方便文件***查询,进一步提高了文件***对小文件的查询效率。
当索引子***中包括多个具有相同第一文件名哈希值的小文件索引文件时,为了唯一确定用户查询的小文件,小文件获取模块通过如下索引链表查询单元和第二小文件获取单元查询小文件的索引文件,小文件获取模块还具体包括:
索引文件查找单元,用于当文件名哈希值包括小文件的文件名对应的第一哈希值和第二哈希值时,通过第一哈希值查询索引子***中的索引文件;其中,第一哈希值的长度小于第二哈希值的长度;
索引链表查询单元,用于当根据第一文件名哈希值查询出多个小文件的索引文件时,根据第二文件名哈希值,在索引子***存储的多个小文件对应的索引链表中,查询出第二文件名哈希值对应的小文件的索引文件;
第二小文件获取单元,用于根据查询出的小文件的索引文件中存储的小文件的元数据,定位小文件的位置。
多个小文件对应的索引链表,是在小文件的索引文件存储到索引子***之后形成的,索引链表中的小文件的索引文件中第一哈希值相同而第二哈希值不同,从而对索引子***中存储的海量索引文件进行分类,在当索引子***中查询出多个第一哈希值对应的多个小文件的索引文件时,可以根据索引链表,在索引链表中具有相同第一哈希值的索引文件中通过第二哈希值进行小文件的查询,定位小文件的位置,缩小了查询的范围,可以快速的找出小文件,而无需对索引子***中的所有索引文件进行查询,大大提高了查询小文件的效率。
本实施例提供的一种小文件查询装置,在查询小文件时,计算小文件的文件名哈希值,利用文件名哈希值在索引子***中存储的索引文件中的文件名哈希值和用户的待处理文件的文件名哈希值进行比对,确定用户欲查询的文件,并将结果及时反馈给用户;由于哈希值就是简单的数字串,所以对比的过程比较简单,大大节省了对比的时间,提高了小文件的查询效率。
本发明实施例所提供的小文件存储方法和小文件查询方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (18)
1.一种小文件存储方法,其特征在于,所述方法包括:
获取待存储的小文件;其中,所述小文件包括文件大小小于预设阈值的文件;
将获取到的所述小文件存储到当前的打包文件中,并生成所述小文件的元数据;所述小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
根据所述小文件的文件名计算所述小文件的属性值,其中,所述属性值包括:文件名哈希值;
将计算得到的所述属性值和所述小文件的元数据作为所述小文件的索引文件存储到索引子***。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述小文件的索引文件在所述索引子***中的位置信息;
从所述小文件的文件名哈希值中取出预设位数的数字串,作为所述小文件的快速查询信息;
将所述位置信息和所述快速查询信息在预设的快速查找表中进行关联存储。
3.根据权利要求1所述的方法,其特征在于,将计算得到的所述属性值和所述小文件的元数据作为所述小文件的索引文件存储到索引子***包括:
当索引子***中存在文件名哈希值相同的多个小文件时,为所述多个小文件建立索引链表;
存储所述多个小文件对应的所述索引链表。
4.根据权利要求1所述的方法,其特征在于,将获取到的所述小文件存储到当前的打包文件中包括:
确定获取到的所述小文件的占用量;
判断当前的打包文件的剩余存储容量是否大于所述小文件的占用量;
如果是,将所述小文件存储在所述当前的打包文件中;
如果否,生成新的打包文件存储所述小文件。
5.根据权利要求1所述的方法,其特征在于,在将获取到的所述小文件存储到当前的打包文件中,并形成小文件的元数据之前,所述方法还包括:
获取多个缓存空间对应的指针,其中,所述缓存空间用于缓存待存储的所述小文件;
根据多个缓存空间对应的指针生成所述小文件的缓存空间链表;
将获取的所述小文件缓存至所述缓存空间链表对应的多个缓存空间中。
6.根据权利要求5所述的方法,其特征在于,将获取到的所述小文件存储到当前的打包文件中包括:
判断所述多个缓存空间是否均写满;
如果是,将所述多个缓存空间中缓存的所述小文件写入所述打包文件中;
如果否,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;
当所述等待时间达到所述预设时间时,将所述多个缓存空间中缓存的小文件写入所述打包文件中。
7.根据权利要求1所述的方法,其特征在于,所述文件名哈希值包括:文件名的第一哈希值和第二哈希值;所述第一哈希值的长度小于所述第二哈希值的长度。
8.一种小文件查询方法,其特征在于,所述方法包括:
接收用户的小文件查询请求,所述小文件查询请求包括所述用户欲查询的小文件的文件名;其中,所述小文件包括文件大小小于预设阈值的文件;
根据接收到的所述小文件的文件名,计算所述小文件的文件名哈希值;
通过计算得到的所述文件名哈希值查询索引子***中的索引文件,根据查询结果定位所述小文件的位置;其中,所述索引文件包括小文件的文件名对应的属性值和所述小文件的元数据,所述属性值包括:文件名哈希值;所述元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
从定位的所述位置获取所述小文件;
将获取到的所述小文件返回给所述用户。
9.根据权利要求8所述的方法,其特征在于,通过计算得到的所述文件名哈希值查询索引子***中的索引文件,根据查询结果定位所述小文件的位置包括:
从计算得到的所述文件名哈希值中,取出预设位数的数字串,作为快速查询信息;
根据所述快速查询信息,在所述索引子***的快速查找表中,查询出所述文件名哈希值对应的小文件的索引文件在所述索引子***中的位置信息;
根据得到的所述位置信息,在所述索引子***中查询出所述索引文件;
根据查询出的所述索引文件中存储的所述小文件的元数据,定位所述小文件的位置。
10.根据权利要求8所述的方法,其特征在于,通过计算得到的所述文件名哈希值查询索引子***中的索引文件,根据查询结果定位所述小文件的位置还包括:
当所述文件名哈希值包括所述小文件的文件名对应的第一哈希值和第二哈希值时,通过第一哈希值查询索引子***中的索引文件;其中,所述第一哈希值的长度小于所述第二哈希值的长度;
当通过所述第一哈希值查询出多个小文件的索引文件时,根据所述第二哈希值,在所述索引子***存储的所述多个小文件对应的索引链表中,查询出所述第二哈希值对应的小文件的索引文件;
根据查询出的所述小文件的索引文件中存储的所述小文件的元数据,定位所述小文件的位置。
11.一种小文件存储装置,其特征在于,所述装置包括:
小文件获取模块,用于获取待存储的小文件;其中,所述小文件包括文件大小小于预设阈值的文件;
小文件存储模块,用于将获取到的所述小文件存储到当前的打包文件中,并生成所述小文件的元数据;所述小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
计算模块,用于根据所述小文件的文件名计算所述小文件的属性值,其中,所述属性值包括:文件名哈希值;
索引文件存储模块,用于将计算得到的所述属性值和所述小文件的元数据作为所述小文件的索引文件存储到索引子***。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
位置信息获取模块,用于获取所述小文件的索引文件在所述索引子***中的位置信息;
快速查询信息获取模块,用于从所述小文件的文件名哈希值中取出预设位数的数字串,作为所述小文件的快速查询信息;
关联存储模块,用于将所述位置信息和所述快速查询信息在预设的快速查找表中进行关联存储。
13.根据权利要求11所述的装置,其特征在于,索引文件存储模块包括:
索引链表建立单元,用于当索引子***中存在文件名哈希值相同的多个小文件时,为所述多个小文件建立索引链表;
索引链表存储单元,用于存储所述多个小文件对应的所述索引链表。
14.根据权利要求11所述的装置,其特征在于,小文件存储模块,包括:
小文件占用量确定单元,用于确定获取到的所述小文件的占用量;
小文件占用量判断单元,用于判断当前的打包文件的剩余存储容量是否大于所述小文件的占用量;
小文件存储单元,用于所述小文件占用量判断单元的判断结果为是时,将所述小文件存储在所述当前的打包文件中;
打包文件生成单元,用于所述小文件占用量判断单元的判断结果为否时,生成新的打包文件存储所述小文件。
15.根据权利要求11所述的装置,其特征在于,所述装置还包括:
缓存空间指针获取模块,用于获取多个缓存空间对应的指针,其中,所述缓存空间用于缓存待存储的所述小文件;
缓存空间链表生成模块,用于根据多个缓存空间对应的指针生成所述小文件的缓存空间链表;
小文件缓存模块,用于将所述小文件获取模块获取的所述小文件缓存至所述缓存空间链表对应的多个缓存空间中。
16.根据权利要求15所述的装置,其特征在于,所述小文件存储模块包括:
缓存空间写满判断单元,用于判断所述多个缓存空间是否均写满;
第一小文件写入单元,用于所述缓存空间写满判断单元的判断结果为是时,将所述多个缓存空间中缓存的所述小文件写入所述打包文件中;
预设时间判断单元,用于所述缓存空间写满判断单元的判断结果为否时,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;
第二小文件写入单元,用于当所述预设时间判断单元的判断结果为所述等待时间达到所述预设时间时,将所述多个缓存空间中缓存的小文件写入所述打包文件中。
17.一种小文件查询装置,其特征在于,所述装置包括:
查询请求接收模块,用于接收用户的小文件查询请求,所述小文件查询请求包括所述用户欲查询的小文件的文件名;其中,所述小文件包括文件大小小于预设阈值的文件;
文件名哈希值计算模块,用于根据接收到的所述小文件的文件名,计算所述小文件的文件名哈希值;
小文件定位模块,用于通过计算得到的所述文件名哈希值查询索引子***中的索引文件,根据查询结果定位所述小文件的位置;其中,所述索引文件包括小文件的文件名对应的属性值和所述小文件的元数据,所述属性值包括:文件名哈希值;所述元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
小文件获取模块,用于从定位的所述位置获取所述小文件;
小文件返回模块,用于将获取到的所述小文件返回给所述用户。
18.根据权利要求17所述的装置,其特征在于,所述小文件定位模块包括:
快速查询信息确定单元,用于从计算得到的所述文件名哈希值中,取出预设位数的数字串,作为快速查询信息;
位置信息查询单元,用于根据所述快速查询信息,在所述索引子***的快速查找表中,查询出所述文件名哈希值对应的小文件的索引文件在所述索引子***中的位置信息;
索引文件查询单元,用于根据得到的所述位置信息,在所述索引子***中查询出所述索引文件;
小文件定位单元,用于根据查询出的所述索引文件中存储的所述小文件的元数据,定位所述小文件的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510438056.XA CN105069048A (zh) | 2015-07-23 | 2015-07-23 | 一种小文件存储方法、查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510438056.XA CN105069048A (zh) | 2015-07-23 | 2015-07-23 | 一种小文件存储方法、查询方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105069048A true CN105069048A (zh) | 2015-11-18 |
Family
ID=54498418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510438056.XA Pending CN105069048A (zh) | 2015-07-23 | 2015-07-23 | 一种小文件存储方法、查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105069048A (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959423A (zh) * | 2016-07-22 | 2016-09-21 | 北京龙存科技有限责任公司 | 一种大量小文件远程传输的方法 |
CN106294603A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 文件存储方法及装置 |
CN106446288A (zh) * | 2016-11-11 | 2017-02-22 | 大唐微电子技术有限公司 | 一种应用于智能卡的文件处理方法及装置 |
CN106709025A (zh) * | 2016-12-28 | 2017-05-24 | 郑州云海信息技术有限公司 | 更新聚合对象的方法及装置 |
TWI587133B (zh) * | 2016-05-20 | 2017-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置之資料頁對齊方法及其查找表的製作方法 |
CN106951529A (zh) * | 2017-03-21 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种海量小文件的管理方法及*** |
WO2017177754A1 (zh) * | 2016-04-14 | 2017-10-19 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
CN107357921A (zh) * | 2017-07-21 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种小文件存储定位方法及*** |
CN107729558A (zh) * | 2017-11-08 | 2018-02-23 | 郑州云海信息技术有限公司 | 文件***碎片整理的方法、***、装置及计算机存储介质 |
CN107729505A (zh) * | 2017-10-23 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种缓存中的小文件的获取方法、装置及可读存储介质 |
CN107844483A (zh) * | 2016-09-18 | 2018-03-27 | 腾讯科技(深圳)有限公司 | 文件管理方法及装置 |
WO2018059239A1 (zh) * | 2016-09-28 | 2018-04-05 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
CN108121708A (zh) * | 2016-11-28 | 2018-06-05 | 英业达科技有限公司 | 试题电子化存取***及其方法 |
WO2018121430A1 (zh) * | 2016-12-26 | 2018-07-05 | 贵州白山云科技有限公司 | 文件存储和索引方法、装置、介质、设备及读取文件的方法 |
CN109240607A (zh) * | 2018-08-21 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种文件读取方法和装置 |
CN109634916A (zh) * | 2018-12-10 | 2019-04-16 | 平安科技(深圳)有限公司 | 文件存储及下载方法、装置及存储介质 |
CN109885535A (zh) * | 2019-01-04 | 2019-06-14 | 平安科技(深圳)有限公司 | 一种文件存储的方法及相关装置 |
CN110147203A (zh) * | 2019-05-16 | 2019-08-20 | 北京金山云网络技术有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
CN110196841A (zh) * | 2018-06-21 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 文件的存储方法和装置、查询方法和装置及服务器 |
CN110555000A (zh) * | 2019-09-05 | 2019-12-10 | 重庆紫光华山智安科技有限公司 | 一种卡口图片元数据并发写入、读取方法 |
CN111090628A (zh) * | 2019-12-20 | 2020-05-01 | 上海米哈游网络科技股份有限公司 | 一种数据处理方法、装置、存储介质及电子设备 |
CN111176574A (zh) * | 2019-12-27 | 2020-05-19 | 浪潮电子信息产业股份有限公司 | 一种小文件存储方法、装置、设备及介质 |
CN111858494A (zh) * | 2020-07-23 | 2020-10-30 | 珠海豹趣科技有限公司 | 文件获取方法、装置、存储介质及电子设备 |
CN112579533A (zh) * | 2020-12-25 | 2021-03-30 | 华录光存储研究院(大连)有限公司 | 一种小文件存储方法、装置及计算机设备 |
CN113094374A (zh) * | 2021-04-27 | 2021-07-09 | 广州炒米信息科技有限公司 | 分布式存储和检索方法、装置及计算机设备 |
CN113553300A (zh) * | 2021-07-27 | 2021-10-26 | 北京字跳网络技术有限公司 | 文件的处理方法、装置、可读介质和电子设备 |
CN113986838A (zh) * | 2021-12-28 | 2022-01-28 | 成都云祺科技有限公司 | 基于文件***的海量小文件处理方法、***及存储介质 |
CN117271440A (zh) * | 2023-11-21 | 2023-12-22 | 深圳市云希谷科技有限公司 | 一种基于freeRTOS文件信息存储方法、读取方法及相关设备 |
-
2015
- 2015-07-23 CN CN201510438056.XA patent/CN105069048A/zh active Pending
Non-Patent Citations (4)
Title |
---|
左大鹏等: "基于Hadoop处理小文件的优化策略", 《软件》 * |
张呈: "Hadoop集群下海量小文件优化处理", 《中国硕士学位论文全文数据库》 * |
张海等: "基于HDFS 的小文件存储与读取优化策略", 《计算机***应用》 * |
陈泽锋: "数字博物馆海量数据的分布式存储关键技术研究与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017177754A1 (zh) * | 2016-04-14 | 2017-10-19 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
TWI587133B (zh) * | 2016-05-20 | 2017-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置之資料頁對齊方法及其查找表的製作方法 |
US10338836B2 (en) | 2016-05-20 | 2019-07-02 | Silicon Motion, Inc. | Page aligning method and lookup table generating method of data storage device |
CN105959423A (zh) * | 2016-07-22 | 2016-09-21 | 北京龙存科技有限责任公司 | 一种大量小文件远程传输的方法 |
CN106294603A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 文件存储方法及装置 |
CN106294603B (zh) * | 2016-07-29 | 2019-07-23 | 北京奇虎科技有限公司 | 文件存储方法及装置 |
CN107844483B (zh) * | 2016-09-18 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 文件管理方法及装置 |
CN107844483A (zh) * | 2016-09-18 | 2018-03-27 | 腾讯科技(深圳)有限公司 | 文件管理方法及装置 |
WO2018059239A1 (zh) * | 2016-09-28 | 2018-04-05 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
US10664349B2 (en) | 2016-09-28 | 2020-05-26 | Hangzhou Hikvision Digital Technology Co., Ltd. | Method and device for file storage |
CN106446288A (zh) * | 2016-11-11 | 2017-02-22 | 大唐微电子技术有限公司 | 一种应用于智能卡的文件处理方法及装置 |
CN108121708A (zh) * | 2016-11-28 | 2018-06-05 | 英业达科技有限公司 | 试题电子化存取***及其方法 |
WO2018121430A1 (zh) * | 2016-12-26 | 2018-07-05 | 贵州白山云科技有限公司 | 文件存储和索引方法、装置、介质、设备及读取文件的方法 |
CN106709025A (zh) * | 2016-12-28 | 2017-05-24 | 郑州云海信息技术有限公司 | 更新聚合对象的方法及装置 |
CN106951529A (zh) * | 2017-03-21 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种海量小文件的管理方法及*** |
CN107357921A (zh) * | 2017-07-21 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种小文件存储定位方法及*** |
CN107729505A (zh) * | 2017-10-23 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种缓存中的小文件的获取方法、装置及可读存储介质 |
CN107729558B (zh) * | 2017-11-08 | 2021-06-29 | 郑州云海信息技术有限公司 | 文件***碎片整理的方法、***、装置及计算机存储介质 |
CN107729558A (zh) * | 2017-11-08 | 2018-02-23 | 郑州云海信息技术有限公司 | 文件***碎片整理的方法、***、装置及计算机存储介质 |
CN110196841A (zh) * | 2018-06-21 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 文件的存储方法和装置、查询方法和装置及服务器 |
CN110196841B (zh) * | 2018-06-21 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 文件的存储方法和装置、查询方法和装置及服务器 |
CN109240607A (zh) * | 2018-08-21 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种文件读取方法和装置 |
CN109240607B (zh) * | 2018-08-21 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种文件读取方法和装置 |
CN109634916A (zh) * | 2018-12-10 | 2019-04-16 | 平安科技(深圳)有限公司 | 文件存储及下载方法、装置及存储介质 |
CN109885535A (zh) * | 2019-01-04 | 2019-06-14 | 平安科技(深圳)有限公司 | 一种文件存储的方法及相关装置 |
CN110147203A (zh) * | 2019-05-16 | 2019-08-20 | 北京金山云网络技术有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
CN110147203B (zh) * | 2019-05-16 | 2022-11-04 | 北京金山云网络技术有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
CN110555000A (zh) * | 2019-09-05 | 2019-12-10 | 重庆紫光华山智安科技有限公司 | 一种卡口图片元数据并发写入、读取方法 |
CN111090628B (zh) * | 2019-12-20 | 2023-11-14 | 上海米哈游网络科技股份有限公司 | 一种数据处理方法、装置、存储介质及电子设备 |
CN111090628A (zh) * | 2019-12-20 | 2020-05-01 | 上海米哈游网络科技股份有限公司 | 一种数据处理方法、装置、存储介质及电子设备 |
CN111176574B (zh) * | 2019-12-27 | 2022-03-22 | 浪潮电子信息产业股份有限公司 | 一种小文件存储方法、装置、设备及介质 |
CN111176574A (zh) * | 2019-12-27 | 2020-05-19 | 浪潮电子信息产业股份有限公司 | 一种小文件存储方法、装置、设备及介质 |
CN111858494A (zh) * | 2020-07-23 | 2020-10-30 | 珠海豹趣科技有限公司 | 文件获取方法、装置、存储介质及电子设备 |
CN111858494B (zh) * | 2020-07-23 | 2024-05-17 | 珠海豹趣科技有限公司 | 文件获取方法、装置、存储介质及电子设备 |
CN112579533A (zh) * | 2020-12-25 | 2021-03-30 | 华录光存储研究院(大连)有限公司 | 一种小文件存储方法、装置及计算机设备 |
CN113094374A (zh) * | 2021-04-27 | 2021-07-09 | 广州炒米信息科技有限公司 | 分布式存储和检索方法、装置及计算机设备 |
CN113553300A (zh) * | 2021-07-27 | 2021-10-26 | 北京字跳网络技术有限公司 | 文件的处理方法、装置、可读介质和电子设备 |
CN113553300B (zh) * | 2021-07-27 | 2024-05-24 | 北京字跳网络技术有限公司 | 文件的处理方法、装置、可读介质和电子设备 |
CN113986838A (zh) * | 2021-12-28 | 2022-01-28 | 成都云祺科技有限公司 | 基于文件***的海量小文件处理方法、***及存储介质 |
CN117271440A (zh) * | 2023-11-21 | 2023-12-22 | 深圳市云希谷科技有限公司 | 一种基于freeRTOS文件信息存储方法、读取方法及相关设备 |
CN117271440B (zh) * | 2023-11-21 | 2024-02-06 | 深圳市云希谷科技有限公司 | 一种基于freeRTOS文件信息存储方法、读取方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105069048A (zh) | 一种小文件存储方法、查询方法和装置 | |
EP4068070A1 (en) | Data storage method and apparatus, and storage system | |
US9043334B2 (en) | Method and system for accessing files on a storage system | |
US9953107B2 (en) | Memory system including key-value store | |
US10222987B2 (en) | Data deduplication with augmented cuckoo filters | |
US9009428B2 (en) | Data store page recovery | |
CN105224546B (zh) | 数据存储和查询方法及设备 | |
CN101777017B (zh) | 一种连续数据保护***的快速恢复方法 | |
JP5886447B2 (ja) | ロケーション非依存のファイル | |
US20070094315A1 (en) | Apparatus and method for storing and managing additional data in file system | |
CN109669622B (zh) | 一种文件管理方法、文件管理装置、电子设备及存储介质 | |
CN105468642A (zh) | 数据的存储方法及装置 | |
US10509780B2 (en) | Maintaining I/O transaction metadata in log-with-index structure | |
CN104881481A (zh) | 一种存取海量时间序列数据的方法及装置 | |
CN103955530A (zh) | 一种在线重复数据删除***的数据重建优化方法 | |
CN103279489A (zh) | 一种元数据的存储方法、装置 | |
CN113094374A (zh) | 分布式存储和检索方法、装置及计算机设备 | |
US20210224161A1 (en) | Efficient io processing in a storage system with instant snapshot, xcopy, and unmap capabilities | |
US10990324B2 (en) | Storage node processing of predefined data functions | |
CN102722450A (zh) | 一种基于位置敏感哈希的删冗块设备存储方法 | |
KR102071072B1 (ko) | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 | |
US8135760B1 (en) | Determining the lineage of a content unit on an object addressable storage system | |
CN112463734A (zh) | 一种文件检索方法、***及相关装置 | |
CN110795031A (zh) | 一种基于全闪存储的数据重删方法、装置和*** | |
CN109669623B (zh) | 一种文件管理方法、文件管理装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151118 |
|
RJ01 | Rejection of invention patent application after publication |