本发明涉及分布式存储技术领域,更具体的,涉及一种分布式存储系统中文件目录的创建方法及装置。
背景技术:
分布式文件系统的目录管理不像本地文件系统的目录一样,目录的节点信息下面存储了子目录节点和文件节点。分布式文件存储系统中,大多数使用的是文件节点。每一个文件节点之间是平行关系,且每一个文件节点都会按照一定的规则编号,即为文件的标识。这个文件的标识一般会包含文件在分布式存储的磁盘的路径、存储在哪一个磁盘的哪一个位置等信息。而这个文件对于普通用户来说可读性比较差。管理比较困难。比如用户想删除自己的某一批文件,这一批文件需要用户自己记录,否则不知道哪一个文件是自己的。
技术实现要素:
有鉴于此,本发明提供了一种分布式存储系统中文件目录的创建方法及装置,通过文件目录与文件节点的映射关系实现用户对分布式存储系统中文件的有效管理。
一种分布式存储系统中文件目录的创建方法,包括:
获取目标文件节点在分布式存储系统中的存储路径;
根据所述目标文件节点在分布式存储系统中的存储路径,创建所述目标文件节点的文件目录、以及所述目标文件节点的文件目录与所述目标文件节点的映射关系;
将所述目标文件节点的文件目录与所述目标文件节点的映射关系存储在数据库中。
可选的,所述文件目录包括目录标识、目录路径和父级标识。
可选的,所述根据所述目标文件节点在分布式存储系统中的存储路径,创建所述目标文件节点的文件目录,包括:
将所述目标文件节点的文件名加入到所述目标文件节点在分布式存储系统中的存储路径的末端,得到所述目标文件节点的目录路径;
对所述目标文件节点的目录路径进行解析,得到所述目标文件节点的多个等级的目录;
从根目录开始,按所述目标文件节点的多个等级的目录的层级关系对所述目标文件节点的多个等级的目录进行遍历,得到当前目录,所述当前目录为当前正在遍历的目录;
判断数据库中是否存在所述当前目录;
若存在,判断所述当前目录是否为所述目标文件节点的多个等级的目录中的最后一层目录;
若是最后一层目录,结束对所述目标文件节点的多个等级的目录的遍历;
若不是最后一层目录,将所述当前目录的子目录确定为新的当前目录,并返回执行所述判断数据库中是否存在所述当前目录;
若不存在,在数据库中创建所述当前目录,得到所述当前目录的标识,并将所述当前目录的父级目录的标识设置为所述当前目录上一层级的目录的标识,并返回执行所述判断所述当前目录是否为所述目标文件节点的多个等级的目录中的最后一层目录。
可选的,所述方法还包括:
接收用户发送的携带有基准目录的查询请求;
判断所述基准目录在数据库中是否存在;
若不存在,向所述用户反馈所述基准目录不存在;
若存在,在数据库中查询所述基准目录对应的文件目录或文件节点,并向所述用户反馈所述基准目录对应的文件目录或文件节点。
可选的,所述方法还包括:
接收用户发送的携带有基准目录的删除请求;
判断所述基准目录在数据库中是否存在;
若不存在,向所述用户反馈所述基准目录不存在;
若存在,在数据库中查询所述基准目录对应的目录标识,并判断数据库中是否存在以所述基准目录对应的目录标识为父级标识的文件目录;
若存在文件目录,向所述用户反馈目录删除失败信息;
若不存在文件目录,删除所述基准目录对应的文件目录,并向所述用户反馈目录删除成功信息。
可选的,所述方法还包括:
接收用户发送的携带有基准目录的文件删除请求;
判断所述基准目录在数据库中是否存在;
若不存在,向所述用户反馈所述基准目录不存在;
若存在,在数据库中查询所述基准目录对应的文件节点,并删除所述文件节点对应的文件,并向所述用户反馈文件删除成功信息。
一种分布式存储系统中文件目录的创建装置,包括:
获取单元,用于获取目标文件节点在分布式存储系统中的存储路径;
创建单元,用于根据所述目标文件节点在分布式存储系统中的存储路径,创建所述目标文件节点的文件目录、以及所述目标文件节点的文件目录与所述目标文件节点的映射关系;
存储单元,用于将所述目标文件节点的文件目录与所述目标文件节点的映射关系存储在数据库中。
可选的,所述文件目录包括目录标识、目录路径和父级标识。
可选的,所述创建单元,具体用于将所述目标文件节点的文件名加入到所述目标文件节点在分布式存储系统中的存储路径的末端,得到所述目标文件节点的目录路径;对所述目标文件节点的目录路径进行解析,得到所述目标文件节点的多个等级的目录;从根目录开始,按所述目标文件节点的多个等级的目录的层级关系对所述目标文件节点的多个等级的目录进行遍历,得到当前目录,所述当前目录为当前正在遍历的目录;判断数据库中是否存在所述当前目录;若存在,判断所述当前目录是否为所述目标文件节点的多个等级的目录中的最后一层目录;若是最后一层目录,结束对所述目标文件节点的多个等级的目录的遍历;若不是最后一层目录,将所述当前目录的子目录确定为新的当前目录,并返回执行所述判断数据库中是否存在所述当前目录;若不存在,在数据库中创建所述当前目录,得到所述当前目录的标识,并将所述当前目录的父级目录的标识设置为所述当前目录上一层级的目录的标识,并返回执行所述判断所述当前目录是否为所述目标文件节点的多个等级的目录中的最后一层目录。
可选的,所述装置还包括:
查询单元,用于接收用户发送的携带有基准目录的查询请求;判断所述基准目录在数据库中是否存在;若不存在,向所述用户反馈所述基准目录不存在;若存在,在数据库中查询所述基准目录对应的文件目录或文件节点,并向所述用户反馈所述基准目录对应的文件目录或文件节点。
可选的,所述装置还包括:
目录删除单元,用于接收用户发送的携带有基准目录的删除请求;判断所述基准目录在数据库中是否存在;若不存在,向所述用户反馈所述基准目录不存在;若存在,在数据库中查询所述基准目录对应的目录标识,并判断数据库中是否存在以所述基准目录对应的目录标识为父级标识的文件目录;若存在文件目录,向所述用户反馈目录删除失败信息;若不存在文件目录,删除所述基准目录对应的文件目录,并向所述用户反馈目录删除成功信息。
可选的,所述装置还包括:
文件删除单元,用于接收用户发送的携带有基准目录的文件删除请求;判断所述基准目录在数据库中是否存在;若不存在,向所述用户反馈所述基准目录不存在;若存在,在数据库中查询所述基准目录对应的文件节点,并删除所述文件节点对应的文件,并向所述用户反馈文件删除成功信息。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种分布式存储系统中文件目录的创建方法及装置,根据目标文件节点在分布式存储系统中的存储路径,创建目标文件节点的文件目录、以及目标文件节点的文件目录与目标文件节点的映射关系,并将目标文件节点的文件目录与目标文件节点的映射关系存储在数据库中。当用户需要访问某个文件时,只需要根据该文件的存储路径在数据库中查询就可以得到该文件对应的文件节点,实现用户对分布式存储系统中文件的有效管理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种分布式存储系统中文件目录的创建方法流程图;
图2为本发明实施例公开的一种文件目录的创建方法流程图;
图3为本发明实施例公开的一种目录查询方法流程图;
图4为本发明实施例公开的一种目录删除方法流程图;
图5为本发明实施例公开的一种文件删除方法流程图;
图6为本发明实施例公开的一种分布式存储系统中文件目录的创建装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本实施例公开了一种分布式存储系统中文件目录的创建方法,具体包括以下步骤:
s101:获取目标文件节点在分布式存储系统中的存储路径;
s102:根据所述目标文件节点在分布式存储系统中的存储路径,创建所述目标文件节点的文件目录、以及所述目标文件节点的文件目录与所述目标文件节点的映射关系;
可选的,所述文件目录包括目录标识、目录路径和父级标识。
在此基础上,请参阅图2,所述根据所述目标文件节点在分布式存储系统中的存储路径,创建所述目标文件节点的文件目录,包括:
s201:将所述目标文件节点的文件名加入到所述目标文件节点在分布式存储系统中的存储路径的末端,得到所述目标文件节点的目录路径;
s202:对所述目标文件节点的目录路径进行解析,得到所述目标文件节点的多个等级的目录;
s203:从根目录开始,按所述目标文件节点的多个等级的目录的层级关系对所述目标文件节点的多个等级的目录进行遍历,得到当前目录;
所述当前目录为当前正在遍历的目录;
s204:判断数据库中是否存在所述当前目录;
若存在,执行s205:判断所述当前目录是否为所述目标文件节点的多个等级的目录中的最后一层目录;
若是最后一层目录,执行s206:结束对所述目标文件节点的多个等级的目录的遍历;
若不是最后一层目录,执行s207:将所述当前目录的子目录确定为新的当前目录,并返回执行s204;
若不存在,执行s208:在数据库中创建所述当前目录,得到所述当前目录的标识,并将所述当前目录的父级目录的标识设置为所述当前目录上一层级的目录的标识,并返回执行s207。
以存储路径为“/home/second”文件名为“third”为例,得到目标文件节点的目录路径为“/home/second/third”。
首先,我们先将“/home/second/third”进行拆分成以下的目录形式
/
/home
/home/second
/home/second/third
然后,检查“/”根目录是否存在,若不存在,在数据库中创建“/”目录,请参阅表1,目录的标识为1,父级标识为0。若存在,不用创建,获取该根目录的“目录标识”。
第三,检查“/home”目录是否存在,若不存在,创建该目录的记录,生成一个唯一的目录标识,父级标识设置为上一层目录标识;若存在,不重复创建。获取该级的“目录标识”。
第四,检查“/home/second”目录是否存在,若不存在,创建该目录的记录,生成一个唯一的目录标识,父级标识设置为上一层目录标识;若存在,不重复创建。获取该级的“目录标识”。
第五,检查“/home/second/third”目录是否存在,若不存在,创建该目录的记录,生成一个唯一的目录标识,父级标识设置为上一层的目录标识;若存在,不重复创建。获取该级的“目录标识”。
s103:将所述目标文件节点的文件目录与所述目标文件节点的映射关系存储在数据库中。
目录标识:是针对目录来描述的,根目录的标识从1开始,后面所有的目录对应的目录标识都是不重复的。
目录路径:这里的路径有目录的路径或文件的路径,这里的路径都是以“/”开头的绝对路径。中间不允许存在相对路径中的”.”或”..”的路径描述。文件或目录的结尾不适用”/’结尾。路径中间可以包括空格。子目录或子文件的前面部分路径的描述必须和父级的路径完全相同。
父级标识:这个表示记录的上一级的目录是哪一个,用来确定这个目录或文件属于哪一个目录。根目录“/”的父级标识为0.表示根目录,其他的所有子目录或文件都指向他的上一级目录,该标识是用来索引查找子目录下的哪一个目录方便索引使用。提高索引效率。
文件结点:该列若存在文件关联,存在对应的值;若为目录该列中的值为空。该文件结点是和实际的文件建立关联的记录信息。
请参阅表1,数据库中存储文件节点的文件目录与目标文件节点的映射关系的表如下:
表1
本实施例公开的一种分布式存储系统中文件目录的创建方法,根据目标文件节点在分布式存储系统中的存储路径,创建目标文件节点的文件目录、以及目标文件节点的文件目录与目标文件节点的映射关系,并将目标文件节点的文件目录与目标文件节点的映射关系存储在数据库中。当用户需要访问某个文件时,只需要根据该文件的存储路径在数据库中查询就可以得到该文件对应的文件节点,实现用户对分布式存储系统中文件的有效管理。
当将所述目标文件节点的文件目录与所述目标文件节点的映射关系存储在数据库中之后,可以对文件目录进行查询,具体请参阅图3,目录查询方法具体包括以下步骤:
s301:接收用户发送的携带有基准目录的查询请求;
s302:判断所述基准目录在数据库中是否存在;
若不存在,执行s303:向所述用户反馈所述基准目录不存在;
若存在,执行s304:在数据库中查询所述基准目录对应的文件目录或文件节点,并向所述用户反馈所述基准目录对应的文件目录或文件节点。
用户给定一个基准目录,使用基准目录,在数据库中获取到该目录下的所有目录或文件。
首先,检查用户给定的基准目录是否存在。在“目录路径”这一列中查询用户给定的目录是否存在,若不存在,向所述用户反馈所述基准目录不存在。否则查询到该目录的“目录标识”、“父级标识”和“文件结点”3个信息。并且“文件结点”字段为空,表示用户给定的基准目录是一个目录,否则用户查询的是一个文件,不是目录。假设查询的路径为“/home”,查询到的“目录标识”为2,“父级标识”为1。
第二,通过查询到的“目录标识”,检索数据库表中,“父级标识”为查询到的“目录标识”的记录。假设查询路径为“/home”的所有子目录,过滤掉文件。查询方式为所有“父级标识”为2且“文件结点”为空的所有记录。查询结果如下:
/home/name1
/home/name2
将查询到的结果反馈给用户。
本发明还支持目录删除功能,请参阅图4,一种目录删除方法包括:
s401:接收用户发送的携带有基准目录的删除请求;
s402:判断所述基准目录在数据库中是否存在;
若不存在,执行s403:向所述用户反馈所述基准目录不存在;
若存在,执行s404:在数据库中查询所述基准目录对应的目录标识;
s405:判断数据库中是否存在以所述基准目录对应的目录标识为父级标识的文件目录;
若存在文件目录,执行s406:向所述用户反馈目录删除失败信息;
若不存在文件目录,执行s407:删除所述基准目录对应的文件目录,并向所述用户反馈目录删除成功信息。
删除目录的最基本要求是,目录必须是空目录。给定的目录下面不存在任何子目录或文件。具体炒作如下:
假设有一个目录“/home”需要删除。
首先检查这个目录是否存在,若不存在,直接回馈用户目录不存在。
第二,检查存在,获取该目录的“目录标识”。
第三,检索数据库表中的“父级标识”,若“父级标识”中能够检索出来给定的路径对应的“目录标识”。说明该目录不是空,直接返回删除失败。
第四,检索出来的记录个数为0,直接删除该目录,回馈用户成功。
本发明还支持文件删除功能,请参阅图5,一种文件删除方法包括以下步骤:
s501:接收用户发送的携带有基准目录的文件删除请求;
s502:判断所述基准目录在数据库中是否存在;
若不存在,执行s503:向所述用户反馈所述基准目录不存在;
若存在,执行s504:在数据库中查询所述基准目录对应的文件节点,并删除所述文件节点对应的文件,并向所述用户反馈文件删除成功信息。
可以理解的是,文件删除比较简单,直接在数据库表中查找用户给定的带路路径的文件名。检索数据库,若不存在,返回失败;若存在,提取该记录中的“文件结点”信息,同时删除查询到的该条记录。然后根据文件结点删除文件的具体内容信息即可。
基于上述实施例公开的一种分布式存储系统中文件目录的创建方法,请参阅图6,本实施例对应公开了一种分布式存储系统中文件目录的创建装置,具体包括:
获取单元601,用于获取目标文件节点在分布式存储系统中的存储路径;
创建单元602,用于根据所述目标文件节点在分布式存储系统中的存储路径,创建所述目标文件节点的文件目录、以及所述目标文件节点的文件目录与所述目标文件节点的映射关系;
可选的,所述文件目录包括目录标识、目录路径和父级标识。
在此基础上,所述创建单元602,具体用于将所述目标文件节点的文件名加入到所述目标文件节点在分布式存储系统中的存储路径的末端,得到所述目标文件节点的目录路径;对所述目标文件节点的目录路径进行解析,得到所述目标文件节点的多个等级的目录;从根目录开始,按所述目标文件节点的多个等级的目录的层级关系对所述目标文件节点的多个等级的目录进行遍历,得到当前目录,所述当前目录为当前正在遍历的目录;判断数据库中是否存在所述当前目录;若存在,判断所述当前目录是否为所述目标文件节点的多个等级的目录中的最后一层目录;若是最后一层目录,结束对所述目标文件节点的多个等级的目录的遍历;若不是最后一层目录,将所述当前目录的子目录确定为新的当前目录,并返回执行所述判断数据库中是否存在所述当前目录;若不存在,在数据库中创建所述当前目录,得到所述当前目录的标识,并将所述当前目录的父级目录的标识设置为所述当前目录上一层级的目录的标识,并返回执行所述判断所述当前目录是否为所述目标文件节点的多个等级的目录中的最后一层目录。
存储单元603,用于将所述目标文件节点的文件目录与所述目标文件节点的映射关系存储在数据库中。
可选的,所述装置还包括:
查询单元,用于接收用户发送的携带有基准目录的查询请求;判断所述基准目录在数据库中是否存在;若不存在,向所述用户反馈所述基准目录不存在;若存在,在数据库中查询所述基准目录对应的文件目录或文件节点,并向所述用户反馈所述基准目录对应的文件目录或文件节点。
目录删除单元,用于接收用户发送的携带有基准目录的删除请求;判断所述基准目录在数据库中是否存在;若不存在,向所述用户反馈所述基准目录不存在;若存在,在数据库中查询所述基准目录对应的目录标识,并判断数据库中是否存在以所述基准目录对应的目录标识为父级标识的文件目录;若存在文件目录,向所述用户反馈目录删除失败信息;若不存在文件目录,删除所述基准目录对应的文件目录,并向所述用户反馈目录删除成功信息。
文件删除单元,用于接收用户发送的携带有基准目录的文件删除请求;判断所述基准目录在数据库中是否存在;若不存在,向所述用户反馈所述基准目录不存在;若存在,在数据库中查询所述基准目录对应的文件节点,并删除所述文件节点对应的文件,并向所述用户反馈文件删除成功信息。
本实施例公开的一种分布式存储系统中文件目录的创建装置,根据目标文件节点在分布式存储系统中的存储路径,创建目标文件节点的文件目录、以及目标文件节点的文件目录与目标文件节点的映射关系,并将目标文件节点的文件目录与目标文件节点的映射关系存储在数据库中。当用户需要访问某个文件时,只需要根据该文件的存储路径在数据库中查询就可以得到该文件对应的文件节点,实现用户对分布式存储系统中文件的有效管理。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。