CN104008111A - 一种数据的存储管理方法及装置 - Google Patents
一种数据的存储管理方法及装置 Download PDFInfo
- Publication number
- CN104008111A CN104008111A CN201310060460.9A CN201310060460A CN104008111A CN 104008111 A CN104008111 A CN 104008111A CN 201310060460 A CN201310060460 A CN 201310060460A CN 104008111 A CN104008111 A CN 104008111A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- stored
- node
- index node
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Abstract
本发明实施例公开了一种数据的存储管理方法及装置,其中,所述方法包括:建立根节点及其管理的索引节点;基于根节点及其管理的索引节点确定待存储数据的哈希值;根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;在确定的存储地址下存储待存储数据,并将待存储数据的数据描述信息记录到目标索引节点中。本发明采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。
Description
技术领域
本发明涉及数据存储管理领域,尤其涉及一种数据的存储管理方法及装置。
背景技术
现有技术在存储普通的集合类型数据时,大多通过第三方存储系统托管存储,第三方存储系统会将待存储的数据按固定顺序打包存储。在用户需要查询或者使用时,第三方存储系统会返回全部集合数据。
第三方存储系统可以提供额外查询程序以供用户查询已存储的数据,这种方式增加了对存储系统的逻辑要求,一定程度上增加了存储系统的成本。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据的存储管理方法及装置,采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。
为了解决上述技术问题,本发明实施例提供了一种数据的存储管理方法,包括:
建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息;
根据根节点及其管理的索引节点对待存储数据进行存储管理,其具体包括:
基于根节点及其管理的索引节点确定待存储数据的哈希值;
根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;
在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
相应地,本发明实施例还提供了一种数据的存储管理装置,包括:
建立模块,用于建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息;
管理模块,用于根据根节点及其管理的索引节点对待存储数据进行存储管理;所述管理模块具体包括:
计算单元,用于基于根节点及其管理的索引节点确定待存储数据的哈希值;
确定单元,用于根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;
存储管理单元,用于在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
实施本发明实施例,具有如下有益效果:
本发明采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的数据的存储管理方法的第一实施例流程示意图;
图2是本发明实施例的存储管理形式的其中一种具体结构示意图;
图3是本发明的对待存储数据进行存储管理的方法的流程示意图;
图4是本发明的待存储数据存储以及描述信息记录的方法的流程示意图;
图5是本发明的数据的存储管理方法的第二实施例流程示意图;
图6是本发明实施例的存储管理方法的第三实施例流程示意图;
图7是本发明实施例的索引节点分裂后的存储管理形式示意图;
图8是本发明实施例的存储管理方法的第四实施例流程示意图;
图9是本发明实施例的根节点扩充后的存储管理形式示意图;
图10是本发明实施例的一种数据的存储管理装置的结构组成示意图;
图11是本发明实施例的另一种数据的存储管理装置的结构组成示意图;
图12是本发明实施例的再一种数据的存储管理装置的结构组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明的数据的存储管理方法的第一实施例流程示意图;本发明实施例所述的方法可应用于如基于容器集合类型数据存储的系统等存储系统中,具体的,本实施例的所述方法包括:
S101:建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息;
对于需要存储的数据,可以创建一个包括根节点和索引节点的文件,并创建用于存储数据的存储域,每个存储域可以包括预定数量的存储槽位。所述根节点及索引节点所管理的存储数据的条数对应于存储域中存储槽位的数量。所述存储域的起始地址和标识范围信息在创建存储域时获取,其中的标识范围信息为相应存储域中存储的数据的序列标识。
如图2所示,为本发明实施例的存储管理形式的其中一种具体结构示意图。根节点对1000个槽位,将分配的存储域设置为5个域,为根节点管理的每一个索引节点设置为管理20条数据。
根节点中的存储域信息包括“域1”等索引节点关联的存储域的起始地址,“0-200等存储域标识范围信息,所述根节点中还可以记录其所管理的数据集合的类型等信息。其中根节点中的“域1、域2”等用于表示每一个索引节点的起始地址,而根节点中的“0-200”等则用于表示其管理的数据的序列标识,在对各条待存储数据进行哈希处理后,得到的哈希值在0-200内的待存储数据存储到域1中。
索引节点则用于记录存储数据的数据描述信息,在某一待存储数据存储到存储域后,需要在该存储域对应的索引节点中记录该数据的数据描述信息以便于后续查找时使用。数据描述信息可以包括存储数据的存储偏移地址offset,包括key-value对以及解决哈希冲突的hash next的哈希查找信息,哈希查找信息具体包括存储数据的关键字长度key len,存储数据的值长度value len,存储数据的哈希冲突链表偏移首地址hash next等信息。
存储域中则包括多个存储槽位,用于存储对应的数据的关键字key、值value的具体数据,以及哈希冲突的链表相关数据。
需要说明的是,上述图2对应的存储管理形式的其中一种具体结构中,索引表包括了存储偏移地址和方便进行哈希查找的相关信息即哈希查找信息,在其他实施例中,在索引表中还可以包括存储偏移地址和诸如一个或者多个关键字描述信息等用于描述对应存储偏移地址下存储的数据,以方便基于关键字的搜索查找,并不仅限于上述的基于哈希的数据描述信息。
图2中示出的索引节点的每一行对应一条存储数据,其表示map类型数据的索引格式,也就是说,map类型数据的索引格式为表1的形式,对该表1进行简单变形,可以得到下表2中set、vector类型数据的索引格式,下表3中sortset类型数据的索引格式,下表4中的list类型数据的索引格式。
表1:
offset | key len | value len | hash next |
表2:
value offset | value len | hash next |
表3:
score | value offset | value len | next node offset | pre node offset | hash next |
表4:
value offset | value len | next node offset | pre node offset | hash next |
在表3、4的索引格式中,数据描述信息需要包括下一个节点的偏移地址nextnode offset,以及上一个节点的偏移地址项pre node offset。
S102:根据根节点及其管理的索引节点对待存储数据进行存储管理。
本发明实施例中,所述S102具体可以包括:基于根节点及其管理的索引节点确定待存储数据的哈希值;根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
具体请参见图3,是本发明的对待存储数据进行存储管理的方法的流程示意图,即所述S102的其中一种具体实现方式,其具体包括:
S1001:基于根节点及其管理的索引节点确定待存储数据的哈希值;具体可以采用现有的哈希函数对待存储数据进行哈希计算,得到该待存储数据的哈希值,以便于根据哈希值确定根节点以及索引节点。
S1002:根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;
所述S1002具体可以包括:根据哈希值和所述根节点中包括的各个索引节点关联的存储域信息中存储域的标识范围信息,确定目标索引节点;根据为所述目标索引节点预设的数据管理数阈值,确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
例如:对于待存储数据进行哈希的MD5取值(包括取模1000)后,得到的哈希值为128,落入到图2所示的根节点中的域1的0-200的范围中,从而确定与域1关联的第一个索引节点为目标索引节点,由于所述目标索引节点被设置为索引20条数据,然后再根据128和数据管理数阈值20计算得到所述待存储数据存储到域1的第8个槽位中,根据域1的起始地址和槽位,即可确定所述待存储数据的存储地址。
S1003:在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
具体可以如上所述,将相应的第8个槽位的存储偏移地址offset,以及包括key-value对和解决哈希冲突的hash next的哈希查找信息存储到所述目标索引节点中,以便于后续可能进行的存储数据重写、存储数据查找等操作。
具体的,请参见图4,是本发明的待存储数据存储以及描述信息记录的方法的流程示意图,图4的对应的方法是上述的S1003的其中一种具体实现方式,所述方法包括:
S2001:在确定的存储地址下存储所述待存储数据;
S2002:根据确定的存储地址在所述目标索引节点关联的存储域中的位置和根节点中所述目标索引节点的存储域信息包括的存储域起始地址,获取所述待存储数据的数据偏移地址;
S2003:将所述数据偏移地址和所述待存储数据的哈希查找信息作为所述待存储数据的数据描述信息记录到所述目标索引节点。所述哈希查找信息具体图2中所示的关键字长度key len,存储数据的值长度value len,存储数据的哈希冲突链表偏移首地址hash next等信息。
通过上述实施例的描述可知,本发明具有以下优点:
本发明采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。
再请参见图5,是本发明的数据的存储管理方法的第二实施例流程示意图;本发明实施例的所述方法具体包括:
S201:建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息;
S202:根据根节点及其管理的索引节点对待存储数据进行存储管理;
在本实施例中所述S202具体包括以下步骤:
基于根节点及其管理的索引节点确定待存储数据的哈希值;
根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;
在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
S203:检测所述根节点管理的所有索引节点对应的存储域的空闲空间,得到空闲空间总量;
S204:若空闲空间总量满足预设的回收条件,执行回收操作回收空闲空间;满足回收条件具体可以为空闲空间总量占整个存储域的空间总量的比例超过预设的阈值例如30%,如果超过,则需要回收这些空闲空间。可以根据预设的检测间隔时间,周期触发执行所述S203至S204。
S205:在回收操作执行结束后,根据回收的空间量判断是否进行重写操作;
在回收结束后,同样可以根据已回收的空间量占检测到的总的空闲空间总量的比例例如未达到预设的阈值70%时,表明不可回收的碎片比例较大,需要执行数据重写操作,即执行下述的S206。否则,结束。
S206:则根据当前根节点及其管理的索引节点记录的存储数据的数据描述信息,在新的存储空间中存储当前根节点及其管理的索引节点记录的存储数据。
即读出根节点所管理的所有索引节点关联的存储域中已存储数据,并根据当前根节点及其管理的索引节点记录的存储数据的数据描述信息,在新的存储区域存储读取的数据。
需要说明的是,在其他实施例中,在判断需要执行重写操作时,也可以读取根节点所管理的所有索引节点关联的存储域中已存储数据,然后执行建立新的根节点、索引节点,并重新进行哈希处理等处理方式存储读取的数据,并在新的索引节点中记录数据描述信息。
通过上述实施例的描述可知,本发明具有以下优点:
本发明采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。并且可以自动根据存储域的空闲空间情况,执行相应的回收策略,进一步的节约了存储资源,降低了存储系统的存储成本。
再请参见图6,是本发明实施例的存储管理方法的第三实施例流程示意图,本发明实施例所述的方法包括:
S301:建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息
S302:基于根节点及其管理的索引节点确定待存储数据的哈希值;可以采用常用的哈希函数对待存储数据的关键字key进行计算,得到待存储数据的哈希值。
S303:根据为所述目标索引节点预设的数据管理数阈值,判断目标索引节点当前所管理的存储数据的数量是否达到所述预设的数据管理数阈值;
所述的数据管理数阈值为用户预先设置的,其为所有的索引节点的数据管理的数量,例如上述图2对应的索引表中数据管理数阈值为20。在判断结果为否时,执行下述S304,在判断结果为达到所述预设的数据管理数阈值时,执行下述S306。
S304:确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
S305:在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
S306:读取所述目标索引节点关联的存储域中的已存储数据;
S307:将所述目标索引节点分裂为至少两个索引节点,将读取的已存储数据和接收到的待存储数据作为待存储数据,执行根据根节点及其管理的索引节点对待存储数据进行存储管理的步骤。
具体可以再次执行上述的S302至S305的步骤。即在该目标索引节点已经被写满时,需要对该目标节点执行分裂操作,以在目标索引节点的基础上,得到两个新的索引节点,并将原目标索引节点已存储的数据和接收到的待存储数据一同作为新的待存储数据,并对每一条待存储数据执行哈希处理、根据哈希值确定目标索引节点以及存储地址、最后在存储地址中存储每一条待存储数据并在对应的目标索引节点中记录数据描述信息。
具体的,请参见图7,为索引节点分裂后的存储管理形式示意图,具体可以为相对于图2分裂后的存储管理形式的结构图。
通过上述实施例的描述可知,本发明具有以下优点:
本发明采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。并且在存储过程中,能够根据索引节点已管理的存储数据的情况,自动进行索引节点的分裂增加,满足了存储自动化的需求。
再请参见图8,是本发明实施例的存储管理方法的第四实施例流程示意图
S401:建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息
S402:基于根节点及其管理的索引节点确定待存储数据的哈希值;可以采用常用的哈希函数对待存储数据的关键字key进行计算,得到待存储数据的哈希值。
S403:根据为所述目标索引节点预设的数据管理数阈值,判断目标索引节点当前所管理的存储数据的数量是否达到所述预设的数据管理数阈值;
所述的数据管理数阈值为用户预先设置的,其为所有的索引节点的数据管理的数量,例如上述图2对应的索引表中数据管理数阈值为20。在判断结果为否时,执行下述S404,在判断结果为达到所述预设的数据管理数阈值时,执行下述S406。
S404:确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
S405:在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
S406:进一步判断所述根节点当前管理的存储数据是否达到为所述根节点预设的条数阈值;
为所述根节点预设的条数阈值可以为上述图2中所述的1000。在判断结果为没有达到所述根节点的条数阈值时,执行下述S407,即分裂目标索引节点,得到至少两个新的索引节点,并读取该目标索引节点管理的数据,并和接收到待存储的数据一同作为新的待存储数据,以便于在至少两个新的索引节点关联的存储域中存储这些数据。如果达到所述根节点的条数阈值,则需要执行下述的S408,即需要读取该根节点管理的所有索引节点管理的已存储数据,重新建立一级根节点、根节点一级索引节点,并将读取的已存储数据和接收到的待存储的数据一同作为新的待存储数据存储。
S407:读取所述目标索引节点关联的存储域中的已存储数据,将所述目标索引节点分裂为至少两个索引节点,将读取的已存储数据和接收到的待存储数据作为待存储数据,执行根据根节点及其管理的索引节点对待存储数据进行存储管理的步骤;
具体可以再次执行上述的S402至S405的步骤。即在该目标索引节点已经被写满时,需要对该目标节点执行分裂操作,以在目标索引节点的基础上,得到两个新的索引节点,并将原目标索引节点已存储的数据和接收到的待存储数据一同作为新的待存储数据,并对每一条待存储数据执行哈希处理、根据哈希值确定目标索引节点以及存储地址、最后在存储地址中存储每一条待存储数据并在对应的目标索引节点中记录数据描述信息。
S408:读取所述根节点管理的所有索引节点关联的存储域中的已存储数据,建立一级根节点、一级根节点管理的根节点以及根节点管理的索引节点;
S409:将读取的已存储数据和接收到的待存储数据作为待存储数据,根据一级根节点、根节点以及索引节点对待存储数据进行存储管理。
所述一级根节点中包括其所管理的各个根节点的起始地址和标识范围信息,而根节点中则包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息。
所述S409即重新对每一条待存储数据执行哈希处理得到哈希值,然后根据一级根节点标识范围信息确定目标根节点,然后在目标根节点中根据哈希值确定目标索引节点,最后确定到该目标索引节点对应的存储槽位存储相应哈希值的待存储数据,并根据存储槽位确定该条数据的偏移地址,确定哈希查找信息记录到该目标索引节点中。
请参见图9,为根节点扩充后的存储管理形式示意图,其具体是在图7的基础上进行根节点扩充的后的存储管理形式。
通过上述实施例的描述可知,本发明具有以下优点:
本发明采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。并且在存储过程中,能够根据根节点以及索引节点已管理的存储数据的情况,自动进行索引节点的分裂增加或者根节点增加,满足了存储自动化的需求。
下面对本发明实施例的数据的存储管理装置进行详细说明。
请参见图10,是本发明实施例的一种数据的存储管理装置的结构组成示意图;本发明实施例所述的装置可应用于如基于容器集合类型数据存储的系统等存储系统的服务器中,具体的,本实施例的所述装置包括:
建立模块1,用于建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息;
管理模块2,用于根据根节点及其管理的索引节点对待存储数据进行存储管理;所述管理模块2具体包括:
计算单元21,用于基于根节点及其管理的索引节点确定待存储数据的哈希值;
确定单元22,用于根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;
存储管理单元23,用于在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
对于需要存储的数据,可以通过所述建立模块1创建一个包括根节点和索引节点的文件,并创建用于存储数据的存储域,每个存储域可以包括预定数量的存储槽位。所述根节点及索引节点所管理的存储数据的条数对应于存储域中存储槽位的数量。所述存储域的起始地址和标识范围信息在创建存储域时获取,其中的标识范围信息为相应存储域中存储的数据的序列标识。创建的根节点、索引节点以及存储域可参考图2所示的结构。
存储管理单元23记录的数据描述信息可以为哈希查找信息,即包括图2中所示的关键字长度key len,存储数据的值长度value len,存储数据的哈希冲突链表偏移首地址hash next等信息。以便于后续可能进行的对已存储数据的查找、重写等操作。
通过上述实施例的描述可知,本发明具有以下优点:
本发明采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。
再请参见图11,是本发明实施例的另一种数据的存储管理装置的结构组成示意图。本发明实施例的所述装置包括上述实施例中的建立模块1和管理模块2,进一步的,在本发明实施例中,所述装置还可以包括以下单元以及模块。
具体的,所述确定单元22具体包括:
节点确定子单元,用于根据哈希值和所述根节点中包括的各个索引节点关联的存储域信息中存储域的标识范围信息,确定目标索引节点;
地址确定子单元,用于根据为所述目标索引节点预设的数据管理数阈值,确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
所述存储管理单元23具体可以包括:
存储子单元,用于在确定的存储地址下存储所述待存储数据;
获取子单元,用于根据确定的存储地址在所述目标索引节点关联的存储域中的位置和根节点中所述目标索引节点的存储域信息包括的存储域起始地址,获取所述待存储数据的数据偏移地址;
记录子单元,用于将所述数据偏移地址和所述待存储数据的哈希查找信息作为所述待存储数据的数据描述信息记录到所述目标索引节点。
进一步的,所述地址确定子单元,具体用于根据为所述目标索引节点预设的数据管理数阈值,判断目标索引节点当前所管理的存储数据的数量是否达到所述预设的数据管理数阈值,并在判断为否时,确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
所述的数据管理数阈值为用户预先设置的,其为所有的索引节点的数据管理的数量,例如上述图2对应的索引表中数据管理数阈值为20。在没有达到数据管理数阈值时,表明该目标索引节点还可以管理新的存储数据,而如果达到数据管理数阈值,表明该目标索引节点已经被写满时,需要对索引节点或者根节点进行扩充处理。
因此,进一步可选的,本发明实施例的所述装置还包括:
第一读取处理模块3,用于在判断结果为达到所述预设的数据管理数阈值时,读取所述目标索引节点关联的存储域中的已存储数据;
第一分裂模块4,用于将所述目标索引节点分裂为至少两个索引节点,将读取的已存储数据和接收到的待存储数据作为待存储数据,并通知管理模块2根据根节点及其管理的索引节点对待存储数据进行存储管理。
通过上述的第一读取处理模块3和第一分类模块4完成对该目标节点的分裂操作,然后通过管理模块2进行存储管理。即在目标索引节点的基础上,得到两个新的索引节点,并将原目标索引节点已存储的数据和接收到的待存储数据一同作为新的待存储数据,并对每一条待存储数据执行哈希处理、根据哈希值确定目标索引节点以及存储地址、最后在存储地址中存储每一条待存储数据并在对应的目标索引节点中记录数据描述信息。
也可以采用下述方式通过增加根节点的方式进行扩充。可选的,本发明实施例的所述装置还可以包括:
判断模块5,用于在判断结果为达到所述预设的数据管理数阈值时,进一步判断所述根节点当前管理的存储数据是否达到为所述根节点预设的条数阈值;
第二读取模块6,用于在所述判断模块的判断结果为否时,读取所述目标索引节点关联的存储域中的已存储数据;
第二分裂模块7,用于将所述目标索引节点分裂为至少两个索引节点,将读取的已存储数据和接收到的待存储数据作为待存储数据,并通知管理模块2根据根节点及其管理的索引节点对待存储数据进行存储管理;
第三读取模块8,用于在所述判断模块5的判断结果为是时,读取所述根节点管理的所有索引节点关联的存储域中的已存储数据;
所述建立模块1,还用于建立一级根节点、一级根节点管理的根节点以及根节点管理的索引节点;
所述管理模块2,还用于将读取的已存储数据和接收到的待存储数据作为待存储数据,根据一级根节点、根节点以及索引节点对待存储数据进行存储管理。
即在目标索引节点写满时,需要先判断根节点是否写满,如果已存储的数据量已经达到根节点的管理数量阈值,则需要增加新的根节点,重新存储所有的已存储数据,而如果没有达到根节点的管理数量阈值,则可以通过分裂目标索引节点的方式,存储新的待存储的数据。
需要说明的是,本实施例的所述装置可以同时包括上述的第一读取处理模块3、第一分裂模块4,以及判断模块5、第二读取模块6、第二分裂模块7以及第三读取模块8,以便于能够实现根据用户的配置策略,进行仅判断目标索引节点是否写满以进行存储管理,或者进行目标索引节点和根节点同时判断以进行存储管理的功能。
进一步具体的,再请参见图12,是本发明实施例的再一种数据的存储管理装置的结构组成示意图,本发明实施例的所述装置包括上述的建立模块1和管理模块2,进一步的,在本发明实施例中还可以包括:
检测模块9,用于检测所述根节点管理的所有索引节点对应的存储域的空闲空间,得到空闲空间总量;
回收模块10,用于在空闲空间总量满足预设的回收条件时,执行回收操作回收空闲空间;
重写判断模块11,用于在回收操作执行结束后,根据回收的空间量判断是否进行重写操作;
重写模块12,用于在所述重写判断模块11的判断结果为是时,根据当前根节点及其管理的索引节点记录的存储数据的数据描述信息,在新的存储空间中存储当前根节点及其管理的索引节点记录的存储数据。
所述回收模块10判断是否满足回收条件具体可以为:判断空闲空间总量占整个存储域的空间总量的比例是否超过预设的阈值例如30%,如果超过,则需要回收这些空闲空间。可以根据预设的检测间隔时间,周期触发执行所述检测模块9进行存储空间的检测。
在回收结束后,所述重写判断模块11可以根据已回收的空间量占检测到的总的空闲空间总量的比例例如未达到预设的阈值70%时,表明不可回收的碎片比例较大,需要执行数据重写操作,在回收结束后,回收模块10可以发送命令通知所述重写判断模块11。
所述重写模块12读出根节点所管理的所有索引节点关联的存储域中已存储数据,并根据当前根节点及其管理的索引节点记录的存储数据的数据描述信息,在新的存储区域存储读取的数据。
进一步的,本发明实施例的所述装置还可以包括图11对应的装置实施例中的第一读取处理模块3、第一分类模块4,以及判断模块5、第二读取模块6、第二分类模块7以及第三读取模块8。
通过上述实施例的描述可知,本发明具有以下优点:
本发明采用根节点及其管理的索引节点并结合哈希处理的方式对数据进行存储管理,可较为简单地实现对已存储数据的存储管理,方便后续的查询操作。并且在存储过程中,能够根据根节点和索引节点已管理的存储数据的情况,自动进行根节点或者索引节点的增加操作,满足了存储自动化的需求。还可以自动根据存储域的空闲空间情况,执行相应的回收策略,进一步的节约了存储资源,降低了存储系统的存储成本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (14)
1.一种数据的存储管理方法,其特征在于,包括:
建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息;
基于根节点及其管理的索引节点确定待存储数据的哈希值;
根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;
在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
2.如权利要求1所述的方法,其特征在于,所述根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址,包括:
根据哈希值和所述根节点中包括的各个索引节点关联的存储域信息中存储域的标识范围信息,确定目标索引节点;
根据为所述目标索引节点预设的数据管理数阈值,确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
3.如权利要求1所述的方法,其特征在于,所述在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中,包括:
在确定的存储地址下存储所述待存储数据;
根据确定的存储地址在所述目标索引节点关联的存储域中的位置和根节点中所述目标索引节点的存储域信息包括的存储域起始地址,获取所述待存储数据的数据偏移地址;
将所述数据偏移地址和所述待存储数据的哈希查找信息作为所述待存储数据的数据描述信息记录到所述目标索引节点。
4.如权利要求2所述的方法,其特征在于,所述根据为所述目标索引节点预设的数据管理数阈值,确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址,包括:
根据为所述目标索引节点预设的数据管理数阈值,判断目标索引节点当前所管理的存储数据的数量是否达到所述预设的数据管理数阈值;
在判断结果为否时,确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
5.如权利要求4所述的方法,其特征在于,还包括:
在判断结果为达到所述预设的数据管理数阈值时,读取所述目标索引节点关联的存储域中的已存储数据;
将所述目标索引节点分裂为至少两个索引节点,将读取的已存储数据和接收到的待存储数据作为待存储数据,执行根据根节点及其管理的索引节点对待存储数据进行存储管理的步骤。
6.如权利要求4所述的方法,其特征在于,还包括:
在判断结果为达到所述预设的数据管理数阈值时,进一步判断所述根节点当前管理的存储数据是否达到为所述根节点预设的条数阈值;
若否,读取所述目标索引节点关联的存储域中的已存储数据,将所述目标索引节点分裂为至少两个索引节点,将读取的已存储数据和接收到的待存储数据作为待存储数据,执行根据根节点及其管理的索引节点对待存储数据进行存储管理的步骤;
若是,读取所述根节点管理的所有索引节点关联的存储域中的已存储数据,建立一级根节点、一级根节点管理的根节点以及根节点管理的索引节点;
将读取的已存储数据和接收到的待存储数据作为待存储数据,根据一级根节点、根节点以及索引节点对待存储数据进行存储管理。
7.如权利要求1-6任一项所述的方法,其特征在于,还包括:
检测所述根节点管理的所有索引节点对应的存储域的空闲空间,得到空闲空间总量;
若空闲空间总量满足预设的回收条件,执行回收操作回收空闲空间;
在回收操作执行结束后,根据回收的空间量判断是否进行重写操作;
若是,则根据当前根节点及其管理的索引节点记录的存储数据的数据描述信息,在新的存储空间中存储当前根节点及其管理的索引节点记录的存储数据。
8.一种数据的存储管理装置,其特征在于,包括:
建立模块,用于建立根节点及其管理的索引节点,所述根节点中包括各个索引节点关联的存储域信息,所述存储域信息包括存储域的起始地址和标识范围信息;
管理模块,用于根据根节点及其管理的索引节点对待存储数据进行存储管理;所述管理模块具体包括:
计算单元,用于基于根节点及其管理的索引节点确定待存储数据的哈希值;
确定单元,用于根据哈希值和根节点包括的各个索引节点关联的存储域信息中存储域的起始地址和标识范围信息,确定目标索引节点以及待存储数据的存储地址;
存储管理单元,用于在确定的存储地址下存储所述待存储数据,并将所述待存储数据的数据描述信息记录到所述目标索引节点中。
9.如权利要求8所述的装置,其特征在于,所述确定单元包括:
节点确定子单元,用于根据哈希值和所述根节点中包括的各个索引节点关联的存储域信息中存储域的标识范围信息,确定目标索引节点;
地址确定子单元,用于根据为所述目标索引节点预设的数据管理数阈值,确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
10.如权利要求8所述的装置,其特征在于,所述存储管理单元包括:
存储子单元,用于在确定的存储地址下存储所述待存储数据;
获取子单元,用于根据确定的存储地址在所述目标索引节点关联的存储域中的位置和根节点中所述目标索引节点的存储域信息包括的存储域起始地址,获取所述待存储数据的数据偏移地址;
记录子单元,用于将所述数据偏移地址和所述待存储数据的哈希查找信息作为所述待存储数据的数据描述信息记录到所述目标索引节点。
11.如权利要求9所述的装置,其特征在于,
所述地址确定子单元,用于根据为所述目标索引节点预设的数据管理数阈值,判断目标索引节点当前所管理的存储数据的数量是否达到所述预设的数据管理数阈值,并在判断为否时,确定所述待存储数据在所述目标索引节点关联的存储域中的位置作为存储地址。
12.如权利要求11所述的装置,其特征在于,还包括:
第一读取处理模块,用于在判断结果为达到所述预设的数据管理数阈值时,读取所述目标索引节点关联的存储域中的已存储数据;
第一分裂模块,用于将所述目标索引节点分裂为至少两个索引节点,将读取的已存储数据和接收到的待存储数据作为待存储数据,并通知管理模块根据根节点及其管理的索引节点对待存储数据进行存储管理。
13.如权利要求11所述的装置,其特征在于,还包括:
判断模块,用于在判断结果为达到所述预设的数据管理数阈值时,进一步判断所述根节点当前管理的存储数据是否达到为所述根节点预设的条数阈值;
第二读取模块,用于在所述判断模块的判断结果为否时,读取所述目标索引节点关联的存储域中的已存储数据;
第二分裂模块,用于将所述目标索引节点分裂为至少两个索引节点,将读取的已存储数据和接收到的待存储数据作为待存储数据,并通知管理模块根据根节点及其管理的索引节点对待存储数据进行存储管理;
第三读取模块,用于在所述判断模块的判断结果为是时,读取所述根节点管理的所有索引节点关联的存储域中的已存储数据;
所述建立模块,还用于建立一级根节点、一级根节点管理的根节点以及根节点管理的索引节点;
所述管理模块,还用于将读取的已存储数据和接收到的待存储数据作为待存储数据,根据一级根节点、根节点以及索引节点对待存储数据进行存储管理。
14.如权利要求8-13任一项所述的装置,其特征在于,还包括:
检测模块,用于检测所述根节点管理的所有索引节点对应的存储域的空闲空间,得到空闲空间总量;
回收模块,用于在空闲空间总量满足预设的回收条件时,执行回收操作回收空闲空间;
重写判断模块,用于在回收操作执行结束后,根据回收的空间量判断是否进行重写操作;
重写模块,用于在所述重写判断模块的判断结果为是时,根据当前根节点及其管理的索引节点记录的存储数据的数据描述信息,在新的存储空间中存储当前根节点及其管理的索引节点记录的存储数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310060460.9A CN104008111B (zh) | 2013-02-27 | 2013-02-27 | 一种数据的存储管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310060460.9A CN104008111B (zh) | 2013-02-27 | 2013-02-27 | 一种数据的存储管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104008111A true CN104008111A (zh) | 2014-08-27 |
CN104008111B CN104008111B (zh) | 2019-02-15 |
Family
ID=51368770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310060460.9A Active CN104008111B (zh) | 2013-02-27 | 2013-02-27 | 一种数据的存储管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104008111B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426408A (zh) * | 2015-11-02 | 2016-03-23 | 北京锐安科技有限公司 | 一种多索引的数据处理方法及装置 |
CN106708443A (zh) * | 2017-01-03 | 2017-05-24 | 北京百度网讯科技有限公司 | 数据读写方法及装置 |
CN106874459A (zh) * | 2017-02-14 | 2017-06-20 | 北京奇虎科技有限公司 | 流式数据存储方法及装置 |
CN107102918A (zh) * | 2017-05-26 | 2017-08-29 | 郑州云海信息技术有限公司 | 一种数据处理方法和装置 |
CN108810041A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种分布式缓存系统的数据写入及扩容方法、装置 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN111046129A (zh) * | 2019-05-13 | 2020-04-21 | 国家计算机网络与信息安全管理中心 | 基于文本内容特征的公众号信息存储方法及检索系统 |
CN111143284A (zh) * | 2018-11-02 | 2020-05-12 | 浙江宇视科技有限公司 | 文件系统动态索引方法及装置 |
CN111159438A (zh) * | 2018-11-08 | 2020-05-15 | 杭州海康威视数字技术股份有限公司 | 一种数据的存储和检索方法、电子设备及存储介质 |
CN111241369A (zh) * | 2020-01-07 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置以及数据查询方法、装置 |
CN112817980A (zh) * | 2021-02-05 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 一种数据索引处理方法、装置、设备及存储介质 |
CN112883036A (zh) * | 2021-03-05 | 2021-06-01 | 鹏城实验室 | 索引创建方法、装置、存储服务器以及存储介质 |
CN114063931A (zh) * | 2021-11-26 | 2022-02-18 | 重庆科创职业学院 | 一种基于大数据的数据存储方法 |
CN114237490A (zh) * | 2021-11-02 | 2022-03-25 | 清华大学 | 基于Nauru-graph的大规模数据存储和读取方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960612B (zh) * | 2019-03-07 | 2021-01-05 | 腾讯科技(深圳)有限公司 | 一种确定数据存储占比的方法、装置及服务器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464901A (zh) * | 2009-01-16 | 2009-06-24 | 华中科技大学 | 一种对象存储设备中的对象查找方法 |
CN101673289A (zh) * | 2009-10-10 | 2010-03-17 | 成都市华为赛门铁克科技有限公司 | 分布式文件存储构架的构建方法和装置 |
CN102541968A (zh) * | 2010-12-31 | 2012-07-04 | 百度在线网络技术(北京)有限公司 | 一种索引方法 |
CN102567415A (zh) * | 2010-12-31 | 2012-07-11 | 百度在线网络技术(北京)有限公司 | 一种数据库的控制方法和装置 |
CN102609487A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种面向列存储的桶内索引哈希连接方法 |
-
2013
- 2013-02-27 CN CN201310060460.9A patent/CN104008111B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464901A (zh) * | 2009-01-16 | 2009-06-24 | 华中科技大学 | 一种对象存储设备中的对象查找方法 |
CN101673289A (zh) * | 2009-10-10 | 2010-03-17 | 成都市华为赛门铁克科技有限公司 | 分布式文件存储构架的构建方法和装置 |
CN102541968A (zh) * | 2010-12-31 | 2012-07-04 | 百度在线网络技术(北京)有限公司 | 一种索引方法 |
CN102567415A (zh) * | 2010-12-31 | 2012-07-11 | 百度在线网络技术(北京)有限公司 | 一种数据库的控制方法和装置 |
CN102609487A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种面向列存储的桶内索引哈希连接方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426408A (zh) * | 2015-11-02 | 2016-03-23 | 北京锐安科技有限公司 | 一种多索引的数据处理方法及装置 |
CN105426408B (zh) * | 2015-11-02 | 2019-03-08 | 北京锐安科技有限公司 | 一种多索引的数据处理方法及装置 |
CN106708443B (zh) * | 2017-01-03 | 2020-01-17 | 北京百度网讯科技有限公司 | 数据读写方法及装置 |
CN106708443A (zh) * | 2017-01-03 | 2017-05-24 | 北京百度网讯科技有限公司 | 数据读写方法及装置 |
CN106874459A (zh) * | 2017-02-14 | 2017-06-20 | 北京奇虎科技有限公司 | 流式数据存储方法及装置 |
CN106874459B (zh) * | 2017-02-14 | 2020-07-10 | 北京奇虎科技有限公司 | 流式数据存储方法及装置 |
CN108810041A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种分布式缓存系统的数据写入及扩容方法、装置 |
CN108810041B (zh) * | 2017-04-27 | 2021-03-05 | 华为技术有限公司 | 一种分布式缓存系统的数据写入及扩容方法、装置 |
CN107102918A (zh) * | 2017-05-26 | 2017-08-29 | 郑州云海信息技术有限公司 | 一种数据处理方法和装置 |
CN111143284A (zh) * | 2018-11-02 | 2020-05-12 | 浙江宇视科技有限公司 | 文件系统动态索引方法及装置 |
CN111143284B (zh) * | 2018-11-02 | 2023-06-20 | 浙江宇视科技有限公司 | 文件系统动态索引方法及装置 |
CN111159438A (zh) * | 2018-11-08 | 2020-05-15 | 杭州海康威视数字技术股份有限公司 | 一种数据的存储和检索方法、电子设备及存储介质 |
CN111046129A (zh) * | 2019-05-13 | 2020-04-21 | 国家计算机网络与信息安全管理中心 | 基于文本内容特征的公众号信息存储方法及检索系统 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN111241369A (zh) * | 2020-01-07 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置以及数据查询方法、装置 |
CN112817980A (zh) * | 2021-02-05 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 一种数据索引处理方法、装置、设备及存储介质 |
CN112883036A (zh) * | 2021-03-05 | 2021-06-01 | 鹏城实验室 | 索引创建方法、装置、存储服务器以及存储介质 |
CN114237490A (zh) * | 2021-11-02 | 2022-03-25 | 清华大学 | 基于Nauru-graph的大规模数据存储和读取方法及装置 |
CN114063931A (zh) * | 2021-11-26 | 2022-02-18 | 重庆科创职业学院 | 一种基于大数据的数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104008111B (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104008111A (zh) | 一种数据的存储管理方法及装置 | |
CN104750619B (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN103049390B (zh) | 应用元数据的数据处理方法及存储系统 | |
CN105868122A (zh) | 快闪存储设备的数据处理方法及装置 | |
CN103440205B (zh) | 一种机顶盒数据存储方法及装置 | |
CN104008061A (zh) | 内存回收方法及装置 | |
CN104115134A (zh) | 复合非易失性存储设备的数据迁移 | |
CN104156317A (zh) | 一种非易失性闪存的擦写管理方法及系统 | |
RU2014127817A (ru) | Система и способ управления и организации кэша веб-браузера | |
CN105677578A (zh) | 一种3d闪存的控制方法及控制系统 | |
CN103714013A (zh) | 一种文件系统的存储空间的配置方法及装置 | |
CN104238962A (zh) | 向缓存中写入数据的方法及装置 | |
CN103500191A (zh) | 一种流表配置、查询、表项删除方法及装置 | |
CN106445832A (zh) | 闪存存储系统的地址映射方法及装置 | |
CN105138282A (zh) | 一种存储空间回收的方法及存储系统 | |
CN103488523A (zh) | 一种页的访问方法和页的访问装置、服务器 | |
CN103577553A (zh) | 数据存储方法 | |
CN102253985B (zh) | 一种文件系统数据的管理方法及系统 | |
CN105404691A (zh) | 一种文件存储的方法及装置 | |
CN103605484A (zh) | 一种数据存储的方法和存储服务器 | |
CN102542041A (zh) | 栅格数据处理方法及系统 | |
US20120137107A1 (en) | Method of decaying hot data | |
CN104134027A (zh) | 一种顺序流识别的方法以及装置 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
CN102209016A (zh) | 一种数据处理方法、装置和数据处理系统 |
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 |