发明名称 一种云存储客户端的低延迟元数据访问方法
摘要 本发明公开了一种云存储客户端的低延迟元数据访问方法,目的是解决元数据访问时元数据访问响应慢等问题。技术方案为:在云存储客户端结点安装由元数据定义模块、元数据导入模块、元数据请求响应模块、元数据上传模块组成的元数据访问模块;元数据定义模块确定所用元数据的内容和格式;元数据导入模块将元数据文件从云存储服务器导入键值对数据库;元数据请求响应模块根据元数据访问命令执行元数据操作;元数据上传模块将本地元数据文件上传到云存储服务器。采用本发明可消除元数据访问的网络传输延迟,避免元数据服务器成为性能瓶颈,支持同一云存储客户端结点访问异构的云存储系统,并提高元数据的安全性。
申请公布号 CN103023982B 申请公布日期 2015.04.29
申请号 CN201210479062.6 申请日期 2012.11.22
申请人 中国人民解放军国防科学技术大学 发明人 陈海涛;卢宇彤;卢凯;张伟;周恩强;谢旻;董勇;蒋艳凰;曹宏嘉;所光
分类号 H04L29/08(2006.01)I;H04L29/06(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 国防科技大学专利服务中心 43202 代理人 郭敏
主权项 一种云存储客户端的低延迟元数据访问方法,其特征在于包括以下步骤:第一步,构建元数据访问模块,将元数据访问模块安装在云存储客户端结点上,云存储客户端向元数据访问模块发送元数据访问命令,元数据访问模块向云存储客户端返回元数据访问命令的结果;云存储客户端是为用户提供云存储服务的客户端软件;元数据访问模块由元数据定义模块、元数据导入模块、元数据请求响应模块、元数据上传模块组成:元数据定义模块定义元数据的内容和格式,向元数据请求响应模块输出元数据格式表,元数据格式表是定义元数据的内容和格式的数据库表,元数据的类型包括文件元数据和目录元数据,元数据的内容由云存储客户端结点的管理员根据使用云存储客户端的应用需求确定内容名称、内容的最小长度和最大长度;元数据导入模块从云存储服务器中下载元数据文件metadata.info,将元数据文件的内容导入内存组成键值对数据库;键值对数据库中的键key为文件或者目录的完整路径名,值value为文件或者目录的元数据,值value所包含的元数据必须符合元数据格式表对于元数据的内容和格式的约束;元数据请求响应模块负责响应从云存储客户端传来的元数据访问命令,对键值对数据库进行元数据的查询、添加、删除和更新操作,根据元数据格式表对元数据的内容和格式进行校验;元数据上传模块将键值对数据库存储到本地元数据文件中,并将本地元数据文件上传到云存储服务器;第二步,由元数据定义模块确定云存储客户端结点所用元数据的内容和格式,方法如下:2.1、在云存储客户端结点中查找元数据格式表,如果元数据格式表不存在,说明元数据定义模块是第一次运行,则创建一个元数据格式表,转2.2,如果元数据格式表存在,则直接执行2.2;2.2、元数据定义模块读取元数据格式表的内容,向云存储客户端结点的显示屏幕输出;2.3、从云存储客户端结点的键盘接收指令,如果指令为添加、删除或者修改指令,则转2.4,如果指令为退出指令,则转第三步;2.4、根据指令要求添加、删除或者修改元数据格式表,转2.3;第三步,由元数据导入模块从云存储服务器下载元数据文件metadata.info到本地即元数据导入模块所属云存储客户端结点,将metadata.info的内容导入键值对数据库,方法如下:3.1、向云存储系统的元数据服务器查询远程存储在云存储服务器上的元数据文件的修改时间rtime,如果云存储服务器上不存在元数据文件,则查询结果的返回值为负数,如果rtime查询的返回结果为负数,则在本地创建一个内容为空的元数据文件,转3.5;如果rtime查询的返回结果不为负数,则执行3.2;3.2、读取存储在云存储客户端结点上的本地元数据文件的修改时间ltime;3.3、如果rtime早于或者等于ltime,即本地元数据文件为最新版本,转3.5,否则执行3.4;3.4、从云存储服务器下载元数据文件,替换本地元数据文件;3.5、读取本地元数据文件,将元数据文件的内容导入内存中组成键值对数据库,如果本地元数据文件的内容为空,则键值对数据库的内容为空,转3.6;3.6、设置meta‑changed变量的初始值为False,meta‑changed变量的值为False表示键值对数据库未做修改操作,meta‑changed变量的值为True表示键值对数据库做了修改操作;第四步,由元数据请求响应模块接收云存储客户端提交的元数据访问命令并根据命令执行,方法如下:4.1、接收云存储客户端提交的元数据访问命令,元数据访问命令包括:查询、添加、删除和更新,如果元数据访问命令为查询,则转4.2;如果元数据访问命令为添加,则转4.3;如果元数据访问命令为删除,则转4.4;如果元数据访问命令为更新,则转4.5;4.2、对键值对数据库执行查询操作,对于输入参数即键为key1的查询命令,在键值对数据库中查找键为key1的键值对记录(key1、value1),如果找到则返回值为value1,转4.6,如果没有找到,则返回值为空,转4.6;4.3、对键值对数据库执行添加操作,对于输入参数为一条键值对记录(key1、value1)的添加命令,检查value1是否满足元数据格式表中元数据的内容和格式要求,如果不满足则转4.6;如果满足则在键值对数据库中增加一条键值对记录(key1、value1),如果meta‑changed变量的值为False,则设置meta‑changed变量的值为True,转4.6;如果meta‑changed变量的值为True,转4.6;4.4、对键值对数据库执行删除操作,对于输入参数即键为key1的删除命令,如果在键值对数据库中找到key1对应的键值对记录(key1、value1),则首先在键值对数据库中删除该条键值对记录(key1、value1),然后检查meta‑changed变量的值,如果meta‑changed变量的值为False,则设置meta‑changed变量的值为True,转4.6,如果meta‑changed变量的值为True,直接转4.6;如果没有找到,则转4.6;4.5、对键值对数据库执行更新操作,对于输入参数为一条键值对记录(key1、value1)的更新命令,检查value1是否满足元数据格式表中元数据的内容和格式要求,如果不满足则转4.6;如果满足则在键值对数据库中检索键为key1的一条键值对记录(key1、oldvalue),如果找到,则首先将该条记录的值oldvalue改为value1,然后检查meta‑changed变量的值,如果meta‑changed变量的值为False,则设置meta‑changed变量的值为True,转4.6,如果meta‑changed变量的值为True,直接转4.6;如果没有找到,则转4.6;4.6、如果云存储客户端保持运行,则转4.1,如果云存储客户端退出,则转第五步;第五步,元数据上传模块将本地元数据文件上传到云存储服务器,流程如下:5.1、如果meta‑changed变量的值为False,则转5.4,如果meta‑changed变量的值为True,则执行5.2;5.2、将键值对数据库存储到本地元数据文件中;5.3、将本地元数据文件上传到云存储服务器,替换元数据文件metadata.info;5.4、结束。
地址 410073 湖南省长沙市开福区德雅路109号