存储、读取目录索引的方法、装置及系统的制作方法

文档序号:6499166阅读:156来源:国知局
存储、读取目录索引的方法、装置及系统的制作方法
【专利摘要】本发明公开了一种存储、读取目录索引的方法、装置及系统,属于计算机【技术领域】。存储目录索引的方法包括:为目录索引中的所有目录分别配置标识符;根据各个目录标识符将所述目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项;将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储;其中,每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址。本发明通过为目录索引中的所有目录分别配置标识符,根据各个目录标识符将所述目录索引进行拆分,在得到与各个目录标识符相对应的目录拆分项后,将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储,从而细化了目录索引的粒度,进而提高目录索引的访问性能。
【专利说明】存储、读取目录索引的方法、装置及系统
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别涉及一种存储、读取目录索引的方法、装置及系统。
【背景技术】
[0002]随着计算机技术的不断发展,目录索引作为文件系统的一个重要组成部分,用来为用户提供可视化、可理解的文件系统视图,从而解决或降低人与计算机之间在数据存储上的语义隔离。而目录索引的存储方式直接决定了访问目录索引的方式及效率。为了能够高效快速地访问目录索引,如何对目录索引进行存储成为了一个关键问题。
[0003]现有技术中,一种方式为基于块设备的目录索引存储,即系统的目录索引存储直接在磁盘上实现。如EXT3 (Third extended file system,第三扩展文件系统),它将逻辑磁盘分成固定大小的逻辑磁盘块(block,简称块),每个磁盘块在文件系统中有一个全局唯一的块号;将一定数量的块组合成逻辑磁盘组(group,简称组);一个磁盘组根据功能分为以下几个部分:数据块位图,对应于该组数据块的块号,用于组内磁盘块的分配与回收;索引节点位图,对应于该组索引块的块号,用于索引节点的分配和回收;索引表,对应于组内索引节点组,用于保存目录或文件索引数据块组;数据块组,用于存储实际的目录或文件具体数据。每个索引节点用于记录一个文件或目录的信息。索引目录时,节点保存着目录数据所在的数据块号,而该数据块中记录该目录下所有的文件和子目录索引信息;另一种方式为基于数据库的目录索引存储,其文件和目录的索引数据保存在数据库中,目录和文件间的父子关系,可通过各表项关联,在用户接口层也能实现树状视图。目录索引存储在数据库服务器中,而实际文件数据存储在I/O (Input/Output,输入输出端口)服务器中。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005]第一种方式中,由于目录索引与实际文件数据存储在相同的介质中,所以当存在海量文件数据时,目录索引本身占据的存储空间就多达数十T(太拉),而这些数量庞大的目录索引很难在本地磁盘存储下,无法满足海量分布式存储的需求;第二种方式中,由于是基于数据库的目录索引存储方式,所以在后续对目录索引进行批量操作时,对目录索引的访问次数会成倍地放大,导致访问性能低下。

【发明内容】

