CN101859316B - 一种对海量文件进行存取的方法及装置 - Google Patents

一种对海量文件进行存取的方法及装置 Download PDF

Info

Publication number
CN101859316B
CN101859316B CN2010101630518A CN201010163051A CN101859316B CN 101859316 B CN101859316 B CN 101859316B CN 2010101630518 A CN2010101630518 A CN 2010101630518A CN 201010163051 A CN201010163051 A CN 201010163051A CN 101859316 B CN101859316 B CN 101859316B
Authority
CN
China
Prior art keywords
user
name
integer sequence
class catalogue
catalogue
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.)
Expired - Fee Related
Application number
CN2010101630518A
Other languages
English (en)
Other versions
CN101859316A (zh
Inventor
赵辉
姚爱国
钟良勇
肖保锋
赵鹏山
王志亮
崔旭敏
王智广
曾舜峰
王春晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WUXIAN LITONG COMMUNICATIONS TECHNOLOGICAL CO Ltd BEIJING
Original Assignee
WUXIAN LITONG COMMUNICATIONS TECHNOLOGICAL CO Ltd BEIJING
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WUXIAN LITONG COMMUNICATIONS TECHNOLOGICAL CO Ltd BEIJING filed Critical WUXIAN LITONG COMMUNICATIONS TECHNOLOGICAL CO Ltd BEIJING
Priority to CN2010101630518A priority Critical patent/CN101859316B/zh
Publication of CN101859316A publication Critical patent/CN101859316A/zh
Application granted granted Critical
Publication of CN101859316B publication Critical patent/CN101859316B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种对海量文件进行存取的方法及装置,所述方法包括:获取用户名称,对所述用户名称进行编码计算,获得与所述用户名称对应的整数序列;将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录,将所述用户名称作为所述二级目录下的三级目录;在所述三级目录下存取所述用户名称所对应的用户数据。应用本发明实施例,通过与用户名称对应的整数序列,可以将用户数据平均分布到多个目录下,而且,通过采用多级存储的方式,减少了每个目录下的用户数据,因而,既支持了海量数据,又提高了存取效率。

Description

一种对海量文件进行存取的方法及装置
技术领域
本发明涉及数据业务技术领域,特别涉及一种对海量文件进行存取的方法及装置。
背景技术
随着近年来软件技术的发展及企业信息建设的推荐,现在的应用系统所要处理的数据越来越庞大,所要服务的用户数量也不断加大。现有的应用服务器系统通常都会有大量的用户数据需要存储和访问。对用户的服务质量依赖于对数据的存储和访问获取的响应速度。而随着数据量的增加和用户数的增多,在达到一定的数量级时,会造成在文件系统中同一级目录数量过多,系统检索目录的速度大大降低,在创建和读取用户数据文件时都大大增加了时间的开销和系统资源的开销,降低了用户服务质量,使得文件存储系统成为整个应用系统的瓶颈。
为了改进文件存储系统的性能,应用系统多采用将用户信息分布到不同目录和设备的方式进行存储。常用的方式有:
1)直接以用户编号建立目录,在该目录下存储该用户的用户数据,在读取用户数据时直接在该用户目录下读取。
上述存取方式至少存在如下缺陷:用户数据的存储规模有限。在计算机操作系统里,对单层目录里可以存储的目录和文件的数量是有限的。再有,同级目录太多,用户数据定位太慢,影响对用户数据的存取速度。
2)将用户编号排序,将一定范围内的用户数据集中存放到同一个目录内。在该目录内存取用户数据信息。
上述存取方式至少存在如下缺陷:在用户增长的过程中,对用户数据的存取依然集中在同一个目录内,只有在超过预设的范围后才能起到作用。其次,上述范围大小难以确定,太小,则难以支撑大数量级的用户存取需求,太大,则导致同级目录太多而影响对用户数据的存取速度。再有,上述范围大小值一旦确定就很难变更,使得整个应用系统对文件系统的使用也显得不灵活,难以扩展和改变部署。
3)根据用户编号,将相同的首几位或者尾几位的用户数据集中存放到一个目录内。
上述存取方式至少存在如下缺陷:依然不能将用户数据均衡的分布到各个目录下进行存取。而且,一旦确定取首几位或者尾几位的位数,就不能再改变,同样难以扩展。同样存在同级目录太多,用户数据定位太慢,影响对用户数据的存取速度。此外,对于一些应用系统,用户编号不是平均分布,而是集中在某些特殊编号上的情况,此方式依然不能解决对用户数据的存储和读取过于集中的问题。
发明内容
本发明实施例提供一种对海量文件进行存取的方法及装置,使用户数据可以在不同的目录下均匀分布,以解决海量文件快速存取的问题。
本发明实施例提供了一种对海量文件进行存取的方法,包括:
获取用户名称,对所述用户名称进行编码计算,获得与所述用户名称对应的整数序列;
将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录,将所述用户名称作为所述二级目录下的三级目录;
在所述三级目录下存取所述用户名称所对应的用户数据。
其中,对所述用户名称进行编码计算所采用的算法为:HASH算法、或MD5算法,或压缩算法。
其中,获得与所述用户名称对应的整数序列的步骤包括:
将对所述用户名称进行编码计算后的值除以一个预设的数取模,将所述取模后的数作为所述用户名称对应的整数序列。
其中,所述对所述用户名称进行编码计算所采用的算法为HASH算法,所述预设的数为65536,所述整数序列为16位。
其中,将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录具体包括:
将所述整数序列分为高位字节和低位字节两部分;
将所述高位字节作为所述一级目录,将所述低位字节作为所述一级目录的二级目录,或者,将所述低位字节作为所述一级目录,将所述高位字节作为所述一级目录的二级目录。
本发明实施例还提供了一种对海量文件进行存取的装置,包括:
整数序列获取模块,用于获取用户名称,对所述用户名称进行编码计算,获得与所述用户名称对应的整数序列;
目录划分模块,用于将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录,将所述用户名称作为所述二级目录下的三级目录;
存取模块,用于在所述三级目录下存取所述用户名称所对应的用户数据。
其中,对所述用户名称进行编码计算所采用的算法为:HASH算法、或MD5算法,或压缩算法。
其中,所述整数序列获取模块包括:
编码计算模块,用于获取用户名称,对所述用户名称进行编码计算;
取模模块,用于获得与所述用户名称对应的整数序列;其中,所述获得与所述用户名称对应的整数序列的步骤包括:将对所述用户名称进行编码计算后的值除以一个预设的数取模,将所述取模后的数作为所述用户名称对应的整数序列。
其中,所述对所述用户名称进行编码计算所采用的算法为HASH算法,所述预设的数为65536,所述整数序列为16位。
其中,将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录具体包括:
将所述整数序列分为高位字节和低位字节两部分;
将所述高位字节作为所述一级目录,将所述低位字节作为所述一级目录的二级目录,或者,将所述低位字节作为所述一级目录,将所述高位字节作为所述一级目录的二级目录。
可见,应用本发明实施例,通过与用户名称对应的整数序列,可以将用户数据平均分布到多个目录下,而且,通过采用多级存储的方式,减少了每个目录下的用户数据,因而,既支持了海量数据,又提高了存取效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的对海量文件进行存取的方法流程图;
图2是根据本发明实施例的对海量文件进行存取的一具体实例的流程图;
图3是根据图2所示实施例一个目录结构示意图;
图4是根据本发明实施例的对海量文件进行存取的装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据本发明实施例的对海量文件进行存取的方法流程图,具体包括:
步骤101,获取用户名称,对所述用户名称进行编码计算,获得与所述用户名称对应的整数序列;
上述用户名称可以是文字,或数字编号,或者二者的组合;
上述对所述用户名称进行编码计算所采用的算法可以为:HASH算法、或MD5算法,或压缩算法。本发明实施例对所采用的具体算法并不做限定,只要能将用户名称转换为数字序列的所有算法都可以使用。
其中,获得与所述用户名称对应的整数序列的步骤可以包括:
将对所述用户名称进行编码计算后的值除以一个预设的数取模,将所述取模后的数作为所述用户名称对应的整数序列。一个较佳的实施例是:对所述用户名称进行编码计算所采用的算法为HASH算法,所述预设的数为65536,所述用户名称对应的整数序列为16位。
步骤102,将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录,将所述用户名称作为所述二级目录下的三级目录;
具体的,一种可能的情况的是,将所述整数序列分为高位字节和低位字节两部分;将所述高位字节作为所述一级目录,将所述低位字节作为所述一级目录的二级目录,或者,将所述低位字节作为所述一级目录,将所述高位字节作为所述一级目录的二级目录。
步骤103,在所述三级目录下存取所述用户名称所对应的用户数据。
可见,应用本发明实施例提供的方法,通过与用户名称对应的整数序列,可以将用户数据平均分布到多个目录下,而且,通过采用多级存储的方式,减少了每个目录下的用户数据,因而,既支持了海量数据,又提高了存取效率。
下面结合一具体实例再做详细说明。
参见图2,其是根据本发明实施例的对海量文件进行存取的一具体实例的流程图,本实施例中以存储数据为例进行说明,具体包括:
步骤201,当有新用户数据需要保存时,系统首先获得用户名称,将该用户名称为一组数字编号,这里,对该数字编号进行HASH运算,得到一个整数;
步骤202,将HASH运算后得到的整数除以65536取模,得到一个0-65535的整数;
步骤203,将取模后得到整数的高位字节(0-255)作为一级目录;
步骤204,将取模后得到整数低位字节(0-255)作为二级目录;
步骤205,用户名称作为三级目录以避免冲突,
步骤206,将待保存的用户数据存储在该三级目录下。
可以理解,当需要读取上述用户数据时可以按同样的方法快速定位到用户数据所存放目录,并进行读取操作。
需要说明的是,对于步骤203和204,可以采取另一种目录定义方式,即将取模后得到整数低位字节(0-255)作为一级目录,取模后得到整数的高位字节(0-255)作为二级目录,这样,对本发明实施例的存取方式没有任何影响。
应用如图2所示的方法,可以创建256个一级目录,256个二级目录,而三级目录只要平均达到153个即可满足千万级用户系统的需要,同时在每一级目录的子目录或文件的数量也非常少,所以用户目录的创建和用户文件的检索速度将会非常快,因而使得用户数据的存取速度非常快。
参见图3,其是根据图2所示实施例一个目录结构示意图,图3可知,在采用图2所示方法时,在存储根目录下,可以有256个一级目录,在每个一级目录下,可以有256个二级目录,在每个二级目录下可以有若干个以用户名称定义的三级目录。
例如,假设用户名称为123456789,对其进行HASH算法并除以65536取模后得到一个16位的数0010100011000011;这里,将该16位的高8位00101000作为一级目录,该16位的低8位11000011作为二级目录,将123456789作为三级目录,这样,用户名称为123456789的用户数据就存储在了“根目录/00101000/11000011/123456789”路径下。
需要说明的是,上述实施例的一、二级目录是用二进制来表示的,在实际应用中,也可以用16进制或10进制来表示,例如,以16进制表示如下:/28/C3/123456789;以10进制表示如下:/40/195/123456789。
应用本发明实施例提供的方法,使用高效的算法编码对用户名称散列,以平均分布用户数据。对用户数据分多级目录存储。通过对上述算法编码得出的数按216即65536取模,以高字节数和低字节数分别作为一级和二级目录名称,本发明实施例可以使得每一级目录里都只有不超过256个子目录,从而可以快速存取用户数据。同时以用户名称作为第三级目录,还可以避免目录定位冲突。可见,本发明实施例可以使用户数据在不同的目录下均匀分布,解决了海量文件快速存取的问题。
本发明实施例还提供了一种对海量文件进行存取的装置,参见图4,具体包括:
整数序列获取模块401,用于获取用户名称,对所述用户名称进行编码计算,获得与所述用户名称对应的整数序列;
目录划分模块402,用于将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录,将所述用户名称作为所述二级目录下的三级目录;
存取模块403,用于在所述三级目录下存取所述用户名称所对应的用户数据。
其中,对所述用户名称进行编码计算所采用的算法为:HASH算法、或MD5算法,或压缩算法。
其中,所述整数序列获取模块401可以具体包括:
编码计算模块,用于获取用户名称,对所述用户名称进行编码计算;
取模模块,用于获得与所述用户名称对应的整数序列;其中,所述获得与所述用户名称对应的整数序列的步骤包括:将对所述用户名称进行编码计算后的值除以一个预设的数取模,将所述取模后的数作为所述用户名称对应的整数序列。
上述对所述用户名称进行编码计算所采用的算法为HASH算法,所述预设的数为65536,所述整数序列为16位。
其中,上述将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录具体包括:
将所述整数序列分为高位字节和低位字节两部分;
将所述高位字节作为所述一级目录,将所述低位字节作为所述一级目录的二级目录,或者,将所述低位字节作为所述一级目录,将所述高位字节作为所述一级目录的二级目录。
应用本发明实施例提供的装置,使用高效的算法编码对用户名称散列,以平均分布用户数据。对用户数据分多级目录存储。通过对上述算法编码得出的数按216即65536取模,以高字节数和低字节数分别作为一级和二级目录名称,本发明实施例可以使得每一级目录里都只有不超过256个子目录,从而可以快速存取用户数据。同时以用户名称作为第三级目录,还可以避免目录定位冲突。可见,本发明实施例可以使用户数据在不同的目录下均匀分布,解决了海量文件快速存取的问题。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (6)

