[发明专利]一种基于大容量表的分层目录的存储方法及系统有效
申请号: | 201410827977.0 | 申请日: | 2014-12-26 |
公开(公告)号: | CN105786916B | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 董昌坤;江峰;郭常勇 | 申请(专利权)人: | 中国电信股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/28 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 赵倩男 |
地址: | 100033 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 容量 分层 目录 存储 方法 系统 | ||
本发明公开了一种基于大容量表的分层目录的存储方法及系统。该方法包括:将给定路径最低层对象或目录的首字母前加标识符,标识所述对象或目录为最低层,并存储所述对象或目录;获取所述对象或目录的父目录路径,并判断所述父目录路径是否为第一层,若不是,则在所述父目录路径的目录的首字母前加标识符,标识所述父目录路径为最低层,并存储所述父目录路径的目录。因此,实现了同一层的对象和目录集中存储,进而在检索时提高了效率。
技术领域
本发明涉及云计算领域,尤其涉及一种基于大容量表的分层目录的存储方法及系统。
背景技术
传统关系型数据库对于万亿级条数的数据的性能和可扩容性方面都比较差。大容量表可以容纳PB级的数据,随着业务的发展,其数量可数十倍级的增长。虽然大容量表解决了容量的限制,但其目录或文件在存储方时,被查询的特定层级的目录或文件是随机分布的,这会导致大量的连续扫描,和随后的路径解析,从而消耗大量IO和CPU资源。例如,以抓取的字母排序比较靠前、中间、靠后的/bn1/a_dp1/a_dp2/b、/bn1/a_dp1/mfile_dp2、/bn1/a_dp1/z_dp2/z的路径为例:
/bn1/a_dp1/a_dp2/b
....
/bn1/a_dp1/a_dp2/c/23/s
/bn1/a_dp1/ab_dp2/c/23/s
(中间共有600亿个对象记录)
....
/bn1/a_dp1/mfile_dp2
....
/bn1/a_dp1/a_dp2/c/23/s
/bn1/a_dp1/ab_dp2/c/23/s
(中间共有400亿个对象记录)
....
/bn1/a_dp1/z_dp2/z
假如在一台服务器上可以存放100亿条对象记录,有10台服务器,为检索/bn1/a_dp1的下一级目录或文件,需要对以/bn1/a_dp1/a_dp2/b到/bn1/a_dp1/z_dp2/z止的10台服务器进行全扫描,且在扫描的同时还需要对每条记录的对象名进行分级解析,以截取到第3级目录,这样的话做一次目录检索,需要对10台服务器的存储做一次全扫描,对1000亿条对象记录做字符串截取、匹配、去重多种运算。因此,大容量表的目录存储方式,使得同一层的目录和对象不能集中存储,导致在检索时效率极低。
发明内容
本发明要解决的技术问题是大容量表的目录和对象存储方式,使得同一层的目录和对象不能集中存储,导致在检索时效率极低。
根据本发明一方面,提出一种基于大容量表的分层目录的存储方法,包括:
将给定路径最低层对象或目录的首字母前加标识符,标识所述对象或目录为最低层,并存储所述对象或目录;
获取所述对象或目录的父目录路径,并判断所述父目录路径是否为第一层,若不是,则在所述父目录路径的目录的首字母前加标识符,标识所述父目录路径为最低层,并存储所述父目录路径的目录。
进一步,对象或目录作为大容量表的键(key),将所述目录下一层所对应的对象数目作为所述目录所对应的值(value);
在添加对象时,该对象的上层目录对应的value递增;
在删除对象时,先删除该对象的键值对记录,并将所述对象的上层目录的value递减。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电信股份有限公司,未经中国电信股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410827977.0/2.html,转载请声明来源钻瓜专利网。