[0006]为了解决现有技术的问题,本发明实施提供了一种存储、读取目录索引的方法、装置及系统。所述技术方案如下:
[0007]—方面,提供了一种存储目录索引的方法,所述方法包括:
[0008]为目录索引中的所有目录分别配置标识符;
[0009]根据各个目录标识符将所述目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项;
[0010]将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储;[0011 ] 其中,每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址。
[0012]另一方面,提供了一种存储目录索引的装置,所述装置包括:
[0013]配置模块,用于为目录索引中的所有目录分别配置标识符;
[0014]拆分模块,用于根据所述配置模块配置的各个目录标识符将所述目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项;
[0015]存储模块,用于将所述拆分模块得到的每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储;
[0016]其中,每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址。
[0017]又一方面,提供了一种读取目录索引的方法,所述方法包括:
[0018]接收携带有待读取的目录标识符的目录索引读取请求;
[0019]在存储目录索引的装置中查找包含所述待读取的目录标识符的记录项,并将查找到的记录项中的目录拆分项作为读取结果返回;
[0020]其中,所述目录拆分项由所述存储目录索引的装置根据为目录索引中的所有目录配置的标识符对目录索引进行拆分得到,并由所述存储目录索引的装置进行存储;所述记录项中至少包括所述目录拆分项及与其对应的目录标识符。
[0021]再一方面,提供了一种读取目录索引的装置,所述装置包括:
[0022]接收模块,用于接收携带有待读取的目录标识符的目录索引读取请求;
[0023]查找模块,用于在存储目录索引的装置中查找包含所述接收模块接收到的待读取的目录标识符的记录项;
[0024]返回模块,用于将所述查找模块查找到的记录项中的目录拆分项作为读取结果返回;
[0025]其中,所述目录拆分项由所述存储目录索引的装置根据为目录索引中的所有目录配置的标识符对目录索引进行拆分得到,并由所述存储目录索引的装置进行存储;所述记录项中至少包括所述目录拆分项及与其对应的目录标识符。
[0026]还提供了一种读取目录索引的系统,所述系统包括:终端、读取目录索引的装置及存储目录索引的装置;
[0027]所述终端,用于向所述读取目录索引的装置发送携带有待读取的目录标识符的目录索引读取请求;
[0028]所述读取目录索引的装置,用于接收所述终端发送的携带有待读取的目录标识符的目录索引读取请求;在存储目录索引的装置中查找包含所述待读取的目录标识符的记录项,并将查找到的记录项中的目录拆分项作为读取结果返回;
[0029]所述存储目录索引的装置,用于为目录索引中的所有目录分别配置标识符;根据各个目录标识符将所述目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项;将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储;其中,每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址。
[0030]本发明实施例提供的技术方案带来的有益效果是:
[0031 ] 通过为目录索引中的所有目录分别配置标识符,并根据各个目录标识符将所述目录索引进行拆分,在得到与各个目录标识符相对应的目录拆分项后,将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储,从而细化了目录索弓I的粒度,进而提高目录索引的访问性能。
【专利附图】

