CN103744882A - 一种基于键值对的目录片段表示方法及装置 - Google Patents
一种基于键值对的目录片段表示方法及装置 Download PDFInfo
- Publication number
- CN103744882A CN103744882A CN201310713558.XA CN201310713558A CN103744882A CN 103744882 A CN103744882 A CN 103744882A CN 201310713558 A CN201310713558 A CN 201310713558A CN 103744882 A CN103744882 A CN 103744882A
- Authority
- CN
- China
- Prior art keywords
- catalogue
- directory entry
- key
- value pair
- binary tree
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于键值对的目录片段表示方法及装置,应用于计算机存储领域:上述方法包括以下步骤:将目录拆分为多个目录片段,其中,每一个目录片段所包含的目录项用一个键值对来定义;所述目录的拆分方式为键值对的集合。本发明的有益效果是:该方法以目录项作为拆分的最小颗粒度,能够将单个目录表示成任意大小、任意多个目录片段的集合;也可以将一个目录表示为成多个不同大小的目录片段,集合中的每一个目录片段所对应的目录项使用键值对进行表示,能够动态的做出调整。
Description
技术领域
本发明涉及计算机存储领域,尤其涉及一种基于键值对的目录片段表示方法及装置。
背景技术
随着网络应用的迅速发展,网络信息数据量越来越大,PB级别的海量数据存储变得越来越重要,传统意义的文件系统已不能满足现有应用的大容量、高可靠性、高性能等要求,为满足这些新要求,分布式文件系统应用得到了广泛重视。
现有分布式文件系统的研究主要分为元数据与实际数据存储分开管理,文件系统中元数据请求占据所有请求的50%以上,因此,元数据管理问题成为分布式文件系统研究中的一个重要研究方向。现有方法主要分为子树分区和散列算法两大类:有静态子树分区、静态散列、延迟混合、目录Hash分割、动态子树分割等算法。
静态子树分区算法以子目录为单位,把根目录下面的各个子目录或者下层的某些子目录分配到不同的元数据服务器上进行存储,该算法维护一个完整的传统文件系统层次目录结构;当某个目录内容是热点数据时,多个用户同时访问该元数据服务器,会造成负载不均衡的情况,成为系统瓶颈。
一般散列算法都通过对文件的某一特定键值(如文件名、路径名等)进行哈希,根据哈希的结果把文件分布到各个服务器上,具有很好的负载平衡性,但破坏了目录的层次结构,并且在系统的扩展性方面存在缺陷,当Hash函数发生改变时导致大量数据迁移。
考虑到动态子树分割方法能够很好地实现动态负载均衡要求,并提供高性能的服务等优点,但在动态子树分割中,一个基本的问题是如何描述每个子树的范围即该子树对应哪些元数据项目,现有技术中还没有有效的解决方案。
发明内容
本发明提供一种基于键值对的目录片段表示方法及装置,以解决上述问题。
本发明提供一种基于键值对的目录片段表示方法。上述方法包括以下步骤:
将目录拆分为多个目录片段,其中,每一个目录片段所包含的目录项用一个键值对来定义;
所述目录的拆分方式为键值对的集合。
本发明还提供一种基于键值对的目录片段表示装置,包括:
该装置包括拆分模块;所述拆分模块,用于将目录拆分为多个目录片段,其中,每一个目录片段所包含的目录项用一个键值对来定义;所述目录的拆分方式为键值对的集合。
本发明的有益效果是:该方法以目录项作为拆分的最小颗粒度,能够将单个目录表示成任意大小、任意多个目录片段的集合;也可以将一个目录表示为成多个不同大小的目录片段,集合中的每一个目录片段所对应的目录项使用键值对进行表示,能够动态的做出调整。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1所示为本发明实施例1的目录二叉树与目录项对应关系的示意图;
图2所示为本发明实施例2的基于键值对的目录片段表示方法流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明提供一种基于键值对的目录片段表示方法,包括以下步骤:
将目录拆分为多个目录片段,其中,每一个目录片段所包含的目录项用一个键值对来定义;
所述目录的拆分方式为键值对的集合。
其中,每一个目录片段对应目录二叉树中的一个子树,用该子树的根节点表示;其中,子树的根节点用一个键值对来指明,键即Key表示了该节点的深度;值即Value表示目录二叉树中深度为Key的节点中,该节点的序号;该子树对应的叶子节点即该目录片段所包含的目录项。
其中,所述目录二叉树的建立过程如下:
将目录项数值化;若目录项数值化中所采用的算法是完全随机的,则每个数值对应的目录项是相同的,不妨设该值为x;
目录项数值化后的取值空间是2的整数次方,假设为2的y次方,则可以将这些数值视为是一个深度为y的满序二叉树的叶子节点,且该二叉树的每个叶子节点对应x个目录项,该二叉树称之为目录二叉树。
其中,将目录拆分成4个目录片段,每个目录片段包含四分之一的目录项或将目录拆分为8个目录片段,每个目录片段包含八分之一的目录项。
其中,对于一个给定的目录X,将其表示成三个目录片段a、b、c,其中a和b各包含目录X中四分之一的目录项,c包含目录X中二分之一的目录项;a、b、c所包含的目录项的并集为整个目录X的目录项。
图1所示为本发明实施例1的目录二叉树与目录项对应关系的示意图,说明如下:
目录项的数值化:该步骤负责将目录项转化为数值的方式,数值的取值范围可以根据要拆分的目录片段颗粒度决定,但必须是2的整数次方,一般使用64位或128位整数,即1-2^64或1-2^128;数值化的方法使用MD5或SHA1:以目录项的名称作为参数,将MD5或SHA1的输出截取64位或128位。使用MD5或SHA1进行目录项数字化的好处在于可以认为目录项在给定的数值区间内是随机/均匀分布的。
目录二叉树的建立:将目录项数值化之后,可以认为在数值区间内的每一个数值代表了一个目录项或多个目录项。假定目录项数值化中所采用的算法是完全随机的,则每个数值对应的目录项是相同的,不妨设该值为x。另一方面,目录项数值化后的取值空间是2的整数次方,假设为2的y次方,则可以将这些数值视为是一个深度为y的满序二叉树的叶子节点(叶子节点的顺序为从左到右),且该二叉树的每个叶子节点对应x个目录项,该二叉树称之为目录二叉树。
目录片段的表示。在得到目录二叉树之后,即可以表示出一个目录片段的对应的范围。每一个目录片段对应目录二叉树中的一个子树,用该子树的根节点表示。子树的根节点可以用一个键值对来指明,其中键(Key)表示了该节点的深度;值(Value)表示目录二叉树中深度为Key的节点中,该节点的序号(顺序为从左到右),则该子树对应的叶子节点即该目录片段所包含的目录项。
目录对应的片段集合。对于一个完整的目录,可以被表示为任意数目的目录片段,即表示为多个子树的集合。需要满足的条件是,这些子树的叶子集合需要等于整个目录二叉树的叶子集合,也即目录片段需要覆盖到该目录中的所有目录项。
结合图1,可知:对于给定的目录X,假定该目录的所有目录项集合为D,则对于目录X中的每一个目录项d∈D,可以通过任意Hash算法(例如MD5),为该目录项计算出其对应的Hash值;假设Hash算法的取值范围为0-2^128,记为M,则可以认为该区间内的每一个数值m∈M对应n个目录项,且每一个数值m都是深度为128的满二叉树T的叶子节点。
二叉树T上的每一个节点t可以用一个键值对表示,其中键为该节点在二叉树中的深度,值为该节点在同样深度的节点中的顺序(从左到右)。
目录X的每一个目录片段p,对应二叉树上的一个节点t,p包含的目录项记为以t作为根节点的子树的所有叶子节点,则p可以用t对应的键值对表示。
由此可知:将一个目录表示为个多目录片段,每一个目录片段所包含的目录项用一个键值对(Key-Value Pair)来定义,则整个目录的拆分方式可以被表述为一个键值对的集合(Key-Value Pair Collection)。
本发明将一个目录表示为多个目录片段,每一个目录片段所包含的目录项用一个键值对(Key-Value Pair)来定义,则整个目录的拆分方式可以被表述为一个键值对的集合(Key-Value Pair Collection)。
该方法主要用于元数据集群中表示每个元数据服务器(MDS)所负责的子树分区范围,子树分区可以视为是一系列目录片段的集合,则每个元数据服务器所管理一个子树分区,即管理一个目录片段的集合。
其中,将单个目录表示成任意大小、任意多个目录片段的集合。即该方法可以将目录拆分成4个目录片段,每个目录片段包含目录四分之一的目录项,也可以将目录拆分为8个目录片段,每个目录片段包含八分之一的目录项。通过调整不同的颗粒度,可以最大限度满足不同热度的元数据子树分区的拆分要求,实现元数据服务器集群的负载平衡。
将一个目录表示成多个不同大小的目录片段,即对于一个给定的目录X,可以将其表示成三个目录片段a、b、c,其中a和b各包含目录X中四分之一的目录项,c包含目录X中二分之一的目录项。a、b、c所包含的目录项的并集为整个目录X的目录项。通过这种方法,可以处理单一目录中不同目录项负载不均匀的问题,最大限度的提高元数据服务器集群的负载平衡效率。
图2所示为本发明实施例2的基于键值对的目录片段表示方法流程图,详细说明如下:
步骤201:将目录拆分为多个目录片段,其中,每一个目录片段所包含的目录项用一个键值对来定义;
步骤202:所述目录的拆分方式为键值对的集合。
本发明还提供一种基于键值对的目录片段表示装置,该装置包括拆分模块;所述拆分模块,用于将目录拆分为多个目录片段,其中,每一个目录片段所包含的目录项用一个键值对来定义;所述目录的拆分方式为键值对的集合。
本发明的有益效果是:该方法以目录项作为拆分的最小颗粒度,能够将单个目录表示成任意大小、任意多个目录片段的集合;也可以将一个目录表示为成多个不同大小的目录片段,集合中的每一个目录片段所对应的目录项使用键值对进行表示,能够动态的做出调整。
本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。
可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
Claims (6)
1.一种基于键值对的目录片段表示方法,其特征在于,包括以下步骤:
将目录拆分为多个目录片段,其中,每一个目录片段所包含的目录项用一个键值对来定义;
所述目录的拆分方式为键值对的集合。
2.根据权利要求1所述的方法,其特征在于:每一个目录片段对应目录二叉树中的一个子树,用该子树的根节点表示;其中,子树的根节点用一个键值对来指明,键即Key表示了该节点的深度;值即Value表示目录二叉树中深度为Key的节点中,该节点的序号;该子树对应的叶子节点即该目录片段所包含的目录项。
3.根据权利要求2所述的方法,其特征在于:所述目录二叉树的建立过程如下:
将目录项数值化;若目录项数值化中所采用的算法是完全随机的,则每个数值对应的目录项是相同的,不妨设该值为x;
目录项数值化后的取值空间是2的整数次方,假设为2的y次方,则可以将这些数值视为是一个深度为y的满序二叉树的叶子节点,且该二叉树的每个叶子节点对应x个目录项,该二叉树称之为目录二叉树。
4.根据权利要求1所述的方法,其特征在于:将目录拆分成4个目录片段,每个目录片段包含四分之一的目录项或将目录拆分为8个目录片段,每个目录片段包含八分之一的目录项。
5.根据权利要求1所述的方法,其特征在于:
对于一个给定的目录X,将其表示成三个目录片段a、b、c,其中a和b各包含目录X中四分之一的目录项,c包含目录X中二分之一的目录项;a、b、c所包含的目录项的并集为整个目录X的目录项。
6.一种基于键值对的目录片段表示装置,其特征在于,该装置包括拆分模块;所述拆分模块,用于将目录拆分为多个目录片段,其中,每一个目录片段所包含的目录项用一个键值对来定义;所述目录的拆分方式为键值对的集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310713558.XA CN103744882B (zh) | 2013-12-20 | 2013-12-20 | 一种基于键值对的目录片段表示方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310713558.XA CN103744882B (zh) | 2013-12-20 | 2013-12-20 | 一种基于键值对的目录片段表示方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744882A true CN103744882A (zh) | 2014-04-23 |
CN103744882B CN103744882B (zh) | 2018-05-25 |
Family
ID=50501900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310713558.XA Active CN103744882B (zh) | 2013-12-20 | 2013-12-20 | 一种基于键值对的目录片段表示方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744882B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636208A (zh) * | 2015-02-12 | 2015-05-20 | 浪潮电子信息产业股份有限公司 | 一种高可用集群资源管理方法 |
WO2015180650A1 (zh) * | 2014-05-29 | 2015-12-03 | 华为技术有限公司 | 在存储网络中的键值生成方法及装置 |
CN109508326A (zh) * | 2018-11-22 | 2019-03-22 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置和系统 |
CN110245122A (zh) * | 2019-05-08 | 2019-09-17 | 华为技术有限公司 | 一种数据处理的方法和kv存储系统 |
CN115952005A (zh) * | 2023-02-24 | 2023-04-11 | 浪潮电子信息产业股份有限公司 | 一种元数据负载均衡方法、装置、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101315640A (zh) * | 2008-07-01 | 2008-12-03 | 中兴通讯股份有限公司 | 一种目录管理方法和装置 |
CN102110146A (zh) * | 2011-02-16 | 2011-06-29 | 清华大学 | 基于键值key-value存储的分布式文件系统元数据管理方法 |
CN102385623A (zh) * | 2011-10-25 | 2012-03-21 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中目录的存取方法 |
US20120284317A1 (en) * | 2011-04-26 | 2012-11-08 | Dalton Michael W | Scalable Distributed Metadata File System using Key-Value Stores |
CN103002027A (zh) * | 2012-11-26 | 2013-03-27 | 中国科学院高能物理研究所 | 基于键值对系统实现树形目录结构的数据存储系统及方法 |
CN103198153A (zh) * | 2013-04-25 | 2013-07-10 | 北京邮电大学 | 一种应用于分布式文件系统的元数据分簇管理方法和模块 |
-
2013
- 2013-12-20 CN CN201310713558.XA patent/CN103744882B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101315640A (zh) * | 2008-07-01 | 2008-12-03 | 中兴通讯股份有限公司 | 一种目录管理方法和装置 |
CN102110146A (zh) * | 2011-02-16 | 2011-06-29 | 清华大学 | 基于键值key-value存储的分布式文件系统元数据管理方法 |
US20120284317A1 (en) * | 2011-04-26 | 2012-11-08 | Dalton Michael W | Scalable Distributed Metadata File System using Key-Value Stores |
CN102385623A (zh) * | 2011-10-25 | 2012-03-21 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中目录的存取方法 |
CN103002027A (zh) * | 2012-11-26 | 2013-03-27 | 中国科学院高能物理研究所 | 基于键值对系统实现树形目录结构的数据存储系统及方法 |
CN103198153A (zh) * | 2013-04-25 | 2013-07-10 | 北京邮电大学 | 一种应用于分布式文件系统的元数据分簇管理方法和模块 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015180650A1 (zh) * | 2014-05-29 | 2015-12-03 | 华为技术有限公司 | 在存储网络中的键值生成方法及装置 |
CN104636208A (zh) * | 2015-02-12 | 2015-05-20 | 浪潮电子信息产业股份有限公司 | 一种高可用集群资源管理方法 |
CN109508326A (zh) * | 2018-11-22 | 2019-03-22 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置和系统 |
CN110245122A (zh) * | 2019-05-08 | 2019-09-17 | 华为技术有限公司 | 一种数据处理的方法和kv存储系统 |
CN115952005A (zh) * | 2023-02-24 | 2023-04-11 | 浪潮电子信息产业股份有限公司 | 一种元数据负载均衡方法、装置、设备及可读存储介质 |
CN115952005B (zh) * | 2023-02-24 | 2023-05-30 | 浪潮电子信息产业股份有限公司 | 一种元数据负载均衡方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103744882B (zh) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mackey et al. | Improving metadata management for small files in HDFS | |
CN103793534B (zh) | 分布式文件系统及均衡元数据存储和访问负载的实现方法 | |
US20130218934A1 (en) | Method for directory entries split and merge in distributed file system | |
US11442927B1 (en) | Storage performance-based distribution of deduplicated data to nodes within a clustered storage environment | |
WO2014008856A1 (en) | Method and apparatus for file storage | |
CN103744882A (zh) | 一种基于键值对的目录片段表示方法及装置 | |
CN104184812A (zh) | 一种基于私有云的多点数据传输方法 | |
Shvachko | Apache Hadoop | |
Sheoran et al. | Optimized mapfile based storage of small files in hadoop | |
Upadhyay et al. | Deduplication and compression techniques in cloud design | |
Renner et al. | Addressing hadoop's small file problem with an appendable archive file format | |
Xu et al. | Enhancing HDFS with a full-text search system for massive small files | |
de la Prieta et al. | Multi-agent system for controlling a cloud computing environment | |
Zhou et al. | SNB-index: a SkipNet and B+ tree based auxiliary Cloud index | |
Shabeera et al. | Bandwidth-aware data placement scheme for Hadoop | |
Cha et al. | Adaptive metadata rebalance in exascale file system | |
Patgiri et al. | dMDS: uncover the hidden issues of metadata server design | |
US10083121B2 (en) | Storage system and storage method | |
US20230376461A1 (en) | Supporting multiple fingerprint formats for data file segment | |
San Román Guzmán et al. | Design of a New Distributed NoSQL Database with Distributed Hash Tables | |
Adamov | Distributed file system as a basis of data-intensive computing | |
Yang et al. | A study on disk index design for large scale de–duplication storage systems | |
Wang et al. | A Cloud‐Computing‐Based Data Placement Strategy in High‐Speed Railway | |
Zeng et al. | Do more replicas of object data improve the performance of cloud data centers? | |
Jayakar et al. | Efficient way for handling small files using extended HDFS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |