CN111625198A - 一种元数据缓存方法和元数据缓存装置 - Google Patents
一种元数据缓存方法和元数据缓存装置 Download PDFInfo
- Publication number
- CN111625198A CN111625198A CN202010466534.9A CN202010466534A CN111625198A CN 111625198 A CN111625198 A CN 111625198A CN 202010466534 A CN202010466534 A CN 202010466534A CN 111625198 A CN111625198 A CN 111625198A
- Authority
- CN
- China
- Prior art keywords
- data
- radix tree
- metadata
- tree
- radix
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种元数据缓存方法和元数据缓存装置,元数据缓存方法包括构建基数树;接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;采用所述基数树对应存储所述第一数据和第二数据;本发明实施例通过在元数据写缓存中通过构建基数树,采用基数树这一数据结构对元数据缓存请求中包含的第一数据和第二数据之间的映射信息进行存储,通过基于基数树radix tree的元数据写缓存机制保证了元数据存储的高效性,并且基数树具有稳定的层高,随着用户写入数据量的增多,也能够保证元数据操作性能的稳定性。
Description
技术领域
本发明涉及元数据写缓存领域,尤其涉及一种元数据缓存方法和元数据缓存装置。
背景技术
目前在固态硬盘SSD(Solid State Disk)领域,针对写请求的常见处理方法如图1所示:
首先通过闪存转换层FTL(Flash Translation Layer)将写请求数据保存至与非门快闪存储器NAND,然后将待更新的映射信息保存至元数据写缓存区中,待元数据写缓存区中累积的映射条数达到一定的程度时,最后批量刷新元数据写缓存区中的映射信息至映射表中。
其中,使用元数据写缓存有以下几个好处:1、避免每次写完成后都需要更新映射表,更新映射表可能造成***的负担;一旦映射表不命中,又需要从NAND中读取映射数据;将待更新的映射信息保存至元数据写缓存区中,可以缩短写操作的时间,固件可以快速响应主机host的新请求,从而提升读写性能;2、使用写缓存可以提升更新映射表的效率,因为可能存在多条映射信息位于相同映射表的情况,这种情况可以节省查询-更新映射表的时间。
常见的元数据写缓存一般选择查询、***、删除性能好的数据结构,同时要兼顾空间的利用率,毕竟固件中可以使用的缓存非常有限。数组***慢,链表查询慢,所以二者基本不考虑;哈希表hashtable在处理稀疏数据的场景下有不错的效率,但是一旦处理10k~100k的数据量时,会消耗大量的桶(bucket)空间,如果想节省空间必然导致大量的键(key)冲突。因此,选择二叉树或者多叉树是目前比较主流的做法,而红黑树red-balck tree或者平衡二叉树avltree随着写入数据量的增多,会导致树的层高加大例如保存1k个item数据,avl tree的层高为10,即log21024,性能也会随着写入的数据量增多而下降。
发明内容
本发明所要解决的技术问题是:提供一种元数据缓存方法和元数据缓存装置,提高了元数据操作性能的稳定性。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种元数据缓存方法,包括步骤:
构建基数树;
接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;
采用所述基数树对应存储所述第一数据和第二数据。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种元数据缓存装置,包括:
构建模块,用于构建基数树;
接收模块,用于接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;
存储模块,用于采用所述基数树对应存储所述第一数据和第二数据。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述元数据缓存方法中的各个步骤。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述元数据缓存方法中的各个步骤。
本发明的有益效果在于:在元数据写缓存中通过构建基数树,采用基数树这一数据结构对元数据缓存请求中包含的第一数据和第二数据之间的映射信息进行存储,通过基于基数树radix tree的元数据写缓存机制保证了元数据存储的高效性,并且基数树具有稳定的层高,随着用户写入数据量的增多,也能够保证元数据操作性能的稳定性。
附图说明
图1为现有技术中固态硬盘写请求的常见处理步骤流程图;
图2为本发明实施例的一种元数据缓存方法的步骤流程图;
图3为本发明实施例的一种元数据缓存装置的结构示意图;
图4为本发明实施例的一种电子设备的结构示意图;
图5为本发明实施例的基数树中***数据的流程示意图;
图6为本发明实施例的基数树中查询数据的流程示意图;
图7为本发明实施例的元数据写缓存区中缓存空间划分示意图;
标号说明:
1、一种元数据缓存装置;
12、构建模块;13、接收模块;14、存储模块;
2、一种电子设备;
21、存储器;22、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图2,本发明实施例提供了一种元数据缓存方法,包括步骤:
构建基数树;
接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;
采用所述基数树对应存储所述第一数据和第二数据。
从上述描述可知,本发明的有益效果在于:在元数据写缓存中通过构建基数树,采用基数树这一数据结构对元数据缓存请求中包含的第一数据和第二数据之间的映射信息进行存储,通过基于基数树radix tree的元数据写缓存机制保证了元数据存储的高效性,并且基数树具有稳定的层高,随着用户写入数据量的增多,也能够保证元数据操作性能的稳定性。
进一步的,所述采用所述基数树对应存储所述第一数据和第二数据包括:
根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点,所述待操作的数据为所述第一数据;
在所述叶子节点上存储所述第二数据。
进一步的还包括接收元数据查询请求,所述元数据查询请求包括第三数据;
根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点,所述待操作的数据为所述第三数据;
获取所述叶子节点存储的数据作为所述第三数据对应的第四数据;
发送所述第四数据。
进一步的,还包括接收元数据删除请求,所述元数据删除请求包括第五数据;
根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点,所述待操作的数据为所述第五数据;
删除所述叶子节点存储的第六数据。
由上述描述可知,根据第一数据确定对应的基数树并在对应的基数树中搜索,确定对应的叶子节点,在叶子节点存储与第一数据对应的第二数据,借助基数树,能够方便快捷地将第一数据和第二数据之间的映射信息进行存储,存储效率高,并且能够实现快速的查询和删除操作,借助基数树,保证了元数据***、查询和删除性能的良好性。
进一步的,所述基数树包括唯一标识;
所述根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点包括:
根据预先设置的数据拆分规则将所述待操作的数据拆分成第一数据块和第二数据块;
根据所述第一数据块确定对应的唯一标识;
根据所述第一数据块对应的唯一标识查找对应的基数树;
根据所述第二数据块在查找到的所述基数树上搜索,确定对应的叶子节点。
由上述描述可知,将待操作的数据拆分成第一数据块和第二数据块,根据第一数据块确定对应的基数树,根据第二数据块在对应的基数树进行搜索,确定对应的叶子节点,能够方便、快速、准确地根据待操作的数据定位到对应的叶子节点。
进一步的,所述基数树包括树高;
所述根据所述第二数据块在查找到的所述基数树上搜索,确定对应的叶子节点包括:
根据所述树高将所述第二数据块拆分成与所述树高对应的子数据序列;
按照预设顺序依次从所述子数据序列中选取子数据并在所述基数树上对应的节点层级上搜索,确定与所述子数据对应的节点,直至遍历完所述子数据序列;
将所述子数据序列最后一个子数据对应的节点确定为所述叶子节点。
由上述描述可知,将第二数据块拆分成与树高对应的子数据序列,按照预设顺序依次从子数据序列中选取子数据,并在基数树上对应节点层级上选择对应的节点直至遍历完子数据序列,查新、删除和***只需要进行与树高对应次数的比较,时间复杂度低,效率高。
进一步的,当接收到元数据缓存请求时,若在所述基数树上对应的节点层级上搜索不到与所述子数据对应的节点,则从基数树节点缓存区中申请节点,并补充***。
由上述描述可知,如果在搜索路径上不存在子数据对应的节点,可直接从基数树节点缓存区中申请节点,并补充***,实现随取随用,提高了灵活性。
进一步的,还包括步骤:
接收新建基数树请求,所述新建基数树请求包括新建的基数树对应的唯一标识和树高;
根据所述新建的基数树对应的唯一标识和树高构建对应的基数树。
由上述描述可知,可以根据实际处理的数据量的增多动态新建基数树,通过新创建基数树来分担用户写入数据量增多带来的压力,保证元数据操作性能的稳定性。
进一步的,所述第一数据为逻辑分配地址,所述第二数据为物理分配地址索引。
由上述描述可知,将上述基于基数树的元数据写缓存机制应用于元数据写缓存的具体场景,用于元数据写缓存区中LAA(逻辑分配地址)-PAA(物理分配地址)键值对的存储、查询和删除操作,能够保证稳定的元数据操作性能。
请参照图3,本发明另一实施例提供了一种元数据缓存装置,包括:
构建模块,用于构建基数树;
接收模块,用于接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;
存储模块,用于采用所述基数树对应存储所述第一数据和第二数据。
本发明另一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述元数据缓存方法中的各个步骤。
请参照图4,本发明另一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述元数据缓存方法中的各个步骤。
本发明提供的元数据缓存方法、装置、计算机可读存储介质及电子设备可以应用于任何需要缓存元数据的场景中,以下针对固件元数据写缓存的具体场景进行说明:
实施例一
请参照图2,一种元数据缓存方法,包括步骤:
S1、构建基数树;
元数据写缓存区保存了大量的LAA-PAA(Logic Au Address-Physical AuAddress)键值对,其中,LAA是根据主机host请求的LBA(Logic Block Address,逻辑块地址)计算出来的,具体公式为:LAA=LBA/sectors_per_au(一般为8),如果按照256G的空间来计算,则LAA的数量为0x400,0000;而PAA则表示为具体的物理分配地址,PAA的大小一般为4Bytes;
不同的容量将提供不同的数量的基数树radix tree,可以根据元数据写缓存区的大小以及待存储的LAA-PAA键值对的大小在所述元数据写缓存区中分配两块缓存空间,分别用于存储基数树节点和PAA(物理分配地址);再根据分配的用于存储基数树节点的缓存空间大小确定要构建的基数树的数量;
以256G空间LAA的数量为0x400,0000为例,本实施例将构建0x400棵radix tree,即radx-tree-root[0x400];
具体创建时,接收基数树创建请求,基数树创建请求中包含基数树数量、基数树的树高以及每一基数树对应的唯一标识;
根据基数树数量、基数树的树高以及每一基数树对应的唯一标识创建对应的基数树;
在一个可选的实施方式中,可以设置树高为4;
S2、接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;
其中,在元数据写缓存应用场景中,第一数据为LAA逻辑分配地址,第二数据为PAA物理分配地址索引;
比如,在FTL写的时候,已经分配了真正的PAA,这里PAA是4Bytes,待写完成后,需要将LAA是0x3520221,PAA是0x34528976保存到元数据写缓存区中,此时需要先从PAA缓存区分配一个4Bytes的空间,保存0x34528976,这个空间的索引是25,这里的索引指的是下标,即25标识PAA缓存区中的第25个PAA,则元数据缓存请求中包含逻辑分配地址LAA即0x3520221以及物理分配地址PAA索引25;
S3、采用所述基数树对应存储所述第一数据和第二数据;
基数树是将指针与整数键值相关联的机制,它存储效率高,并且可快速查询,用于指针与整数值的映射,本实施例通过基数树存储了第一数据与第二数据的映射关系,每颗基数树由多个基数树节点radix tree node构成,每个节点有一个固定的大小为2^n的指针指向下一级节点,可以根据实际需要设置n的大小,比如设置n的值为4,则每个节点可以保持16个下一级节点的信息,分别对应4bit的组合分支[0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111],其中,radix tree node可以定义如下:
TypedefstructRadix_Tree_Node_t{
Uint16_t sub_radix_tree_node_index[16];
}Radix_Tree_Node;
在保持第一数据和第二数据的映射信息时,具体的,根据预先设置的数据拆分规则将所述第一数据拆分成第一数据块和第二数据块;
根据所述第一数据块确定对应的唯一标识;
根据所述第一数据块对应的唯一标识查找对应的基数树;
根据所述树高将所述第二数据块拆分成与所述树高对应的子数据序列;
按照预设顺序依次从所述子数据序列中选取子数据并在所述基数树上对应的节点层级上搜索,确定与所述子数据对应的节点,直至遍历完所述子数据序列;
将所述子数据序列最后一个子数据对应的节点确定为所述叶子节点。
在所述叶子节点上存储所述第二数据;
以第一数据逻辑分配地址LAA为0x3520221,第二数据物理分配地址PAA索引为25为例进行说明:
请参照图5,首先将0x3520221拆分成两部分0x352和0x0221,根据0x352找到对应的基数树的树根节点;
然后根据0x0221的二进制值0000/0010/0010/0001以及树高(假设为4),将该二进制值拆分成与树高4对应的子数据序列{0000,0010,0010,0001},从低位开始按照4bit进行遍历,如图5中的虚线所示,在树根节点根据0001找到对应的下一级节点中间节点1,在中间节点1根据0010找到下级节点中间节点2,在中间节点2根据0010找到叶子节点,最后在叶子节点根据0000将PAA索引25保存到叶子节点对应的指针上,即对应的槽slot上;
其中,子数据序列的遍历顺序可以根据需要进行设置,比如可以是从低位开始,也可以从高位开始,或者约定一个顺序,按照这个约定的顺序进行遍历即可;
在一个可选的实施方式中,若在所述基数树上对应的节点层级上搜索不到与所述子数据对应的节点,则从基数树节点缓存区中申请节点,并补充***;
即在路径上不存在radix tree node,则从radix tree node缓存区申请节点补充***;
在另一个可选的实施方式中,还包括接收元数据查询请求,所述元数据查询请求包括第三数据;
根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点,所述待操作的数据为所述第三数据;
获取所述叶子节点存储的数据作为所述第三数据对应的第四数据;
发送所述第四数据;
以第三数据LAA为0x234F232为例,其中高位的0x234标识为对应的基数树唯一标识radix tree id,即表示哪一棵基数树,LAA剩余部分0xF232则用来搜索确定出来的基数树:
0xF232对应的二进制为1111/0010/0011/0010,根据树高4按照4bit将其进行拆分成子数据序列{1111,0010,0011,0010},然后从低位开始,4bit 4bit地进行搜索,如图6的虚线所示,在对应的节点层级依次搜索:
0010->0011->0010->1111;
最后找到对应的基数树节点上保存的PAA的索引,即PAA index;
在另一个可选的实施方式中,还包括接收元数据删除请求,所述元数据删除请求包括第五数据;
根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点,所述待操作的数据为所述第五数据;
删除所述叶子节点存储的第六数据;
还是以第五数据为0x234F232为例,则参照图6,找到对应的基数树节点上保存的PAA的索引,即PAA index后,将其删除;
可以看到,如果基数树的层高设置为4层,每个节点可以保存16个节点信息,则每棵基数树可以保存16*16*16*16=64k个节点,而***、查询以及删除只需要进行4次比较,由此可见其高效性;
图7所示为在固件有限的元数据写缓存区中分配两块缓存空间,分别用于存储基数树节点和PAA(物理分配地址);
根据前面定义的每个基数树节点格式可知,每个基数树节点的大小为2Bytes*16=32Bytes,中间节点的sub_radix_tree_node_index指向Radix_Tree_Node在缓存中的索引,叶子节点的sub_radix_tree_node_index指向PAA在缓存中的索引;
初步估计两者的内存消耗,如果消耗4k个Radix_Tree_Node,需要消耗内存4k*32=128kB,不考虑radixtree中第一、二层的消耗量,覆盖的PAA个数为[4k,4k*16];其中,4k个PAA需要消耗的内存大小为4k*4Bytes=16KB;
在另一个可选的实施方式中,还包括步骤:
接收新建基数树请求,所述新建基数树请求包括新建的基数树对应的唯一标识和树高;
根据所述新建的基数树对应的唯一标识和树高构建对应的基数树;
即随着用户写入数据量的增多,可以通过动态增加基数树来分担压力。
实施例二
请参照图3,一种元数据缓存装置1,包括:
构建模块11,用于构建基数树;
接收模块12,用于接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;
存储模块13,用于采用所述基数树对应存储所述第一数据和第二数据;
此外,上述相应的模块用于执行实施例一中对应的步骤。
实施例三
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现实施例一所述的元数据缓存方法中的各个步骤。
实施例四
请参照图4,一种电子设备2,包括存储器21、处理器22及存储在存储器21上并可在处理器22上运行的计算机程序,所述处理22执行所述计算机程序时实现实施例一所述的元数据缓存方法中的各个步骤。
综上所述,本发明提供的一种元数据缓存方法、装置、计算机可读存储介质及电子设备,在元数据写缓存中通过构建基数树,采用基数树这一数据结构对元数据缓存请求中包含的第一数据和第二数据之间的映射信息进行存储,因为基数树的层高固定,通过设置固定的较小的层高,则查询、删除以及***只需要进行与层高对应次数的比较,计算复杂度低,效率高,并且随着用户写入数据量的增多,可以通过动态新增多棵基数树来分担压力,保证元数据操作性能的稳定性。
在本申请所提供的上述实施例中,应该理解到,所揭露的方法、装置、计算机可读存储介质以及***,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个组件或模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或组件或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为组件显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部组件来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个组件单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种元数据缓存方法,其特征在于,包括步骤:
构建基数树;
接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;
采用所述基数树对应存储所述第一数据和第二数据。
2.根据权利要求1所述的一种元数据缓存方法,其特征在于,所述采用所述基数树对应存储所述第一数据和第二数据包括:
根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点,所述待操作的数据为所述第一数据;
在所述叶子节点上存储所述第二数据。
3.根据权利要求2所述的一种元数据缓存方法,其特征在于,还包括接收元数据查询请求,所述元数据查询请求包括第三数据;
根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点,所述待操作的数据为所述第三数据;
获取所述叶子节点存储的数据作为所述第三数据对应的第四数据;
发送所述第四数据。
4.根据权利要求2所述的一种元数据缓存方法,其特征在于,还包括接收元数据删除请求,所述元数据删除请求包括第五数据;
根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点,所述待操作的数据为所述第五数据;
删除所述叶子节点存储的第六数据。
5.根据权利要求2至4中任一项所述的一种元数据缓存方法,其特征在于,所述基数树包括唯一标识;
所述根据待操作的数据确定对应的基数树并在所述对应的基数树上搜索,确定对应的叶子节点包括:
根据预先设置的数据拆分规则将所述待操作的数据拆分成第一数据块和第二数据块;
根据所述第一数据块确定对应的唯一标识;
根据所述第一数据块对应的唯一标识查找对应的基数树;
根据所述第二数据块在查找到的所述基数树上搜索,确定对应的叶子节点。
6.根据权利要求5所述的一种元数据缓存方法,其特征在于,所述基数树包括树高;
所述根据所述第二数据块在查找到的所述基数树上搜索,确定对应的叶子节点包括:
根据所述树高将所述第二数据块拆分成与所述树高对应的子数据序列;
按照预设顺序依次从所述子数据序列中选取子数据并在所述基数树上对应的节点层级上搜索,确定与所述子数据对应的节点,直至遍历完所述子数据序列;
将所述子数据序列最后一个子数据对应的节点确定为所述叶子节点。
7.根据权利要求6所述的一种元数据缓存方法,其特征在于,当接收到元数据缓存请求时,若在所述基数树上对应的节点层级上搜索不到与所述子数据对应的节点,则从基数树节点缓存区中申请节点,并补充***。
8.根据权利要求1至4、6至7中任一项所述的一种元数据缓存方法,其特征在于,还包括步骤:
接收新建基数树请求,所述新建基数树请求包括新建的基数树对应的唯一标识和树高;
根据所述新建的基数树对应的唯一标识和树高构建对应的基数树。
9.根据权利要求1至4、6至7中任一项所述的一种元数据缓存方法,其特征在于,所述第一数据为逻辑分配地址,所述第二数据为物理分配地址索引。
10.一种元数据缓存装置,其特征在于,包括:
构建模块,用于构建基数树;
接收模块,用于接收元数据缓存请求,所述元数据缓存请求包括第一数据及所述第一数据对应的第二数据;
存储模块,用于采用所述基数树对应存储所述第一数据和第二数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010466534.9A CN111625198A (zh) | 2020-05-28 | 2020-05-28 | 一种元数据缓存方法和元数据缓存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010466534.9A CN111625198A (zh) | 2020-05-28 | 2020-05-28 | 一种元数据缓存方法和元数据缓存装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111625198A true CN111625198A (zh) | 2020-09-04 |
Family
ID=72270037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010466534.9A Pending CN111625198A (zh) | 2020-05-28 | 2020-05-28 | 一种元数据缓存方法和元数据缓存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625198A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116821058A (zh) * | 2023-08-28 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 元数据访问方法、装置、设备及存储介质 |
CN116893786A (zh) * | 2023-09-05 | 2023-10-17 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526965A (zh) * | 2009-04-29 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种磁盘文件的索引节点定位方法和装置 |
CN103098034A (zh) * | 2010-07-28 | 2013-05-08 | Fusion-Io股份有限公司 | 用于条件和原子存储操作的装置、***和方法 |
CN108897698A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种文件数据块寻址方法、***及设备和存储介质 |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
-
2020
- 2020-05-28 CN CN202010466534.9A patent/CN111625198A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526965A (zh) * | 2009-04-29 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种磁盘文件的索引节点定位方法和装置 |
CN103098034A (zh) * | 2010-07-28 | 2013-05-08 | Fusion-Io股份有限公司 | 用于条件和原子存储操作的装置、***和方法 |
CN108897698A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种文件数据块寻址方法、***及设备和存储介质 |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
TING WU 等: "Multigranularity Space Management Scheme for Accelerating the Write Performance of In-Memory File Systems", IEEE, pages 1 - 12 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116821058A (zh) * | 2023-08-28 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 元数据访问方法、装置、设备及存储介质 |
CN116821058B (zh) * | 2023-08-28 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 元数据访问方法、装置、设备及存储介质 |
CN116893786A (zh) * | 2023-09-05 | 2023-10-17 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN116893786B (zh) * | 2023-09-05 | 2024-01-09 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5996088B2 (ja) | 暗号ハッシュ・データベース | |
CN110083601B (zh) | 面向键值存储***的索引树构建方法及*** | |
US9471500B2 (en) | Bucketized multi-index low-memory data structures | |
Zhong et al. | {REMIX}: Efficient Range Query for {LSM-trees} | |
KR20210058988A (ko) | 키-값 저장 트리 데이터 블록의 카운터 기반 압축 | |
CN111832065A (zh) | 使用电路实现的软件和用于密钥-值存储的方法 | |
US7870122B2 (en) | Self-tuning index for flash-based databases | |
CN104809179A (zh) | 访问哈希表的装置和方法 | |
US20150324281A1 (en) | System and method of implementing an object storage device on a computer main memory system | |
CN103229164A (zh) | 数据访问方法和装置 | |
CN111324305B (zh) | 一种分布式存储***中数据写入/读取方法 | |
CN111625198A (zh) | 一种元数据缓存方法和元数据缓存装置 | |
CN113094336B (zh) | 基于Cuckoo哈希的文件***目录管理方法及*** | |
CN114064984B (zh) | 一种基于稀疏数组链表的世界状态增量更新方法及装置 | |
CN110275838A (zh) | Kv存储设备的地址转换及其加速器 | |
CN106055679A (zh) | 一种多层次缓存感知型索引方法 | |
US7210019B2 (en) | Exclusive access for logical blocks | |
KR20230026946A (ko) | 해싱을 사용하는 키 밸류 스토리지 장치 및 그것의 동작 방법 | |
CN117573676A (zh) | 基于存储***的地址处理方法、装置、存储***及介质 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
Liu et al. | Pea hash: a performant extendible adaptive hashing index | |
CN111104435B (zh) | 一种元数据组织方法、装置、设备及计算机可读存储介质 | |
CN112527196B (zh) | Cache读写方法、装置、计算机可读存储介质及电子设备 | |
US11366609B2 (en) | Technique for encoding deferred reference count increments and decrements | |
CN109325023B (zh) | 一种数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 518000 floors 1-3 and 4 of buildings 4 and 8, zone 2, Zhongguan honghualing Industrial South Zone, No. 1213 Liuxian Avenue, Pingshan community, Taoyuan Street, Nanshan District, Shenzhen, Guangdong Applicant after: BIWIN STORAGE TECHNOLOGY Co.,Ltd. Address before: 518000 1st, 2nd, 4th and 6th floors of No.4 factory building of tongfuyu industrial city, Taoyuan Street, Nanshan District, Shenzhen City, Guangdong Province Applicant before: BIWIN STORAGE TECHNOLOGY Co.,Ltd. |