【附图说明】
[0032]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0033]图1是本发明实施例一提供的一种存储目录索引的方法流程图;
[0034]图2是本发明实施例二提供的一种目录索引系统的结构示意图;
[0035]图3是本发明实施例二提供的一种存储目录索引的方法流程图;
[0036]图4是本发明实施例二提供的一种未进行拆分的目录索引结构示意图;
[0037]图5是本发明实施例二提供的一种进行拆分后的目录索引结构示意图;
[0038]图6是本发明实施例二提供的一种查询目录索引的过程示意图;
[0039]图7是本发明实施例二提供的一种修改目录索引名称的过程示意图;
[0040]图8是本发明实施例三提供的一种读取目录索引的方法流程图;
[0041]图9是本发明实施例四提供的第一种存储目录索引的装置结构示意图;
[0042]图10是本发明实施例四提供的第二种存储目录索引的装置结构示意图;
[0043]图11是本发明实施例四提供的第三种存储目录索引的装置结构示意图;
[0044]图12是本发明实施例四提供的第四种存储目录索引的装置结构示意图;
[0045]图13是本发明实施例四提供的第五种存储目录索引的装置结构示意图;
[0046]图14是本发明实施例四提供的第六种存储目录索引的装置结构示意图;
[0047]图15是本发明实施例五提供的一种读取目录索引的装置结构示意图;
[0048]图16是本发明实施例六提供的一种读取目录索引的系统结构示意图。
【具体实施方式】
[0049]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0050]实施例一
[0051]本实施例提供了一种存储目录索引的方法,参见图1,本实施例提供的方法流程包括:
[0052]步骤101:为目录索引中的所有目录分别配置标识符;
[0053]步骤102:根据各个目录标识符将目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项;其中,每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址;
[0054]步骤103:将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储。
[0055]进一步地,本实施例提供的方法,还包括:
[0056]接收携带有待查询的目录标识符的目录索引查询请求;
[0057]查找包含待查询的目录标识符的记录项,并将查找到的记录项中的目录拆分项作为查询结果返回。
[0058]进一步地,本实施例提供的方法,还包括:
[0059]接收目录修改请求,目录修改请求中携带有待修改的目录标识符及修改后的目录信息;
[0060]查找包含待修改的目录标识符的记录项,并将查找到的记录项中的目录拆分项按照修改后的目录信息进行修改。
[0061]进一步地,将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储,包括但不限于:
[0062]将每个目录拆分项及与其对应的目录标识符作为一条记录项分别存储在对应的存储节点中;
[0063]设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储对应关系O
[0064]进一步地,设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储对应关系之后,还包括:
[0065]接收携带有待查询的目录标识符的目录索引查询请求;
[0066]根据每个目录拆分项对应的目录标识符与存储节点的对应关系查找待查询的目录标识符对应的存储节点,并将查找到的存储节点中存储的记录项中的目录拆分项作为查询结果返回。
[0067]进一步地,设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储对应关系之后,还包括:
[0068]接收目录修改请求,目录修改请求中携带有待修改的目录标识符及修改后的目录信息;
[0069]根据每个目录拆分项对应的目录标识符与存储节点的对应关系查找待查询的目录标识符对应的存储节点,并将查找到的存储节点中存储的记录项中的目录拆分项按照修改后的目录信息进行修改。
[0070]本实施例提供的方法,通过为目录索引中的所有目录分别配置标识符,并根据各个目录标识符将所述目录索引进行拆分,在得到与各个目录标识符相对应的目录拆分项后,将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储,从而细化了目录索引的粒度,进而提高目录索引的访问性能。另外,通过将每个记录项存储在与其相对应的存储节点上,可有效地减少目录索引的访问耗时,节约了资源。
[0071]实施例二
[0072]本发明实施例提供了一种存储目录索引的方法,该方法将目录索引与实际文件数据分开存储。如图2所示,在索引存储服务器存储目录索引后,用户可通过用户终端向目录视图服务器发送目录索引访问请求执行相关访问操作。目录视图服务器在接收到用户终端的目录索引访问请求后,会读取索引存储服务器中与该目录索引访问请求相对应的目录索弓丨,并将该目录索引返回至用户终端,使用户终端根据该目录索引到文件存储服务器访问该目录索引对应的实际文件数据。为了便于理解,本实施例结合图2所示的上述内容及上述实施例一的内容,对存储目录索引的方式进行详细的解释说明。参见图3,本实施例提供的方法流程包括:[0073]步骤301:为目录索引中的所有目录分别配置标识符;
[0074]针对该步骤,本实施例将每个目录抽象为一个对象,并为每个对象配置一个全局唯一的标识符,关于配置全局唯一的标识符的方式,本实施例不作具体限定,保证每个目录对应不同的标识符即可。另外,在为目录索引中的所有目录分别配置标识符之后,本实施例提供的方法通过Key-Value (键-值)的形式对目录所对应的信息进行表示,即以键_值形式表示目录索引中的每个目录的信息。其中,“Key”值表示每个目录的标识符,“Value”表示该目录下的目录项。
[0075]步骤302:根据各个目录标识符将目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项;其中,每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址;
[0076]具体地,为了便于说明,本实施例以未进行拆分的目录索引I的索引结构如图4所示为例,其存在两个子目录,分别标识为目录I和目录2,则在通过上述步骤301为该目录索弓I I的根目录配置名为IO的标识符,为目录I配置名为11标识符,为目录2配置名为12的标识符后,便可按照标识符10、Il及12对目录索引I进行拆分,得到分别与标识符10、Il及12相对应的目录拆分项,拆分后的目录索引I的索引结构可如图5中所示的结构。关于拆分目录索引I的具体实现方式,包括但不限于:分别将与标识符10、Il及12相对应的索引信息拉取出来,形成三个分别与标识符10、Il及12相对应的目录拆分项。
[0077]其中,每个目录拆分项中除了包含对应的子目录标识符及对应的文件存储地址夕卜,还可包含其他信息,例如,每个目录拆分项对应的各个子目录的名称、各个子目录的创建时间及修改时间,每个目录拆分项对应的各个文件的文件名、各个文件的创建时间及修改时间,各个文件的占用存储空间大小等等,本实施例对每个目录拆分项包含的内容不进行具体限定。当然,除上述拆分方式外,还可以采用其他拆分方式,本实施例对此不进行具体限定。
[0078]步骤303:将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储;
[0079]具体地,将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储,包括但不限于:
[0080]将每个目录拆分项及与其对应的目录标识符作为一条记录项分别存储在对应的存储节点中;
[0081]设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储对应关系O
[0082]例如,以图5所示的进行拆分后的目录索引I为例,则在得到分别与标识符10、11及12相对应的目录拆分项后,便可以记录项的形式将标识符10、Il及12与其相对应的目录拆分项进行存储,即标识符IO与其相对应的目录拆分项作为一条记录项,命名为记录项TO ;标识符Il与其相对应的目录拆分项作为一条记录项,命名为记录项T2 ;标识符12与其相对应的目录拆分项作为一条记录项,命名为T3 ;在得到三个记录项Tl、T2及T3后,可将三个记录项存储在对应的存储节点S中。在将三个记录项Tl、T2及T3存储在对应的存储节点S中后,为了后续用户能够方便快捷地获取三个记录项中的内容,本实施例提供的方法还包括:设置三个记录项T1、T2及Τ3中的目录拆分项对应的标识符10、Il及12与存储节点S的对应关系,并存储该对应关系。
[0083]其中,每个目录拆分项对应的目录标识符与存储节点的对应关系可如下面表一所示:
[0084]表1
[0085]
【权利要求】
1.一种存储目录索引的方法,其特征在于,所述方法包括: 为目录索引中的所有目录分别配置标识符; 根据各个目录标识符将所述目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项; 将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储; 其中,每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址。
2.根据权利要求1所述的方法,其特征在于,还包括: 接收携带有待查询的目录标识符的目录索引查询请求; 查找包含所述待查询的目录标识符的记录项,并将查找到的记录项中的目录拆分项作为查询结果返回。
3.根据权利要求1所述的方法,其特征在于,还包括: 接收目录修改请求,所述目录修改请求中携带有待修改的目录标识符及修改后的目录信息; 查找包含所述待修改的目录标识符的记录项,并将查找到的记录项中的目录拆分项按照所述修改后的目录信息进行修改。
4.根据权利要求1所述的方法,其特征在于,所述将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储,包括: 将每个目录拆分项及与其对应的目录标识符作为一条记录项分别存储在对应的存储节点中; 设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储所述对应关系O
5.根据权利要求4所述的方法,其特征在于,所述设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储所述对应关系之后,还包括: 接收携带有待查询的目录标识符的目录索引查询请求; 根据每个目录拆分项对应的目录标识符与存储节点的对应关系查找所述待查询的目录标识符对应的存储节点,并将查找到的存储节点中存储的记录项中的目录拆分项作为查询结果返回。
6.根据权利要求4所述的方法,其特征在于,所述设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储所述对应关系之后,还包括: 接收目录修改请求,所述目录修改请求中携带有待修改的目录标识符及修改后的目录信息; 根据每个目录拆分项对应的目录标识符与存储节点的对应关系查找所述待查询的目录标识符对应的存储节点,并将查找到的存储节点中存储的记录项中的目录拆分项按照所述修改后的目录信息进行修改。
7.一种存储目录索引的装置,其特征在于,所述装置包括: 配置模块,用于为目录索引中的所有目录分别配置标识符; 拆分模块,用于根据所述配置模块配置的各个目录标识符将所述目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项; 存储模块,用于将所述拆分模块得到的每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储; 其中, 每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址。
8.根据权利要求7所述的装置,其特征在于,所述装置,还包括: 第一接收模块,用于接收携带有待查询的目录标识符的目录索引查询请求; 第一查找模块,用于查找包含所述第一接收模块接收到的待查询的目录标识符的记录项; 第一发送模块,用于将所述第一查找模块查找到的记录项中的目录拆分项作为查询结果返回。
9.根据权利要求7所述的装置,其特征在于,所述装置,还包括: 第二接收模块,用于接收目录修改请求,所述目录修改请求中携带有待修改的目录标识符及修改后的目录信息; 第二查找模块,用于查找包含所述第二接收模块接收到的待修改的目录标识符的记录项; 第一修改模块,用于将所述第二查找模块查找到的记录项中的目录拆分项按照所述修改后的目录信息进行修改。
10.根据权利要求7所述的装置,其特征在于,所述存储模块,包括: 存储单元,用于将每个目录拆分项及与其对应的目录标识符作为一条记录项分别存储在对应的存储节点中; 设置单元,用于设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储所述对应关系。
11.根据权利要求10所述的装置,其特征在于,所述装置,还包括: 第三接收模块,用于接收携带有待查询的目录标识符的目录索引查询请求; 第三查找模块,用于根据每个目录拆分项对应的目录标识符与存储节点的对应关系查找所述第三接收模块接收到的待查询的目录标识符对应的存储节点; 第二发送模块,用于将所述第三查找模块查找到的存储节点中存储的记录项中的目录拆分项作为查询结果返回。
12.根据权利要求10所述的装置,其特征在于,所述装置,还包括: 第四接收模块,用于接收目录修改请求,所述目录修改请求中携带有待修改的目录标识符及修改后的目录信息; 第四查找模块,用于根据每个目录拆分项对应的目录标识符与存储节点的对应关系查找所述第四接收模块接收到的待查询的目录标识符对应的存储节点; 第二修改模块,用于将所述第四查找模块查找到的存储节点中存储的记录项中的目录拆分项按照所述修改后的目录信息进行修改。
13.一种读取目录索引的方法,其特征在于,所述方法包括: 接收携带有待读取的目录标识符的目录索引读取请求; 在存储目录索引的装置中查找包含所述待读取的目录标识符的记录项,并将查找到的记录项中的目录拆分项作为读取结果返回; 其中,所述目录拆分项由所述存储目录索引的装置根据为目录索引中的所有目录配置的标识符对目录索引进行拆分得到,并由所述存储目录索引的装置进行存储;所述记录项中至少包括所述目录拆分项及与其对应的目录标识符。
14.根据权利要求13所述的方法,其特征在于,查找包含所述待读取的目录标识符的记录项,包括: 根据每个目录拆分项对应的目录标识符与存储节点的对应关系确定存储了包含所述待读取的目录标识符的记录项的存储节点; 从确定的存储节点中查找所述待读取的目录标识符的记录项; 其中,每个目录拆分项对应的目录标识符与存储节点的对应关系由所述存储目录索引的装置设置并进行存储。
15.一种读取目录索引的装置,其特征在于,所述装置包括: 接收模块,用于接收携带有待读取的目录标识符的目录索引读取请求; 查找模块,用于在存储目录索引的装置中查找包含所述接收模块接收到的待读取的目录标识符的记录项; 返回模块,用于将所述查找模块查找到的记录项中的目录拆分项作为读取结果返回; 其中,所述目录拆分项由所述存储目录索引的装置根据为目录索引中的所有目录配置的标识符对目录索引进行拆分得到,并由所述存储目录索引的装置进行存储;所述记录项中至少包括所述目录拆分项及与其对应的目录标识符。
16.根据权利要求15所述的装置,其特征在于,所述查找模块,用于根据每个目录拆分项对应的目录标识符与存储节点的对应关系确定存储了包含所述待读取的目录标识符的记录项的存储节点;从确定的存储节点中查找所述待读取的目录标识符的记录项; 其中,每个目录拆分项对应的目录标识符与存储节点的对应关系由所述存储目录索引的装置设置并进行存储。
17.一种读取目录索引的系统,其特征在于,所述系统包括:终端、读取目录索引的装置及存储目录索引的装置; 所述终端,用于向所述读取目录索引的装置发送携带有待读取的目录标识符的目录索引读取请求; 所述读取目录索引的装置,用于接收所述终端发送的携带有待读取的目录标识符的目录索引读取请求;在存储目录索引的装置中查找包含所述待读取的目录标识符的记录项,并将查找到的记录项中的目录拆分项作为读取结果返回; 所述存储目录索引的装置,用于为目录索引中的所有目录分别配置标识符;根据各个目录标识符将所述目录索引进行拆分,得到与各个目录标识符相对应的目录拆分项;将每个目录拆分项及与其对应的目录标识符作为一条记录项进行存储;其中,每个目录拆分项中至少包含对应的子目录标识符及对应的文件存储地址。
18.根据权利要求17所述的系统,其特征在于,所述存储目录索引的装置在将每个目录拆分项及其对应的目录符作为一条记录项进行存储时,用于将每个目录拆分项及与其对应的目录标识符作为一条记录项分别存储在对应的存储节点中;设置每个目录拆分项对应的目录标识符与存储节点的对应关系,并存储所述对应关系; 所述读取目录索引的装置在查找包含所述待读取的目录标识符的记录项时,用于根据每个目录拆分项对应 的目录标识符与存储节点的对应关系确定存储了包含所述待读取的目录标识符的记录项的存储节点;从确定的存储节点中查找所述待读取的目录标识符的记录项。
【文档编号】G06F17/30GK103942205SQ201310019873
【公开日】2014年7月23日 申请日期:2013年1月18日 优先权日:2013年1月18日
【发明者】娄继冰 申请人:深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1