CN101315640B - 一种目录管理方法和装置 - Google Patents
一种目录管理方法和装置 Download PDFInfo
- Publication number
- CN101315640B CN101315640B CN2008101268591A CN200810126859A CN101315640B CN 101315640 B CN101315640 B CN 101315640B CN 2008101268591 A CN2008101268591 A CN 2008101268591A CN 200810126859 A CN200810126859 A CN 200810126859A CN 101315640 B CN101315640 B CN 101315640B
- Authority
- CN
- China
- Prior art keywords
- file
- catalogue
- binary tree
- balanced binary
- node
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种目录管理方法,在客户端上创建目录或文件,输入目录或文件的全路径名称,该方法包括:对全路径名称进行分析,得到全路径名称表示的目录或者文件的短名称;依据短名称,为短名称表示的目录或文件分配一个空闲节点;判断与短名称表示的目录或文件同级的目录或文件是否存在;如果不存在,则空闲节点单独生成一个平衡二叉树;如果存在,则将所述空闲节点***所述同级目录或文件的节点生成的平衡二叉树中;根据平衡规则对所有的平衡二叉树执行平衡操作,生成多级平衡二叉树;并依据所述生成的多级平衡二叉树对目录进行管理。本发明还公开了一种目录管理装置,基于该方法和装置,可以节省***的内存空间,提高对目录或文件的查找效率。
Description
技术领域
本发明涉及目录管理技术,特别是指一种在分布式文件***中的目录管理的方法和装置。
背景技术
随着计算机技术的飞速发展和通信信息量的急剧增加,分布式文件***越来越多地被应用于数据存储领域,特别是海量数据的存储。分布式文件***一般由一个元数据服务器、多个存储服务器和多个客户端组成,其中,存储服务器提供海量的数据存储和海量的吞吐率;元数据服务器向用户提供***中所有文件名称的存储空间,每个文件和目录在分布式文件***中都有一个统一且唯一的名称,在所有的服务器上,用户通过客户端都可以使用相同的名称访问相应的目录或文件,而不需要关心目录或文件的实际存储位置和存储相应目录或文件的元数据服务器的位置。
整个分布式文件***的目录存储在元数据服务器中,目前,对于目录的管理方法有以下几种:
1、存储目录、文件的全路径名称,对文件名称检索采用哈希(Hash)算法。这种方法由于文件名的本质是一个字符串,且文件的全路径名称除去该文件的唯一标识名称外,前半部分表示其存储路径的名称与其他文件的前半部分的名称相同的概率很大,这样导致Hash算法实现非常的困难,特别是很难避免Hash冲突,当产生大量冲突后,会导致访问效率严重降低。并且,由于存储的是文件的全路径名称,如此,会导致内存空间的严重浪费,并使目录、文件名称存在冗余的情况。
2、存储目录、文件的全路径名称,对文件名称采用单一的平衡二叉树管理。这种方法检索文件的速度很快,但是,全路径名称的存储造成存储空间的浪费很严重;并且,随着文件的增多,该二叉树会越来越庞大,如此,将导致每次增加、删除文件后的平衡工作开销增大,从而降低文件***的访问效率。
发明内容
有鉴于此,本发明的主要目的在于提供一种目录管理方法和装置,能提高对目录、文件的检索效率,避免由于存储目录、文件的全路径名称所造成的存储空间的浪费。
为达到上述目的,本发明的技术方案是这样实现的:
本发明公开了一种目录管理方法,在客户端创建目录或文件,并输入目录或文件的全路径名称,将所述全路径名称发送给元数据服务器,该方法包括:
对所述全路径名称进行分析,得到所述全路径名称表示的目录或文件的短名称;
依据所述短名称,为所述短名称表示的目录或文件分配空闲节点;
判断与所述短名称表示的目录或文件的同级目录或文件是否存在,如果不存在,则所述空闲节点单独生成平衡二叉树;如果存在,则将所述空闲节点***所述同级目录或文件的节点生成的平衡二叉树中;
根据平衡规则对所有的平衡二叉树执行平衡操作,生成多级平衡二叉树;并依据所述生成的多级平衡二叉树对目录进行管理。
所述短名称为所述目录或文件的唯一标识名称。
所述空闲节点由文件名FileName、子树pSubTree、左子树pLeftTree和右子树pRighftTree组成,其中,FileName的域值依据所述短名称取值;
所述空闲节点表示目录时,pSubTree指向所述目录的下一级目录所在的平衡二叉树的根节点,所述目录所在的平衡二叉树的子树是所述下一级目录所在的平衡二叉树;
所述空闲节点表示文件时,pSubTree为空NULL。
所述平衡规则为:依据所述平衡二叉树中FileName、pLeftTreep和RighftTree域值的大小,对FileName、pLeftTreep和RighftTree重新赋值。
所述依据多级平衡二叉树对整个文件***的目录进行管理,包括:遍历目录、查找文件、增加文件、删除文件、修改文件名称、移动文件中的任意一种或任意多种的组合。
本发明还公开了一种目录管理装置,该装置包括:
分析模块,用于对全路径名称进行分析,得到所述全路径名称表示的目录或者文件的短名称;
节点分配模块,用于依据所述短名称,为所述短名称表示的目录或文件分配空闲节点;
判断模块,用于判断与所述短名称表示的目录或文件同级的目录或文件是否存在,得到判断结果;
平衡二叉树生成模块,用于根据判断结果由所述空闲节点单独生成平衡二叉树,或者由所述空闲节点***所述同级的目录或文件的节点生成的平衡二叉树中;
多级平衡二叉树构造模块,用于根据平衡规则对所有的平衡二叉树执行平衡操作,生成多级平衡二叉树。
该装置还包括管理模块,用于依据所述多级平衡二叉树对整个文件***的目录进行操作管理,所述操作管理为遍历目录、查找文件、增加文件、删除文件、修改文件名称、移动文件中的任意一种或任意多种的组合。
所述空闲节点由FileName、pSubTree、pLeftTree和pRighftTree组成,其中,FileName的域值依据所述短名称取值。
所述平衡规则为:依据所述平衡二叉树中FileName、pLeftTreep和RighftTree域值的大小,对FileName、pLeftTreep和RighftTree重新赋值。
本发明的目录管理方法和装置,采用了多级平衡二叉树技术,根据客户端上文件的建立,在元数据服务器中表示文件***的目录结构的多级平衡二叉树随之建立。由于本发明在多级平衡二叉树中存储的目录或文件的名称使用的是短名称,即目录或文件的唯一标识名称,这样,极大的节省了元数据服务器的内存空间,有利于存储更多的目录或文件名称。
本发明中多级平衡二叉树的使用,使同级的目录或文件的节点存在于多级平衡二叉树的一个子树中,所以在执行平衡操作时,只需平衡对应的子树,这样可以简化平衡操作,并且缩短了平衡操作的时间。
另外,本发明采用多级平衡二叉树管理目录,且每个目录或文件只保存短名称,这样可以提高整个目录的查找效率,并能方便地对目录的各种管理操作。
附图说明
图1为本发明目录管理方法的具体流程示意图;
图2为本发明目录管理方法的由一个节点生成的平衡二叉树的示例图;
图3为本发明创建多级平衡二叉树的示例;
图4为本发明目录管理装置的结构关系示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
在分布式文件***中,本发明依据目录或文件的短名称,创建表示整个文件***的目录结构的多级平衡二叉树,在多级平衡二叉树中,同级的目录或文件生成一个平衡二叉树,所生成的平衡二叉树是所述同级目录或文件的父目录所在的平衡二叉树的子树,且父目录所在平衡二叉树的根节点的子树pSubTree指向生成的平衡二叉树的子树的根节点,根据目录层次隶属关系,利用节点的pSubTree域将各个平衡二叉树关联起来,从而生成多级平衡二叉树。
整个分布式文件***中,所有同级的文件和目录可以生成一个平衡二叉树,在分布式文件***中,有多少个目录或文件的级别划分,在元数据服务器中就包含有多少个对应的平衡二叉树,这些平衡二叉树形成了一个多级平衡二叉树,这个多级平衡二叉树就表示整个分布式文件***的目录结构。
图1所示为本发明目录管理方法的具体流程示意图。
步骤101,对客户端输入的全路径名称进行分析,得到该全路径名称表示的目录或者文件的短名称。
在分布式文件***中,用户通过客户端输入目录或文件的全路径名称,元数据服务器在创建多级平衡二叉树的过程中,对全路径名称进行分析,从全路径名称中提取出目录或文件的短名称,该短名称是目录或文件的唯一标识名称,创建该目录或文件时,只需在对应的节点中存储目录或文件的短名称即可。
步骤102,依据目录或文件的短名称,给目录或文件分配一个空闲节点。
在多级平衡二叉树中创建目录或文件时,首先给该目录或文件分配一个空闲节点,通过该节点将当前目录或文件的文件名***其在多级平衡二叉树中的相应的位置。
本发明中,一个空闲节点由文件名FileName、子树pSubTree、左子树pLeftTree和右子树pRighftTree组成,具体的空闲节点的构成在后面的实施例进行说明。
步骤103,判断与短名称表示的目录或文件同级的目录或文件是否存在,如果不存在,执行步骤104;如果存在,执行步骤105。
在本发明中,多级平衡二叉树的实现特点是:同级的所有目录或文件生成一个平衡二叉树,且生成该平衡二叉树的目录或文件的父目录的根节点的pSubTree域均指向该平衡二叉树的根节点。
在创建一个目录或文件时,要先判断与该目录或文件同级的目录或文件是否存在,从需要创建目录或文件的全路径名称中可以知道该目录或文件的父目录,查找父目录所在的平衡二叉树的根节点的pSubTree的域值是否为空NULL,如果为空,则说明同级的目录或文件不存在;如果不为空,则说明同级的目录或文件存在。
步骤104,该目录或文件的空闲节点单独生成一个新的平衡二叉树;
这里,该目录或文件的父目录所在的平衡二叉树的根节点的pSubTree域指向该平衡二叉树的根节点;如果该目录为多级平衡二叉树的根目录,对于一个平衡二叉树来说,有且只有一个根目录,则根目录单独生成一个平衡二叉树,这个平衡二叉树成为整个文件***的命名入口,该平衡二叉树成为多级平衡二叉树的入口子树。
步骤105,将目录或文件的空闲节点与同级的目录或文件的节点生成一个平衡二叉树。
依据上述多级平衡二叉树的实现特点,将新创建的目录或文件的空闲节点***与其同级的目录或文件所生成的平衡二叉树中。
步骤106,根据平衡规则对所有的平衡二叉树执行平衡操作,生成多级平衡二叉树。
每当创建一个新的目录或者文件时,都要对其所在的最基本的平衡二叉树进行平衡操作。一个空闲节点的结构就是一个最基本的平衡二叉树,所谓平衡操作依据平衡规则来执行,具体是:将一个最基本的平衡二叉树的FileName、pLeftTree和pRighftTree的域值的大小进行比较,然后,依据这三个域值的大小重新对FileName、pLeftTree和pRighftTree进行赋值。进行平衡操作后,一个最基本的平衡二叉树就创建完成了。
随着在客户端上文件的创建完毕,在元数据服务器中就存在多个级别的目录或文件生成的多个平衡二叉树,这些二叉树构成一个多级平衡二叉树。
步骤107,依据多级平衡二叉树对整个文件***的目录进行操作管理。
这里,所述的操作管理可以是遍历目录、查找文件、增加文件、删除文件、修改文件名称、移动文件操作中的任意一种、或任意几种的组合。
对于目录管理方法来说,步骤107是可选的。
依据创建好的多级平衡二叉树,可以对整个文件***的目录进行管理。
下面将通过具体的实施例来说明,依据本发明的目录管理方法创建多级平衡二叉树的过程。
创建一个目录或文件时要在多级平衡二叉树中分配与该目录或文件对应的节点,该节点可以单独地成为一个平衡二叉树。图2为一个节点生成的平衡二叉树的示例图,如图2所示,该节点的数据结构成员包括:FileName 01、pSubTree02、pLeftTree 03和pRighftTree 04,表1具体说明了节点数据结构成员的含义。
数据结构成员 | 成员描述 |
FileName | 文件名称,比如:log.txt,exam.txt,movie.mpg,/等 |
数据结构成员 | 成员描述 |
pSubTree | 如果本节点是目录,则表示该目录的下一级目录所生成的平衡二叉树的根节点如果本节点为文件,则为空,NULL |
pLeftTree | 左子树 |
pRightTree | 右子树 |
表1
本发明中,左子树pSubTree和右子树pRightTree表示的目录或文件是与文件名称FileName表示的目录或文件同级的,子树pSubTree所表示的目录或文件是FileName、pSubTree和pRightTree所表示的目录或文件的下一级。
在多级平衡二叉树中,同级的所有目录或文件可以生成一个平衡二叉树,且生成该平衡二叉树的目录或文件的父目录的根节点的pSubTree域指向该平衡二叉树的根节点。
下面将结合图2和图3,以逐级创建文件“/home/movie.mpg”以及文件“/exam.txt”为例,来说明本发明技术方案的具体实现。
图3所示为本发明创建多级平衡二叉树的示例。在***运行之初,所有的平衡二叉树的节点都是空闲的。随着在客户端上文件的创建,元数据服务器中的多级平衡二叉树随之开始创建。
在开始创建文件之初,要先创建一个根目录“/”,在多级平衡二叉树中根目录有且只有一个,所以根目录独立生成一个平衡二叉树,这个平衡二叉树就成为整个***文件的命名空间入口,被称为多级平衡二叉树的入口子树。具体地,创建根目录“/”,此时平衡二叉树的所有节点均为空闲,从起始处分配一个空闲节点10,其内容为FileName=“/”,pSubTree=NULL,pLeftTree=NULL,pRightTree=NULL,则节点10所在的平衡二叉树就是多级平衡二叉树的入口子树。
创建根目录的下级目录“/home”,分配一个空闲节点11,那么其内容为FileName=“home”,pSubTree=NULL,pLeftTree=NULL,pRightTree=NULL。可以由目录“/home”的名称得到,该目录的父目录为根目录“/”,此时,因为根目录所在的平衡二叉树还不存在子树,所以不存在与“home”同级的文件,那么,目录“/home”暂时独立生成一个平衡二叉树,则节点11所在的平衡二叉树是节点10所在的平衡二叉树的子树。由于节点11表示的是目录“/home”,所以,此时需要将节点11的pSubTree指向目录“/home”的下一级目录所生成的平衡二叉树的根节点,由图3可知,该节点为12。
创建文件“/exam.txt”,由该文件的文件名可以得知,文件“exam.txt”的父目录为根目录“/”,而根目录的平衡二叉树的根节点10的pSubTree已经指向节点11,这说明存在与文件“/exam.txt”同级的目录或文件,即目录“/home”。那么,找到节点11所在的平衡二叉树,即目录“/home”所在的平衡二叉树,分配一个空闲的节点用来表示文件“/exam.txt”,内容为FileName=“exam.txt”,pSubTree=NULL,pLeftTree=NULL,pRightTree=NULL,将该节点***到目录“/home”所在的平衡二叉树中,对于将该节点***到平衡二叉树的左子树还是右子树中,没有特别的规定,所以对于本实施例,该节点既可以是14也可以是15,本实施例中以“/exam.txt”为节点14为例。
接着,依据平衡规则,对文件“/exam.txt”和目录“/home”所在的平衡二叉树进行平衡操作,具体地,可以这样来制定平衡规则:对于一个最简单的平衡二叉树,将其当前的FileName、pLeftTree和pRightTree的域值进行比较,比较后对FileName、pLeftTree和pRightTree重新进行赋值,赋值后三者的域值大小关系为,pLeftTree<FileName<pRightTree。比较FileName、pLeftTree和pRightTree的域值的方法为:其域值的本质是由一个字符串构成的,每个字符在计算机中都有一个对应的且唯一的ASCII码,如:A的ASCII码为65,B的ASCII码为66,a的ASCII码为97,b的ASCII码为98,那么这四个字符的大小顺序为:b<a<B<A,按照域值所包含的字符的顺序进行比较,先比较第一个字符的ASCII码,如果第一个字符的ASCII码相等,那么比较第二个字符的ASCII码直到比较出大小为止,当然平衡操作的规则不仅限于此。
在本实施例中,假设先将文件“/exam.txt”的节点***目录“/home”所在平衡二叉树的右子树,即,将“exam.txt”赋值给pRightTree15,接下来,比较FileName 11的域值“home”和pRightTree 15的域值“exam.txt”的大小,h的ASCII码为104,e的ASCII码为101,即e<h,则exam.txt<home,根据重新赋值后,pLeftTree<FileName<pRightTree的原则,因为FileName 11的域值已经是“home”,pLeftTree14为NULL,那么“exam.txt”应该赋值给pLeftTree 14。
创建文件“/log.txt”,其创建的过程同文件“/exam.txt”,此处不再赘述。分配空闲节点15用来表示文件“/log.txt”,内容为FileName=“log.txt”,pSubTree=NULL,pLeftTree=NULL,pRightTree=NULL,将其***到目录“/home”和文件“/exam.txt”生成的平衡二叉树中。依据平衡规则,对此平衡二叉树执行平衡操作,由于经比较exam.txt<home<log.txt,那么“log.txt”应该赋值给该平衡二叉树的pRightTree 15,“home”应该赋值给该平衡二叉树的pRightTree11,“exam.txt”应该赋值给该平衡二叉树的pRightTree 14。由于节点14“/exam.txt”和节点15“log.txt”为文件,所以,两者的pSubTree 16和17为空NULL,即不存在。
假设,用文件“/a.exe”来替换当前创建的文件“/log.txt”,那么给“/a.exe”分配一个空闲节点15,***到目录“/home”和文件“/exam.txt”生成的平衡二叉树中后,经过比较,得到a.exe<exam.txt<home,那么该平衡二叉树pLeftTree14、FileName 11和pRightTree 15的域值重新赋值后,为pLeftTree=a.exe,FileName=exam.txt、pRightTree=home。
创建文件“/home/movie.mpg”,由该文件的文件名可以得知,该文件的父目录为“/home”,由于“/home”所在的平衡二叉树的根节点11的pSubTree域还不存在,所以需要分配空闲节点12,新建立一个平衡二叉树,则该平衡二叉树是节点11所在的平衡二叉树的子树。节点12为该平衡二叉树的根节点,该节点的内容为FileName=“movie.mpg”,pSubTree=NULL,pLeftTree=NULL,pRightTree=NULL,因为“/home/movie.mpg”是一个文件,所以节点12的pSubTree 13为NULL。
从本实施例可以看出,节点11、14、15所表示的目录或文件都是根目录“/”的下一级,即这三者是同级的,所以这三个同级的目录或文件构成一个平衡二叉树,且节点11、14、15所表示的目录或文件的父目录,即根目录“/”所在的二叉树的根节点10的pSubTree是指向节点11、14、15生成的平衡二叉树的根节点11的,即节点11所在的平衡二叉树是节点10所在的平衡二叉树的子树。
下面将通过几个实施例来说明,基于本发明多级平衡二叉树对整个文件***的目录进行管理操作的具体实现过程。
操作一:文件查找操作。
文件查找操作包括以下步骤:
步骤11,分析用户通过客户端输入的文件全路径名称,从全路径名称中读取出第一个名称。如:“/A/b/123.exe”中第一个“/”;
步骤12~13,从多级平衡二叉树的入口子树搜索步骤11得到的名称所对应的节点,如果步骤12查找不到相应的节点,则出错,结束当前处理流程,如果步骤12找到相应的节点,则执行步骤14;
步骤14,继续从全路径名称中读取下一个名称,如“/A/b/123.exe”中的“A”;
步骤15,从步骤12得到的节点所在平衡二叉树对应的子树中继续查找步骤14的名称对应的节点;
步骤16,如果步骤15不能找到相应节点,则出错;如果没有出错,则继续分析全路径名称,直到分析完毕;
步骤17,返回最后得到的节点。
操作二:增加文件操作。
增加文件操作包括以下步骤:
步骤21,利用文件查找操作查找需要增加的文件对应的节点;
步骤22,如果能够找到,则出错,结束当前处理过程;如果没有找到,则执行步骤23;
步骤23,分析用户通过客户端输入的需要增加的文件的全路径名称,得到需增加的文件的父目录;
步骤24,利用文件查找操作查找步骤23得到的父目录对应的节点;
步骤25,如果步骤24找不到相应的节点,则出错,结束当前处理过程;
如果步骤24找到的节点表示的不是目录,则出错,结束当前处理过程;
如果步骤24找到的节点的pSubTree为空,则建立一个新的节点,填入需要增加文件的信息,如文件名“/A/b/123.exe”中的“123.exe”,设置父目录对应的节点与新节点的对应关系,即将父目录节点的pSubTree指向新节点;
如果步骤24找到的节点对应的pSubTree不为空,则在此节点所在的平衡二叉树中增加一个新的节点,填入需增加的文件的相关信息。
操作三:删除文件操作。
删除文件操作包括以下步骤:
步骤31,利用文件查找操作查找需要删除的文件对应的节点;
步骤32,如果不能找到节点,则出错,结束当前处理过程;如果找到节点,分析需删除的文件的全路径名称,得到该文件的父目录;
步骤33,查找父目录对应节点所在的平衡二叉树;
步骤34,如果步骤33得到父目录对应节点的平衡二叉树,则从该平衡二叉树中删除指定文件对应的节点,即将此节点设置为NULL。
操作四:文件名称修改操作。
文件名称修改操作包括以下步骤:
步骤41,利用文件查找操作查找需要修改名称的文件对应的节点;
步骤42,如果不能找到,则出错,结束当前处理过程;如果能找到,则利用文件查找操作查找将该文件修改名称后的文件对应的节点;
步骤43,如果能找到,则出错,结束当前处理过程;否则,修改步骤41所找到的节点中文件的名称;
步骤44,对该节点所在的平衡二叉树进行平衡操作。
操作五:文件移动操作
文件移动操作包括以下步骤:
步骤51,利用文件查找操作查找需要移动的文件对应的节点;
步骤52,如果不能找到,则出错,结束当前处理过程;如果能找到,则利用文件查找操作查找文件移动后该文件对应的节点;
步骤53,如果能找到,则出错,结束当前处理过程;如果能找到,则分析需要移动的文件的全路径名称,得到该文件的父目录;
步骤54,利用文件查找操作查找步骤53得到的父目录对应的节点;
步骤55,将当前需移动的文件移动到目的地址;
步骤56,分析文件移动后文件的全路径名称,得到文件移动后的该文件的父目录;
步骤57,利用文件查找操作查找步骤56得到的父目录对应的节点;
步骤58,如果步骤57找不到对应的节点,则返回错误,结束当前处理过程;如果步骤57找到对应的节点,则备份步骤51得到的节点;
步骤59,删除步骤51得到的节点;
步骤60,将步骤58备份的节点加入步骤58得到节点所在的平衡二叉树对应的子树之中。
操作六:遍历目录操作。
遍历目录操作包括以下步骤:
步骤61,利用文件查找操作查找输入的目录名称对应的节点,如目录“/A”;
步骤62,如果步骤61中找到的节点为空,则返回目录不存在,结束当前处理过程;如果步骤61找到的节点不为空,取出步骤61找到节点所在的平衡二叉树的子树,如目录“/A”节点所在的平衡二叉树的子树;
步骤63,如果步骤62得到的子树为空,则直接返回;如果步骤62得到的子树不为空,则遍历该子树,返回遍历结果。
为实现上述目录管理方法,本发明还提供了一种目录管理装置,图4所示为本发明目录管理装置的结构关系示意图,本发明的目录管理装置结构包括:
分析模块41,用于对全路径名称进行分析,得到所述全路径名称表示的目录或者文件的短名称。这里,在多级平衡二叉树中只存储目录或文件的短名称,短名称是目录或文件的唯一标识名称。
节点分配模块42,用于依据所述短名称,为所述短名称表示的目录或文件分配一个空闲节点。
其中,空闲节点由FileName、pSubTree、pLeftTree和pRighftTree组成,其中,FileName的域值由依据所述短名称取值。当所述空闲节点表示目录时,pSubTree指向所述目录的下一级目录所在的平衡二叉树的根节点,所述目录所在的平衡二叉树的子树是所示下一级目录所在的平衡二叉树;当所述空闲节点表示文件时,pSubTree为空NULL,即不存在。
判断模块43,用于判断与所述短名称表示的目录或文件同级的目录或文件是否存在,并得到判断结果。
一般,判断结果有两种:存在与短名称表示的目录或文件同级的目录或文件;不存在与短名称表示的目录或文件同级的目录或文件。
平衡二叉树生成模块44,用于根据判断结果由所述空闲节点单独生成一个平衡二叉树,或者由所述空闲节点***所述同级的目录或文件的节点生成的平衡二叉树中。
多级平衡二叉树构造模块45,用于根据平衡规则对所有的平衡二叉树执行平衡操作,生成多级平衡二叉树。这里,所述生成多级平衡二叉树具体为:根据目录层次隶属关系,利用节点的pSubTree域将各个平衡二叉树关联起来,从而生成多级平衡二叉树。
本发明的装置还可以进一步包括一个管理模块,用于依据所述多级平衡二叉树对整个文件***的目录进行遍历目录、查找文件、增加文件、删除文件、修改文件名称、移动文件操作管理。所述管理模块对目录进行管理时,是基于多级平衡二叉树的,会与多级平衡二叉树构造模块45有信息交互;对目录进行上述几种操作管理时,都需要先对目录或文件的全路径名称进行分析,所以还会与分析模块41之间进行信息交互;对目录进行增加文件时需要对文件分配新的空闲节点时,还需要与节点分配模块42进行信息交互。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (7)
1.一种目录管理方法,在客户端创建目录或文件,并输入目录或文件的全路径名称,将所述全路径名称发送给元数据服务器,其特征在于,该方法包括:
对所述全路径名称进行分析,得到所述全路径名称表示的目录或文件的短名称;
依据所述短名称,元数据服务器为所述短名称表示的目录或文件分配空闲节点;
元数据服务器判断与所述短名称表示的目录或文件的同级目录或文件是否存在,如果不存在,则所述空闲节点单独生成平衡二叉树;如果存在,则将所述空闲节点***所述同级目录或文件的节点生成的平衡二叉树中;
根据平衡规则对所有的平衡二叉树执行平衡操作,生成多级平衡二叉树;并依据所述生成的多级平衡二叉树对目录进行管理;
其中,所述空闲节点由文件名FileName、子树pSubTree、左子树pLeftTree和右子树pRighftTree组成,FileName的域值依据所述短名称取值;所述空闲节点表示目录时,pSubTree指向所述目录的下一级目录所在的平衡二叉树的根节点,所述目录所在的平衡二叉树的子树是所述下一级目录所在的平衡二叉树;所述空闲节点表示文件时,pSubTree为空NULL。
2.根据权利要求1所述目录管理方法,其特征在于,所述短名称为所述目录或文件的唯一标识名称。
3.根据权利要求1所述目录管理方法,其特征在于,所述平衡规则为:依据所述平衡二叉树中FileName、pLeftTreep和RighftTree域值的大小,对FileName、pLeftTreep和RighftTree重新赋值。
4.根据权利要求1所述目录管理方法,其特征在于,所述依据多级平衡二叉树对整个文件***的目录进行管理,包括:遍历目录、查找文件、增加文件、删除文件、修改文件名称、移动文件中的任意一种或任意多种的组合。
5.一种目录管理装置,其特征在于,该装置包括:
分析模块,用于对全路径名称进行分析,得到所述全路径名称表示的目录或者文件的短名称;
节点分配模块,用于依据所述短名称,为所述短名称表示的目录或文件分配空闲节点;
判断模块,用于判断与所述短名称表示的目录或文件同级的目录或文件是否存在,得到判断结果;
平衡二叉树生成模块,用于在判断与所述短名称表示的目录或文件同级的目录或文件不存在时由所述空闲节点单独生成平衡二叉树,以及在判断存在时由所述空闲节点***所述同级的目录或文件的节点生成的平衡二叉树中;
多级平衡二叉树构造模块,用于根据平衡规则对所有的平衡二叉树执行平衡操作,生成多级平衡二叉树;
其中,所述空闲节点由文件名FileName、子树pSubTree、左子树pLeftTree和右子树pRighftTree组成,FileName的域值依据所述短名称取值;所述空闲节点表示目录时,pSubTree指向所述目录的下一级目录所在的平衡二叉树的根节点,所述目录所在的平衡二叉树的子树是所述下一级目录所在的平衡二叉树;所述空闲节点表示文件时,pSubTree为空NULL。
6.根据权利要求5所述目录管理装置,其特征在于,该装置还包括管理模块,用于依据所述多级平衡二叉树对整个文件***的目录进行操作管理,所述操作管理为遍历目录、查找文件、增加文件、删除文件、修改文件名称、移动文件中的任意一种或任意多种的组合。
7.根据权利要求5或6所述目录管理装置,其特征在于,所述平衡规则为:依据所述平衡二叉树中FileName、pLeftTreep和RighftTree域值的大小,对FileName、pLeftTreep和RighftTree重新赋值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101268591A CN101315640B (zh) | 2008-07-01 | 2008-07-01 | 一种目录管理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101268591A CN101315640B (zh) | 2008-07-01 | 2008-07-01 | 一种目录管理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101315640A CN101315640A (zh) | 2008-12-03 |
CN101315640B true CN101315640B (zh) | 2010-09-01 |
Family
ID=40106648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101268591A Expired - Fee Related CN101315640B (zh) | 2008-07-01 | 2008-07-01 | 一种目录管理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101315640B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101521627B (zh) * | 2009-04-13 | 2011-10-05 | 华为技术有限公司 | ***节点的方法和装置 |
CN101719141B (zh) * | 2009-12-24 | 2011-09-07 | 成都市华为赛门铁克科技有限公司 | 基于目录对象的文件处理方法和*** |
CN102024019B (zh) * | 2010-11-04 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 一种分布式文件***中基于后缀树的目录组织方法 |
CN102331957B (zh) * | 2011-09-28 | 2013-08-28 | 华为技术有限公司 | 文件备份的方法及装置 |
JP5798503B2 (ja) * | 2012-01-31 | 2015-10-21 | 株式会社日立ソリューションズ | ファイルリスト生成方法及びシステム、ファイルリスト生成装置並びにプログラム |
CN102902734A (zh) * | 2012-09-12 | 2013-01-30 | 北京伸得纬科技有限公司 | 一种目录存储和映射方法及*** |
CN103559231B (zh) * | 2013-10-23 | 2018-03-09 | 华为技术有限公司 | 一种文件***配额管理方法、装置及*** |
CN103744882B (zh) * | 2013-12-20 | 2018-05-25 | 浪潮(北京)电子信息产业有限公司 | 一种基于键值对的目录片段表示方法及装置 |
CN105787083A (zh) * | 2016-03-02 | 2016-07-20 | 深圳市元征科技股份有限公司 | 数据处理方法及装置 |
CN108073646B (zh) * | 2016-11-18 | 2021-12-24 | 北大方正集团有限公司 | 目录提取方法及装置 |
CN107066506B (zh) * | 2017-01-11 | 2020-12-08 | 中国科学院空间应用工程与技术中心 | 一种提高空间科学与应用数据检索效率的方法及装置 |
CN107566506B (zh) * | 2017-09-15 | 2020-03-10 | 华为技术有限公司 | 一种数据访问方法及装置 |
CN109446166B (zh) * | 2018-09-03 | 2023-11-17 | 国信金宏信息咨询有限责任公司 | 文件目录的检测方法、计算机可读存储介质及终端设备 |
CN109388462B (zh) * | 2018-09-28 | 2024-05-28 | 中国平安财产保险股份有限公司 | 报表共享方法、装置、计算机设备及存储介质 |
CN109388791B (zh) * | 2018-09-28 | 2024-05-14 | 中国平安财产保险股份有限公司 | 图表动态展示方法、装置、计算机设备及存储介质 |
CN109308284B (zh) * | 2018-09-28 | 2023-09-19 | 中国平安财产保险股份有限公司 | 报表菜单生成方法、装置、计算机设备及存储介质 |
CN109508326B (zh) * | 2018-11-22 | 2020-03-17 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置和*** |
CN109729407A (zh) * | 2018-12-10 | 2019-05-07 | 视联动力信息技术股份有限公司 | 一种目录显示方法及装置 |
CN109450715B (zh) * | 2018-12-26 | 2022-01-25 | 新华三技术有限公司 | 消息处理方法和装置 |
-
2008
- 2008-07-01 CN CN2008101268591A patent/CN101315640B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101315640A (zh) | 2008-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101315640B (zh) | 一种目录管理方法和装置 | |
CN106663056B (zh) | 文件***中的元数据索引搜索 | |
US6279007B1 (en) | Architecture for managing query friendly hierarchical values | |
CN102246172A (zh) | 用于电子内容的分布式索引搜索的***及方法 | |
CN107153647B (zh) | 进行数据压缩的方法、装置、***和计算机程序产品 | |
US20060041560A1 (en) | Distributing content indices | |
CN103282900B (zh) | 基于语言环境的索引和搜索方法 | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN103384256A (zh) | 一种云存储方法及装置 | |
CN102402602A (zh) | 一种实时数据库的b+树索引方法及装置 | |
CN102915382A (zh) | 一种基于索引的数据库的数据查询方法和装置 | |
US8880553B2 (en) | Redistribute native XML index key shipping | |
CN112148680B (zh) | 一种基于分布式图数据库的文件***元数据管理方法 | |
CN103678550A (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
CN105335402A (zh) | 基于静态Cache的搜索方法、索引数据生成方法以及装置 | |
CN101789027A (zh) | 一种基于dbms的元数据管理方法和元数据服务器 | |
CN102521375A (zh) | 一种目录服务数据检索方法及*** | |
US20110153677A1 (en) | Apparatus and method for managing index information of high-dimensional data | |
Xu et al. | Enhancing HDFS with a full-text search system for massive small files | |
KR100999408B1 (ko) | 해시트리를 이용한 url 검색방법 | |
Rao et al. | Locating XML documents in a peer-to-peer network using distributed hash tables | |
CN107291875B (zh) | 一种基于元数据图的元数据组织管理方法和*** | |
CN108509585A (zh) | 一种异构数据实时交互优化处理方法 | |
Batra et al. | A short survey of advantages and applications of skip graphs | |
Chen et al. | A scalable semantic indexing framework for peer-to-peer information retrieval |
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: 20100901 Termination date: 20190701 |
|
CF01 | Termination of patent right due to non-payment of annual fee |