1.一种对海量文件进行存取的方法,其特征在于,包括:
获取用户名称,对所述用户名称进行编码计算,获得与所述用户名称对应的整数序列;其中,获得与所述用户名称对应的整数序列的步骤包括:将对所述用户名称进行编码计算后的值除以一个预设的数取模,将所述取模后的数作为所述用户名称对应的整数序列;
将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录,将所述用户名称作为所述二级目录下的三级目录;
在所述三级目录下存取所述用户名称所对应的用户数据;
其中,将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录具体包括:
将所述整数序列分为高位字节和低位字节两部分;
将所述高位字节作为所述一级目录,将所述低位字节作为所述一级目录的二级目录,或者,将所述低位字节作为所述一级目录,将所述高位字节作为所述一级目录的二级目录。
2.根据权利要求1所述的方法,其特征在于,对所述用户名称进行编码计算所采用的算法为:HASH算法、或MD5算法,或压缩算法。
3.根据权利要求1所述的方法,其特征在于,所述对所述用户名称进行编码计算所采用的算法为HASH算法,所述预设的数为65536,所述整数序列为16位。
4.一种对海量文件进行存取的装置,其特征在于,包括:
整数序列获取模块,用于获取用户名称,对所述用户名称进行编码计算,获得与所述用户名称对应的整数序列;
目录划分模块,用于将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录,将所述用户名称作为所述二级目录下的三级目录;
存取模块,用于在所述三级目录下存取所述用户名称所对应的用户数据;
其中,所述整数序列获取模块包括:
编码计算模块,用于获取用户名称,对所述用户名称进行编码计算;
取模模块,用于获得与所述用户名称对应的整数序列;其中,所述获得 与所述用户名称对应的整数序列的步骤包括:将对所述用户名称进行编码计算后的值除以一个预设的数取模,将所述取模后的数作为所述用户名称对应的整数序列
其中,将所述整数序列分为两部分,一部分作为一级目录,另一部分作为所述一级目录的二级目录具体包括:
将所述整数序列分为高位字节和低位字节两部分;
将所述高位字节作为所述一级目录,将所述低位字节作为所述一级目录的二级目录,或者,将所述低位字节作为所述一级目录,将所述高位字节作为所述一级目录的二级目录。
5.根据权利要求4所述的装置,其特征在于,对所述用户名称进行编码计算所采用的算法为:HASH算法、或MD5算法,或压缩算法。
6.根据权利要求4所述的装置,其特征在于,所述对所述用户名称进行编码计算所采用的算法为HASH算法,所述预设的数为65536,所述整数序列为16位。 
CN2010101630518A 2010-04-29 2010-04-29 一种对海量文件进行存取的方法及装置 Expired - Fee Related CN101859316B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101630518A CN101859316B (zh) 2010-04-29 2010-04-29 一种对海量文件进行存取的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101630518A CN101859316B (zh) 2010-04-29 2010-04-29 一种对海量文件进行存取的方法及装置

