文件,存储设备在对目标文件进行存储时,在将目标文件存储到数据区的同时,通常也会将该文件的大小、在磁盘中的起始地址等信息作为索引数据在磁盘中指定的索引区进行存储。
[0070]当从存储设备中读取目标文件时,首先从索引区读取该目标文件的大小、在磁盘中的起始地址等索引数据,然后再根据该索引数据中的起始地址以及文件大小从磁盘中的对应位置读取该目标文件。如果存储设备在存储目标文件时,索引数据中未记录该目标文件的大小,那么在读取该目标文件时,存储设备基于索引数据中的起始地址从磁盘中读取该目标文件时,将无法获知到读取多少长度的数据,从而造成读取失败。可见,目标文件的大小是目标文件的索引数据中必不可少的内容。
[0071]在实际应用中,目标文件的大小在索引区中通常只占用很小的存储空间,例如,当目标文件为小文件时,文件大小通常只占用索引区几个字节的空间。然而当存储设备进行大批量文件的存储时,由于文件数量很大,索引区占用的存储空间将会急剧增加,这将会影响文件的查询效率。
[0072]在本实施例中,为解决上述问题,存储设备在进行大批量文件的存储时,首先可以遍历待存储的目标文件集,获取该目标文件集中各目标文件的大小。其中,该目标文件集可以是待存储的目标文件的集合;例如,该目标文件集可以是批量的图片、字库等。
[0073]当存储设备获取到该目标文件集中各目标文件的大小时,可以根据预设的统计分析算法对获取到的各目标文件的大小进行统计分析,来获取各目标文件的大小分布特征,该大小分布特征可以用于表征上述目标文件集中各目标文件的大小分布规律。
[0074]其中,上述预设的统计分析算法在本实施例中不进行特别限定,可以根据实际的需求进行选择;例如,在实现时,上述预设的统计分析算法可以采用数据统计分析领域常用的用于描述数据分布特征的算法。
[0075]在基于上述预设的统计分析算法对获取到的各目标文件的大小进行统计分析时,得到的大小分布特征中可以包括统计分析出的若干文件大小分布区间,以及落入上述若干文件大小分布区间中目标文件的数量。
[0076]例如,假设所述目标文件集为字库集,存储设备可以遍历该字库集获取该字库集中各字符的大小,对获取到的字符大小进行排序整理,然后将排序整理后的字符大小作为输入数据,基于上述预设的统计分析算法进行统计分析以得到该字库集中各字符的大小分布规律。假设该字库集一共包括100个标准字符,大小在O到255字节之间的字符一共15个,大小在256到500字节之间的字符一共80个,大小在501到600字节之间的字符一共5个,那么基于上述预设的统计分析算法统计分析完毕后,可以得到3个文件大小分布区间分别为[O, 255], [256, 500]以及[501,600],并且还可以统计分析出落入[O, 255]区间中的字符数为15,落入[256,500]区间中的字符数为80,落入[501,600]区间中的字符数为5。
[0077]当基于上述预设的统计分析算法对获取到的各目标文件的大小进行统计分析完成后,存储设备可以分别计算上述若干文件大小分布区间中目标文件的数量占所述目标文件集中目标文件总数量的比值,然后将计算的上述比值与预设阈值进行比较。当上述若干文件大小分布区间中任一文件大小分布区间中目标文件的数量占所述目标文件集中目标文件总数量的比值达到上述预设阈值时,存储设备可以将该文件大小分布区间选定的索引压缩区间(预设区间),对于文件大小落入索引压缩区间中的目标文件,存储设备在对这些目标文件进行存储时,可以对这些目标文件的大小进行压缩后存储到索引区,以节省索引区的存储空间。
[0078]其中,上述预设阈值可以用于衡量上述目标文件集中的目标文件是否集中分布在上述各文件大小分布区间中的某个区间,比如,在实现时,可以将预设阈值设置为一个较大的值,当上述各文件大小分布区间中任一区间中的目标文件的数量达到该预设阈值时,可以认为上述目标文件集中的文件大小集中分布在该区间内,因此存储设备可以将该区间选定为索引压缩区间,存储设备在针对上述目标文件集中的目标文件进行存储时,可以对该区间中的目标文件的大小进行压缩后存储到索引区。
[0079]例如,仍假设所述目标文件集为字库集,该字库集一共包括100个标准字符,大小在O到255字节之间的字符一共15个,大小在256到500字节之间的字符一共80个,大小在501到600字节之间的字符一共5个。基于上述预设的统计分析算法统计分析完毕后,得到3个文件大小分布区间分别为[O, 255], [256, 500]以及[501,600],并且统计分析出落入[0,255]区间中的字符数为15,落入[256,500]区间中的字符数为80,落入[501,600]区间中的字符数为5。假设上述预设阈值为80%,[256, 500]区间中的字符数达到80%,因此存储设备可以将[256,500]区间选定为索引压缩区间,对于索引压缩区间中的目标文件,存储设备可以对该区间中的目标文件的大小进行压缩后存储到索引区。
[0080]当然,在实现时,当上述预设阈值设置的较小时,此时上述各文件大小分布区间中可能会存在多个区间中的目标文件的数量均达到该预设阈值的情况,在这种情况下,存储设备可以选定多个索引压缩区间,并为该多个所以索引压缩区间分别设置不同的ID进行区分。
[0081]在本实施例中,存储设备对索引压缩区间中的目标文件的大小进行压缩,可以通过为上述索引压缩区间设置大小偏移量来实现。在实现时,存储设备在选定了索引压缩区间后,还可以为选定的索引压缩区间设置对应的大小偏移量,当设置了大小偏移量后,存储设备在对索引压缩区间中的目标文件进行存储时,可以基于该大小偏移量对该区间中的目标文件的大小进行压缩。
[0082]其中,存储设备在为选定的索引压缩区间设置大小偏移量时,可以将索引压缩区间的起始值设置为该区间的大小偏移量。例如,假设存储设备选定的索引压缩区间为[256,500],那么可以将大小偏移量设置为256。
[0083]在本实施例中,当存储设备通过对上述目标文件集中的各目标文件的大小进行统计分析,选定出索引压缩区间,并为选定的索引压缩区间设置了大小偏移量后,此时存储设备可以开始针对上述目标文件集中的各目标文件进行存储。
[0084]存储设备在针对上述目标文件中的各目标文件进行存储时,可以按照上述目标文件集中目标文件的顺序依次读取目标文件,当读取一个目标文件后,存储设备可以获取该目标文件的大小,并判断该目标文件的大小是否落入选定的上述索引压缩区间,如果该目标文件的大小落入了该索引压缩区间,此时存储设备在将该目标文件存储到磁盘中对应的数据区后,可以将该目标文件的大小与该索引压缩区间的大小偏移量的差值作为所述目标文件的索引数据存储到磁盘中对应的索引区。通过这种方式,可以实现对索引压缩区间中目标文件的大小进行压缩,从而可以节省索引区的存储空间,有助于提升目标文件的查询效率。当然,对于文件大小未落入上述索引压缩区间的目标文件,由于数量较少,在进行存储时仍然可以按照默认的方式进行处理。
[0085]例如,仍假设所述目标文件集为字库集,该字库集一共包括100个标准字符,基于上述预设的统计分析算法统计分析完毕后,得到3个文件大小分布区间分别为[0,255]、[256, 500]以及[501,600],并且还可以统计分析出落入[O, 255]区间中的字符数为15,落入[256, 500]区间中的字符数为80,落入[501,600]区间中的字符数为5。假设[256, 500]区间被选定为索引压缩区间,那么存储设备在对上述字库集中的字符进行存储时,可以将[256,500]区间中的字符大小减去大小偏移量256后,将差值作为对应的索引数据存储到索引区。比如假设该区间中的某字符大小为500字节,按照默认存储方式,在索引区中存储该字符的实际大小需要两个字节(二进制存储,一个字节8个比特,记录的最大值为256),而通过上述大小偏移量对该字符的大小进行压缩后,索引区中存储的该字符的大小为该字符实际大小500字节与偏移量256的差值244字节,在索引区中存储该字符压缩后的大小时仅需要一个字节。当然,对于[0,255]以及[501,600]区间中的字符,由于数量较少仍然可以按照默认的存储方式进行处理。
[0086]可见,上述方案在存储设备存储大批量的文件时,可以有效的减少目标文件的索引数据的大小,节省索引数据占用磁盘的存储空间。
[0087]在本实施例中,当存储设备接收到针对已存储完成的目标文件的读取请求时,存储设备可以在索引区中读取与该读取请求对应的索引数据,并判断该与该索引数据对应的目标文件是否为上述索引压缩区间中的目标文件,如果是,存储设备可以将从索引区读取到的该目标文件的文件大小与该索引压缩区间的大小偏移量的和作为该目标文件的实际文件大小,从磁盘中的数据区读取该目标文件。当然,如果该目标文件不是上述索引压缩区间中的目标文件,存储设备可以直接根据从索引区中读取到的该目标文件的文件大小,从磁盘中的数据区读取该目标文件。
[0088]在以上实施例中,通过获取目标文件的文件大小,并判断所述目标文件的文件大小是否落入预设区间,其中所述预设区间被预先设置了对应的大小偏移量;当所述目标文件的大小落入所述预设区间时,则将所述目标文件的大小与所述大小偏移量的差值作为所述目标文件的索引数据进行存储,从而可以有效的减少目标文件的索引数据的大小,节省索引数据占用磁盘的存储空间。
[0089]如图2所示,图2是根据一示例性实施例示出的一种文件存储方法,应用于存储设备中,包括以下步骤:
[0090]在步骤201中,遍历目标文件集以获取所述目标文件集中各目标文件的大小;
[0091]在步骤202中,根据预设算法对所述目标文件集中各目标文件的大小进行统计分析以得到表征所述目标文件集中各目标文件的大小分布规律的大小分布特征;所述各目标文件的大小分布特征包括统计分析出的若干文件大小分布区间,以及落入所述若干文件大小分布区间中目标文件的数量;
[0092]在步骤2