一种数据管理方法及装置制造方法及图纸

技术编号:22260930 阅读:26 留言:0更新日期:2019-10-10 14:04
本发明专利技术公开了一种数据管理方法及装置。所公开的方法包括:基于表红黑树来管理表集合;基于数据红黑树来管理每个表中的数据集合,其中,表集合中的表支持对表集合中的表和子表的嵌套引用,表红黑树和数据红黑树共用同一种节点管理数据结构。所公开的方法使用红黑树结构来实现数据表的相关管理操作,相对于现有redis存储系统中的hash数据表而言,使得数据表的查找、删除、插入等操作的复杂度趋于稳定。

A Data Management Method and Device

【技术实现步骤摘要】
一种数据管理方法及装置
本专利技术涉及计算机系统,尤其涉及一种数据管理方法及装置。
技术介绍
计算机系统的一个重要功能就是用来管理各种数据。如何高效地管理各种数据是计算机领域中的一项关键技术。相互关联的数据通常都以数据表的形式被存储在诸如数据库等的存储系统中,为了加快处理速度,某些重要的数据表还会被映射到内存中,并且可以在多个进程之间进行共享。例如,现有的redis存储系统,采用了hash表的方式来实现数据表。然而,使用关键字的hash函数值作为索引值,会产生hash碰撞的问题(即,导致不同的关键字映射到同一个hash表项),此时,对数据表进行操作的复杂度增加至对包含产生碰撞的所有元素的链表进行操作的复杂度。另外,在redis存储系统中利用hash表来实现数据表的嵌套引用,操作非常复杂(需要按照嵌套引用关系,依次地逐句调用redis的hmset命令来进行操作)。而且,不同嵌套层级在调用hmset命令实现时,为了避免关键字的冲突,需要在本级的关键字中按照嵌套的顺序关系依次顺序包含其上各级的各个关键字,这就造成了关键字会随着嵌套层级的增加而不断增长、从而占用更多存储空间的问题。因此,为了解决上述问题,需要提出新的技术方案。
技术实现思路
本专利技术旨在解决上面描述的问题。根据本专利技术的一种数据管理方法,包括:基于表红黑树来管理表集合;基于数据红黑树来管理每个表中的数据集合,其中,表集合中的表支持对表集合中的表和子表的嵌套引用,表红黑树和数据红黑树共用同一种节点管理数据结构。根据本专利技术的数据管理方法,还包括:将表映射到内存空间中。根据本专利技术的数据管理方法,还包括:在不同进程之间共享映射到内存空间中的表。根据本专利技术的数据管理方法,其内存空间是slab内存空间。根据本专利技术的数据管理方法,还包括:分别统计表集合中的每个表及其子表被引用的总次数,释放被引用的总次数为0的表所占用的内存空间。根据本专利技术的数据管理方法,其节点管理数据结构包括:用于存储待管理的红黑树节点的第一变量;用于存储待管理的红黑树节点类型的第二变量;用于存储待管理的红黑树节点变量中的关键字的长度的第三变量;用于存储与待管理的红黑树节点变量中的关键字对应的值的长度的第四变量;用于存储公用变量的地址空间的起始地址的第五变量;其中,第二变量用于标识待管理的红黑树节点是表节点、数据原型节点还是数据引用节点,当待管理的红黑树节点为表节点时,公用变量用于存储表节点实例中的关键字和表所对应的数据红黑树的根节点的地址,当待管理的红黑树节点为数据原型节点时,公用变量用于存储数据原型节点实例中的关键字和值,当待管理的红黑树节点为数据引用节点时,公用变量用于存储数据引用节点实例中的关键字和所引用的表所对应的数据红黑树根节点或所引用的子表所对应的数据红黑树节点的地址。根据本专利技术的一种数据管理装置,包括:表集合管理模块,用于基于表红黑树来管理表集合;数据集合管理模块,用于基于数据红黑树来管理每个表中的数据集合,其中,表集合中的表支持对表集合中的表和子表的嵌套引用,表红黑树和数据红黑树共用同一种节点管理数据结构。根据本专利技术的数据管理装置,还包括:内存映射模块,用于将表映射到内存空间中。根据本专利技术的数据管理装置,还包括:内存共享模块,用于在不同进程之间共享映射到内存空间中的表。根据本专利技术的数据管理装置,还包括:内存释放模块,用于分别统计表集合中的每个表及其子表被引用的总次数,释放被引用的总次数为0的表所占用的内存空间。根据本专利技术的上述技术方案,使用红黑树结构来实现数据表的相关管理操作,相对于现有redis存储系统中的hash数据表而言,使得数据表的查找、删除、插入等操作的复杂度趋于稳定(始终维持在log2N的数量级,N为节点数)。附图说明并入到说明书中并且构成说明书的一部分的附图示出了本专利技术的实施例,并且与相关的文字描述一起用于解释本专利技术的原理。在这些附图中,类似的附图标记用于表示类似的要素。下面描述中的附图是本专利技术的一些实施例,而不是全部实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他的附图。图1示例性地示出了根据本专利技术的数据管理方法的示意流程图。图2示例性地示出了根据本专利技术的表集合及表中的数据集合的示意图。图3示例性地示出了根据本专利技术的数据管理装置的示意框图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。图1示例性地示出了根据本专利技术的数据管理方法的示意流程图。如图1所示,根据本专利技术的数据管理方法,包括:步骤S102:基于表红黑树来管理表集合;步骤S104:基于数据红黑树来管理每个表中的数据集合,其中,表集合中的表支持对表集合中的表和子表的嵌套引用,表红黑树和数据红黑树共用同一种节点管理数据结构。图2示例性地示出了根据本专利技术的表集合及表中的数据集合的示意图。如图2所示,share_tablepool即为上述基于表红黑树来管理的表集合,其中包括roottable、table1至tablen。如图2中的点虚线所示,每个表都包含(或对应)一个数据集合(例如,图2中的table1、table2、tablen所对应的二叉树集合,可以用红黑树来管理该二叉树集合)。可选地,根据本专利技术的数据管理方法,还包括:步骤S106:将表映射到内存空间中。例如,可以将图2所示的share_tablepool(即,表集合)中的表映射到内存空间中。可选地,根据本专利技术的数据管理方法,还包括:步骤S108:在不同进程之间共享映射到内存空间中的表。例如,可以将图2所示的share_tablepool中的表映射到共享内存空间中。可选地,内存空间是slab内存空间。例如,可以将图2所示的share_tablepool中的表映射到slab内存空间中。可选地,可以定义如下数据结构来关联slab内存空间和share_tablepool。typedefstruct{slab_pool_t*slab_pool;share_table_troot_table;}share_table_pool_t;其中,slab_pool是用于标识,指向为root_table根节点所代表的表集合(即,图2所示的share_tablepool)分配内存空间的slab内存空间的地址的指针变量;root_table用于标识share_tablepool表集合的根节点,所有表都应该被加入到该表集合中。可选地,根据本专利技术的数据管理方法,还包括:步骤S110:分别统计表集合中的每个表及其子表被引用的总次数,释放被引用的总次数为0的表所占用的内存空间。例如,上文所使用的数据结构share_table_t(即,表节点数据结构)的定义如下:typedefstruct{share_table_pool_t*share_table_pool;uint32_tref_count;r本文档来自技高网...

【技术保护点】
1.一种数据管理方法,其特征在于,包括:基于表红黑树来管理表集合;基于数据红黑树来管理每个表中的数据集合,其中,所述表集合中的表支持对所述表集合中的表和子表的嵌套引用,所述表红黑树和所述数据红黑树共用同一种节点管理数据结构。

【技术特征摘要】
1.一种数据管理方法,其特征在于,包括:基于表红黑树来管理表集合;基于数据红黑树来管理每个表中的数据集合,其中,所述表集合中的表支持对所述表集合中的表和子表的嵌套引用,所述表红黑树和所述数据红黑树共用同一种节点管理数据结构。2.如权利要求1所述的数据管理方法,其特征在于,还包括:将表映射到内存空间中。3.如权利要求2所述的数据管理方法,其特征在于,还包括:在不同进程之间共享映射到内存空间中的表。4.如权利要求2或3所述的数据管理方法,其特征在于,所述内存空间是slab内存空间。5.如权利要求2或3所述的数据管理方法,其特征在于,还包括:分别统计所述表集合中的每个表及其子表被引用的总次数,释放被引用的总次数为0的表所占用的内存空间。6.如权利要求1至3中任一项所述的数据管理方法,其特征在于,所述节点管理数据结构包括:用于存储待管理的红黑树节点的第一变量;用于存储待管理的红黑树节点类型的第二变量;用于存储待管理的红黑树节点变量中的关键字的长度的第三变量;用于存储与待管理的红黑树节点变量中的关键字对应的值的长度的第四变量;用于存储公用变量的地址空间的起始地址的第五变量;其中,所述第二变量用于标识待管理的红黑树节点是表节点、数据原...

【专利技术属性】
技术研发人员:陈闯李树龙张炎泼
申请(专利权)人:贵州白山云科技股份有限公司
类型:发明
国别省市:贵州,52

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1