Publications (2)

Publication Number Publication Date
CN101859316A CN101859316A (zh) 2010-10-13
CN101859316B true CN101859316B (zh) 2012-07-11

Family

ID=42945229

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101630518A Expired - Fee Related CN101859316B (zh) 2010-04-29 2010-04-29 一种对海量文件进行存取的方法及装置

Country Status (1)

Country Link
CN (1) CN101859316B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662660A (zh) * 2012-03-23 2012-09-12 锐骐(厦门)电子科技有限公司 一种基于文件遍历技术的fota版本管控方法
CN102779166A (zh) * 2012-06-21 2012-11-14 宁波波导股份有限公司 一种存储大量数据的方法
CN102904931A (zh) * 2012-09-19 2013-01-30 河南锐之旗信息技术有限公司 一种图片存储与读取方法
CN106326280B (zh) * 2015-06-30 2021-06-29 中兴通讯股份有限公司 数据处理方法、装置及系统
CN105653713B (zh) * 2015-12-30 2017-10-17 广东欧珀移动通信有限公司 一种确定设备识别码存在的方法及装置
CN108038382A (zh) * 2017-10-18 2018-05-15 北京丁牛科技有限公司 基于cpu-gpu架构的彩虹链表的处理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1260546A (zh) * 1999-01-08 2000-07-19 国际商业机器公司 在手持装置中存储和检索数据的方法及装置
CN101221582A (zh) * 2008-01-29 2008-07-16 北京北方烽火科技有限公司 一种嵌入式系统数据库的实现方法
CN101414309A (zh) * 2008-11-27 2009-04-22 上海交通大学 大规模数据信息排重处理系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1260546A (zh) * 1999-01-08 2000-07-19 国际商业机器公司 在手持装置中存储和检索数据的方法及装置
CN101221582A (zh) * 2008-01-29 2008-07-16 北京北方烽火科技有限公司 一种嵌入式系统数据库的实现方法
CN101414309A (zh) * 2008-11-27 2009-04-22 上海交通大学 大规模数据信息排重处理系统

