一种面向内存云的元数据目录结构实现方法与流程

文档序号:16248130发布日期:2018-12-11 23:46阅读:225来源:国知局
本发明涉及计算机领域,涉及一种一种面向内存云的元数据目录结构实现方法。
背景技术
::内存云(ramcloud)是一种key-value型新型数据中心存储系统,它是由成千上万台普通服务器的主存所组成的大规模系统,任何时候、所有信息都存储在这些快速的dram(动态随机访问存储器,即俗称的内存)中,内存取代了传统系统中的硬盘,而硬盘只作为备份使用。内存云的集群主要由主服务器(master)和备份服务器(backup)组成,其中,master用来存储和计算;backup则是用来重启系统之后的快速恢复。此外,集群中还有一个协调器(coordinator),它的功能类似于hadoop分布式文件系统中的namenode节点,负责管理配置信息等功能。ramcloud将所有数据存放在dram中,性能可以达到比目前最高性能的硬盘存储系统还要高100~1000倍。在访问延迟方面,ramcloud方案中运行在应用服务器中的一个进程从同一数据中心的存储服务器中通过网络读取数百字节数据只需5~10μs,而目前实际系统一般要花费0.5~10ms,具体取决于数据是在服务器内存缓存中,还是硬盘中。而且,一台多核存储服务器每秒可以服务至少100万次读取请求。而硬盘系统中同样的机器每秒只能服务1000~10000次请求。由此可见,内存云将会是未来存储中一大重要突破点。传统的高能物理元数据通过采用磁盘存储,利用mysq1数据库存储其目录结构以及元数据信息,能够满足tb级别的数据量产生的元数据目录结构的检索。而在eb级别的情况下,由于其目录结构较深,检索性能已经明显不能满足应用对元数据目录的访问需求。技术实现要素:本发明的目的在于克服现有技术不足,提供一种面向内存云的元数据目录结构实现方法,将目录结构与目录节点内容分离,克服现有内存云元数据目录结构较深,检索性能较低的问题。为实现上述目的本发明采用如下方案:一种面向内存云的元数据目录结构实现方法,包括如下步骤:1)采用ramcloud内存数据库,定义目录结构树,每个节点定义fileid字段和pid字段,数据字段根据需要进行赋值,子节点的pid字段指向父节点的fileid字段;2)分别定义table_index表和table_data表将目录结构和目录信息内容分离;table_index表用于存放目录结构,以pid和name作为key,fileid作为value;table_data表用于存放节点内容,以fileid作为key,节点其他信息封装成统一的结构体作为value;3)增加二级索引机制,定义内存云中的索引indexkey::indexkeyrange类型,由pid+name和单独的pid形成复合key,value为fileid和查询结果为fileid集合的复合value,定义范围查找indexlookup类型,通过indexlookup循环检索子目录;4)即table_data表的key是table_index表的value,当用户检索某个文件时,首先会检索目录结构,当检索到文件所在的目录并得到目的节点的fileid,再通过table_data表将fileid作为key来获取文件内容。本发明面向内存云的元数据目录结构实现方法,使用key-value非关系型全内存数据库ramcloud对传统的目录结构树进行重新设计,采用目录树的形式,将目录结构与目录节点内容进行分离,提高节点内容可变的灵活性,每个目录节点单独增设parent_fileid字段(简称pid),子节点的pid字段指向父节点的fileid字段,并对pid字段添加二级索引,当用户检索目录的时候,利用pid二级索引、key-value和内存存储的优势,提高目录检索效率,挂载效率也得到了很大的提升。利用二级索引加速检索子目录,当用户检索目录信息的时候,利用pid二级索引、key-value和全内存的优势,提高目录检索效率。附图说明图1是本发明的抽象表结构图图2是本发明的二级索引架构图图3是本发明实施例的模型图具体实施方式下面结合附图和具体实施例对本发明作进一步详细描述,但不作为对本发明的限定。如图1所示,本发明的面向内存云的元数据目录结构实现方法,具体步骤如下:1)采用ramcloud内存数据库代替传统mysql磁盘数据库;2)通过定义两张元数据表将目录结构和目录信息内容分离设计,分别是table_index表和table_data表;3)table_index表用于存放目录结构,以pid和name作为key,fileid作为value,同时保证了key和value的唯一性;4)table_data表用于存放节点内容,以fileid作为key,以name、nlink、atime……等节点其他信息封装成统一的结构体作为value;5)同时增加二级索引机制,定义内存云中的索引indexkey::indexkeyrange类型,将原先的由pid+name构成的key转换成由pid+name和单独的pid形成的复合key,原先的value由单一的fileid转换成由唯一fileid和查询结果为fileid集合的复合value,定义范围查找indexlookup类型,通过indexlookup循环检索子目录,如图2;6)即table_data表的key是table_index表的value,因此当用户检索某个文件的时候,首先会检索目录结构,当检索到文件所在的目录并得到目的节点的fileid,再通过table_data表将fileid作为key来获取文件内容。如图3所示,结合图3通过实施例对本发明做进一步说明。以目录结构/a,/b/d,/b/e,/c为例。根节点/的fileid为1,pid为0,代表根节点,上级目录节点为空,a的fileid为2,pid为1,连接到根节点/,同理,b的fileid为3,pid为1,c的fileid为3,pid为1,d的fileid为5,pid为3,e的fileid为6,pid为3,形成目录树。每一个目录节点都有一个fileid,子节点的parent_fileid(简称pid)指向父节点,子节点的pid指向父节点的fileid,并对pid添加二级索引,利用二级索引,通过这种方式实现目录结构的存储,加速检索子目录。最后应该说明的是:以上实施例仅用于说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本权利要求范围当中。技术特征:技术总结本发明的面向内存云的元数据目录结构实现方法,采用目录树的形式,将目录结构与目录节点内容进行分离,提高节点内容可变的灵活性,每个目录节点单独增设简称pid字段,子节点的pid字段指向父节点的fileid字段,并对pid字段添加二级索引,当用户检索目录的时候,利用pid二级索引、Key‑Value和内存存储的优势,提高目录检索效率,挂载效率也得到了很大的提升。技术研发人员:侯迪;侯智琦;齐勇;王培健;赵文嘉受保护的技术使用者:西安交通大学技术研发日:2018.06.13技术公布日:2018.12.11
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1