Also Published As

Publication number Publication date
CN101859316A (zh) 2010-10-13

Similar Documents

Publication Publication Date Title
CN101859316B (zh) 一种对海量文件进行存取的方法及装置
CN107040582B (zh) 一种数据处理方法及装置
CN102819599B (zh) 在一致性哈希数据分布基础上构建层次目录的方法
CN100367241C (zh) 一种数据存储的方法、系统及设备
CN105488050B (zh) 一种数据库多索引方法、装置及系统
CN102985909B (zh) 为良好分格的对象提供高扩展性网络存储的方法和设备
US20190260388A1 (en) Storage access interface to an encoded storage system
CN110347651B (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN102693302A (zh) 快速文件比对方法、系统及客户端
CN104765749A (zh) 一种数据存储方法及装置
CN106202524A (zh) 数据库及其分表装置和方法
CN104111924A (zh) 一种数据库系统
CN101661509A (zh) 一种生成数据库表主键字段的方法及装置
CN108108247A (zh) 分布式图片存储服务系统和方法
Dai et al. Improving load balance for data-intensive computing on cloud platforms
CN107644050A (zh) 一种基于solr的Hbase的查询方法及装置
CN101419600A (zh) 基于面向对象文件系统的数据副本映射方法及装置
CN104601486A (zh) 一种网络流量的分流方法和装置
CN108573402A (zh) 一种兑换码发放方法、服务器及系统
CN110419029A (zh) 在分布式存储网络中部分更新数据内容的方法
CN103744882B (zh) 一种基于键值对的目录片段表示方法及装置
CN107391040A (zh) 一种存储阵列磁盘io调度的方法及装置
CN105138632A (zh) 一种文件数据组织管理方法及文件管理服务器
CN104238960B (zh) 硬盘格式化方法及基于硬盘的数据块存储方法和装置
CN104331516A (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120711

Termination date: 20150429

EXPY Termination of patent right or utility model