一种数据处理方法及装置与流程

文档序号:16855556发布日期:2019-02-12 23:14阅读:172来源:国知局
一种数据处理方法及装置与流程

本发明涉及网络通信技术领域,尤其涉及一种数据处理方法及装置。



背景技术:

mvbt(multi-versionb+tree,多版本b+树)对传统的b+tree进行了改造,对每一个key(键)增加了生存周期(lifespan),记做[a,b)(b≥a)。其中,a为插入该key时产生的版本号,b为删除该key时产生的版本号;当b为+∞时,表明该key未被删除;lifespan是[a,+∞)的key可以称为活key(livekey),其余key称为死key(deadkey)。

然而实践发现,传统的mvbt实现方案中,页的分裂和合并等操作是以条目(一个条目包括一个key以及对应的value和生存周期)的数量为依据的,其要求页中条目的长度为固定长度,即各条目的长度相同,灵活性较差;此外,由于页中条目的长度为固定长度,因此,所设置的长度需要以支持实际长度最大的key和value为原则,实际长度较小的key和value也需要按照该固定长度存储,导致了资源浪费,以及数据处理性能下降。



技术实现要素:

本发明提供一种数据处理方法及装置,以解决现有mvbt实现方案只支持定长的key和value的问题。

根据本发明的第一方面,提供一种数据处理方法,包括:

建立目标多版本b+树mvbt数据存储结构;其中,所述目标mvbt数据存储结构包括第一类型页、第二类型页和第三类型页,所述第一类型页用于存储键key位置、与所述key对应的值value位置以及所述key的生存周期;所述第二类型页用于存储key,所述第三类型页用于存储value;所述第一类型页为树形结构页,且所述第一类型页中一个第一类型条目包括一个key位置字段、一个value位置字段以及一个生存周期字段;所述第一类型页中各第一类型条目长度固定且相同;

基于所述目标mvbt数据存储结构对接收到的数据处理请求进行响应。

结合第一方面,在第一种可能的实现方式中,所述目标mvbt数据存储结构还包括第四类型页,所述第四类型页用于存储第一类型页中第一类型条目的属性信息,所述属性信息包括第一类型条目的数量,以及各第一类型条目在所述第一类型页中的位置偏移量;

每个位置偏移量在所述第四类型页中按序存储,且存储的顺序与每个第一类型条目包括的key位置字段对应的key的排序结果一致。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述基于所述目标mvbt数据存储结构对接收到的数据处理请求进行响应,包括:

当所述数据处理请求为针对第一key和第一value的插入请求时,将所述第一key写入所述第二类型页,并将所述第一value写入所述第三类型页;

在所述第一类型页中增加对应所述第一key和第一value的第一类型条目,该第一类型条目中的key位置字段记录有所述第一key所写入的第二类型页的索引,以及所述第一key在该第二类型页中的位置偏移量,该第一类型条目中的value位置字段记录有所述第一value所写入的第三类型页的索引,以及所述第一value在该第三类型页中的位置偏移量,该第一类型条目中的生存周期字段记录有所述第一key的生存周期;

更新所述第四类型页中存储的第一类型条目的数量,并按照所述预设key排序规则,将所述第一key对应的第一类型条目在所述第一类型页中的位置偏移量插入所述第一类型条目的属性信息中。

结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述基于所述目标mvbt数据存储结构对接收到的数据处理请求进行响应,包括:

当所述数据处理请求为针对第二key的删除请求时,查询该第二key对应的第一类型条目;

将该第一类型条目中的生存周期中的结束版本号更新为该删除请求对应的版本号。

结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,所述基于所述目标mvbt数据存储结构对接收到的数据处理请求进行响应,包括:

当所述数据处理请求为针对第三key和对所述第三key对应的第三value的读取请求时,按照树形结构中根结点页至叶子结点页的顺序,利用二分法规则,在所述第四类型页中,获取第一类型页中第一类型条目的位置偏移量;

根据获取的第一类型条目的位置偏移量,确定该第一类型条目的偏移量对应的第一类型条目中包括的key位置对应的key;

当确定出的key与所述第三key匹配时读取该key,以及该key对应的value。

结合第一方面的第一种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:通过追加写模式,将所述第一类型条目的属性信息写入所述第四类型页中;

所述第一类型页中还存储有所述第一类型页对应的第四类型页中最晚写入的第一类型条目的属性信息的第一索引;其中,所述第一类型页中第一索引的长度固定。

结合第一方面的第一种可能的实现方式,在第六种可能的实现方式中,所述第一类型页中还存储有指向除第一类型页之外的其它类型页的索引;

所述其它类型页中还存储有指向下一个同类型页的索引;

其中,所述指向除第一类型页之外的其它类型页的索引的长度固定;

所述建立目标mvbt数据存储结构之后,所述方法还包括:

根据所述指向除第一类型页之外的其它类型页的索引,确定所述第一类型页对应其它类型页;其中,所述其它类型页包括第二类型页、第三类型页或第四类型页;

对于任一类型的其它类型页,根据所述指向下一个同类型页的索引确定全部同类型的其它类型页;

对所述第一类型页、所述第一类型页对应的全部其它类型页进行资源回收。

根据本发明的第二方面,提供一种数据处理装置,包括:

建立单元,用于建立目标多版本b+树mvbt数据存储结构;其中,所述目标mvbt数据存储结构包括第一类型页、第二类型页和第三类型页,所述第一类型页用于存储键key位置、与所述key对应的值value位置以及所述key的生存周期;所述第二类型页用于存储key,所述第三类型页用于存储value;所述第一类型页为树形结构页,且所述第一类型页中一个第一类型条目包括一个key位置字段、一个value位置字段以及一个生存周期字段;所述第一类型页中各第一类型条目长度固定且相同;

接收单元,用于接收数据处理请求;

处理单元,用于基于所述目标mvbt数据存储结构对所述接收单元接收到的数据处理请求进行响应。

结合第二方面,在第一种可能的实现方式中,所述目标mvbt数据存储结构还包括第四类型页,所述第四类型页用于存储第一类型页中第一类型条目的属性信息,所述属性信息包括第一类型条目的数量,以及各第一类型条目在所述第一类型页中的位置偏移量;

每个位置偏移量在所述第四类型页中按序存储,且存储的顺序与每个第一类型条目包括的key位置字段对应的key的排序结果一致。

结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理单元,具体用于当所述数据处理请求为针对第一key和第一value的插入请求时,将所述第一key写入所述第二类型页,并将所述第一value写入所述第三类型页;

在所述第一类型页中增加对应所述第一key和第一value的第一类型条目,该第一类型条目中的key位置字段记录有所述第一key所写入的第二类型页的索引,以及所述第一key在该第二类型页中的位置偏移量,该第一类型条目中的value位置字段记录有所述第一value所写入的第三类型页的索引,以及所述第一value在该第三类型页中的位置偏移量,该第一类型条目中的生存周期字段记录有所述第一key的生存周期;

更新所述第四类型页中存储的第一类型条目的数量,并按照所述预设key排序规则,将所述第一key对应的第一类型条目在所述第一类型页中的位置偏移量插入所述第一类型条目的属性信息中。

结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述处理单元,具体用于当所述数据处理请求为针对第二key的删除请求时,查询该第二key对应的第一类型条目;

将该第一类型条目中的生存周期中的结束版本号更新为该删除请求对应的版本号。

结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述处理单元,具体用于当所述数据处理请求为针对第三key和对所述第三key对应的第三value的读取请求时,按照树形结构中根结点页至叶子结点页的顺序,利用二分法规则,在所述第四类型页中,获取第一类型页中第一类型条目的位置偏移量;

根据获取的第一类型条目的位置偏移量,确定该第一类型条目的偏移量对应的第一类型条目中包括的key位置对应的key;

当确定出的key与所述第三key匹配时读取该key,以及该key对应的value。

结合第二方面的第一种可能的实现方式,在第五种可能的实现方式中,所述处理单元,还用于通过追加写模式,将所述第一类型条目的属性信息写入所述第四类型页中;

所述第一类型页中还存储有所述第一类型页对应的第四类型页中最晚写入的第一类型条目的属性信息的第一索引;其中,所述第一类型页中第一索引的长度固定。

结合第二方面的第一种可能的实现方式,在第六种可能的实现方式中,所述第一类型页中还存储有指向除第一类型页之外的其它类型页的索引;

所述其它类型页中还存储有指向下一个同类型页的索引;

其中,所述指向除第一类型页之外的其它类型页的索引的长度固定;

所述装置还包括:

资源管理单元,用于根据所述指向除第一类型页之外的其它类型页的索引,确定所述第一类型页对应其它类型页;其中,所述其它类型页包括第二类型页、第三类型页或第四类型页;

对于任一类型的其它类型页,根据所述指向下一个同类型页的索引确定全部同类型的其它类型页;

对所述第一类型页、所述第一类型页对应的全部其它类型页进行资源回收。

应用本发明公开的技术方案,通过对传统mvbt实现方案中的数据存储结构进行修改,在修改后的mvbt数据存储结构中,树形结构的第一类型页不再存储具体的key数据和value数据,而是存储key位置、与key对应的value位置以及key生存周期,且该第一类型页中由相互对应的key位置、value位置以及生存周期三者构成的条目的长度固定,从而可以按照传统mvbt实现方案中页的合并和分裂等操作方式实现该第一类型页的合并和分裂等操作;此外,该修改后的mvbt数据存储结构中新增用于存储key的第二类型页和用于存储value的第三类型页,该第二类型页和第三类型页中存储的key和value不要求固定长度,提高了key和value存储的灵活性,减少了资源浪费,并提高了数据处理性能。

附图说明

图1是本发明实施例提供的一种数据处理方法的流程示意图;

图2是本发明实施例提供的一种目标mvbt数据存储结构的示意图;

图3a~图3c是本发明实施例提供的目标mvbt数据存储结构的示意图;

图4是本发明实施例提供的一种数据处理装置的结构示意图;

图5是本发明实施例提供的另一种数据处理装置的结构示意图;

图6是本发明实施例提供的一种数据处理装置的硬件结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。

请参见图1,为本发明实施例提供的一种数据处理方法的流程示意图,其中,该数据处理方法可以应用于支持key-value数据存储模式的网络设备(下文中简称为网络设备),如图1所示,该数据处理方法可以包括以下步骤:

步骤101、建立目标mvbt数据存储结构。

本发明实施例中,考虑到现有mvbt实现方案中key和value的长度需要是固定长度而导致的问题,可以对现有的mvbt的数据存储结构进行修改,使mvbt能够支持变长的key和value。

其中,该修改后的mvbt数据存储结构(本文中称为目标mvbt数据存储结构)中,树形结构的页(本文中称为第一类型页,也可以称为treenodepage(树结点页))用于存储key的位置信息(本文中称为key位置)、与该key对应的value的位置信息(本文中称为value位置)以及该key的生存周期,不再存储具体的key和value;此外,目标mvbt数据存储结构中新增用于存储key的页(datapageforkey,本文中称为第二类型页)和用于存储value的页(datapageforvalue,本文中称为第三类型页)。

其中,作为叶子结点的第一类型页,其中存储的value位置包括存储该value的第三类型页的索引(如该第三类型页的位置)以及该value在该第三类型页中的偏移量;作为非叶子结点的第一类型页,其中存储的value位置包括该value对应的key所在的下一层(按照根结点页-枝结点页-叶子结点页从上到下的顺序)第一类型页的索引以及该value位置在该第一类型页中的偏移量。

对于任一key,该key在第一类型页中的key位置包括存储该key的第二类型页的索引(如该第二类型页的位置)以及该key在第二类型页中的偏移量。

本发明实施例中,第一类型页中分别通过key位置字段、value位置字段以及生存周期字段存储key位置、value位置以及生存周期;其中,一个key位置字段及其对应的value字段和生存周期字段共同构成第一类型页中的一个条目(本文中称为第一类型条目)。

其中,第一类型页中各第一类型条目的长度固定且相同,即第一类型页中可以容纳的第一类型条目的数量固定,因此,该第一类型页的合并和分裂等操作的具体实现方式可以参照传统mvbt中页的合并和分裂等操作的实现方式。

第二类型页和第三类型页中存储的key和value的长度不再固定,而是可以包括实际应用中key和value所支持的任意长度。

步骤102、基于该目标mvbt数据存储结构对接收到的数据处理请求进行响应。

本发明实施例中,网络设备建立上述目标mvbt数据存储结构之后,可以基于该目标mvbt数据存储结构对接收到的数据处理请求进行响应。

其中,该数据处理请求可以包括但不限于:key-value插入请求、key删除请求以及key-value读取请求等。

可见,在图1所示的方法流程中,通过对传统mvbt实现方案中的数据存储结构进行修改,在修改后的mvbt数据存储结构中,树形结构的页(即第一类型页)不再存储具体的key数据和value数据,而是存储key位置、value位置以及生存周期,且该第一类型页中由相互对应的key位置、value位置以及生存周期三者构成的条目的长度固定,从而可以按照传统mvbt实现方案中页的合并和分裂等操作方式实现该第一类型页的合并和分裂等操作;此外,该修改后的mvbt数据存储结构中新增用于存储key的页(即第二类型页)和用于存储value的页(即第三类型页),该第二类型页和第三类型页中存储的key和value不要求固定长度,提高了key和value存储的灵活性,减少了资源浪费,并提高了数据处理性能。

进一步地,在本发明实施例中,考虑到第一类型页中各第一类型条目对应的key可能是乱序的,当需要对key进行查找时,需要遍历第一类型页中各第一类型条目,数据查找效率较差,数据处理性能较低。

因此,在本发明其中一个实施例中,为了提高数据处理性能,目标mvbt数据存储结构中还可以包括用于存储第一类型页中第一类型条目的属性信息的页(本文中称为第四类型页)。其中,一个第一类型页可以对应一个或多个第四类型页;第一类型条目的属性信息可以包括但不限于第一类型条目的数量,以及各第一类型条目在该第一类型页中的位置偏移量。在用于存储类型条目区域中,位置偏移量具体是指当前类型条目的存储地址与区域内首个存储地址之间的偏移程度。例如,区域内存在三个类型条目(条目1、条目2、条目3),分别存储在位置1、位置2、位置3。位置1为区域内首个存储地址。则条目1的位置偏移量为0,条目2的位置偏移量为1,条目3的位置偏移量为2。其中,每个位置偏移量在第四类型页中按序存储,且存储的顺序与每个第一类型条目包括的key位置字段对应的key的排序结果一致。

例如,按照对应的key从小到大的顺序对各第一类型条目的偏移量进行排序,其具体实现可以在下文中结合具体实例进行说明。

下面基于包括第一类型页、第二类型页、第三类型页以及第四类型页的目标mvbt数据存储结构,对各种不同类型的数据处理请求的处理流程进行说明。

在本发明其中一个实施例中,上述基于目标mvbt数据存储结构对接收到的数据处理请求进行响应,可以包括:

当数据处理请求为针对第一key和第一value的插入请求时,将第一key写入第二类型页,并将第一value写入第三类型页;

在第一类型页中增加对应第一key和第一value的第一类型条目,该第一类型条目中的key位置字段记录有第一key所写入的第二类型页的索引,以及第一key在该第二类型页中的位置偏移量,该第一类型条目中的value位置字段记录有第一value所写入的第三类型页的索引,以及第一value在该第三类型页中的位置偏移量,该第一类型条目中的生存周期字段记录有第一key的生存周期;

更新第一类型页对应的第四类型页中记录的第一类型条目数目,并按照预设key排序规则,将第一key对应的第一类型条目在第一类型页中的位置偏移量插入该第四类型页中记录的第一类型条目的属性信息中。

在该实施例中,第一key和第一value并不特指某一固定的key和value,而是可以指代需要插入的任一key及其对应的value。

在该实施例中,当需要将插入第一key和第一value时,网络设备可以分别将第一key和第二value写入第二类型页和第三类型页,并根据第一key所写入的第二类型页的索引以及第一key在该第二类型页中的偏移量确定第一key的key位置,根据第一value所写入的第三类型页的索引以及第一value在该第三类型页中的偏移量确定第一value的value位置。

网络设备确定了第一key的key位置和第一value的value位置之后,可以在第一类型页中增加记录该key位置和value位置的第一类型条目。其中,该第一类型条目的key位置字段记录该key位置,value位置字段记录该value位置,生存周期字段记录第一key的生存周期。

其中,第一key的生存周期的起始版本号为此次写事务(即第一key和第一value的插入对应的写事务)对应的版本号,结束版本号为﹢∞。

在该实施例中,网络设备在第一类型页中增加对应第一key和第一value的第一类型条目之后,还可以更新第一类型页对应的第四类型页中记录的第一类型条目的属性信息中包括的第一类型条目的数量(如第一类型条目的数量+1),并按照预设key排序规则,确定第一key和该第四类型页中已记录的各第一类型条目在第一类型页中的位置偏移量对应的key的排序结果,并根据排序结果将第一key对应的第一类型条目在第一类型页中的位置偏移量插入该第四类型页记录的第一类型条目的属性信息中,其具体实现可以在下文中结合实例进行说明。

在本发明另一个实施例中,上述基于目标mvbt数据存储结构对接收到的数据处理请求进行响应,可以包括:

当数据处理请求为针对第二key的删除请求时,查询该第二key对应的第一类型条目;

将该第一类型条目中的生存周期中的结束版本号更新为该删除请求对应的版本号。

在该实施例中,第二key并不特指某一固定的key,而是可以指代需要删除的任一key。

在该实施例中,当网络设备接收到针对第二key的删除请求时,网络设备可以在目标mvbt存储结构中查询该第二key对应的第一类型条目,其具体实现可以参见key读取处理流程中的相关实现。

网络设备查询到第二key对应的第一类型条目之后,可以将该第一类型条目中的生存周期中的结束版本号更新为该删除请求对应的版本号,即将该待删除的key标注为deadkey,其具体实现可以在下文中结合实例进行说明。

在本发明又一个实施例中,上述基于目标mvbt数据存储结构对接收到的数据处理请求进行响应,可以包括:

当数据处理请求为针对第三key和对第三key对应的第三value的读取请求时,按照树形结构中根结点页至叶子结点页的顺序,利用二分法规则,在第四类型页中,获取第一类型页中第一类型条目的位置偏移量;

根据获取的第一类型条目的位置偏移量,确定该第一类型条目的偏移量对应的第一类型条目中包括的key位置对应的key;

当确定出的key与第三key匹配时,读取该key以及该key对应的value。

在该实施例中,第三key和第三value并不特指某一固定的key和value,而是指代任一需要读取的key及其对应的value。

在该实施例中,对于树形结构的第一类型页,可以按照从根结点页到叶子结点页的顺序,进行数据查找。

相应地,当网络设备接收到针对第三key和第三key对应的第三value的读取请求时,可以按照从根结点页至叶子结点页的顺序,分别在各第一类型页对应的第四类型页中利用二分法选择第一类型条目的位置偏移量。

对于所选择的第一类型条目的位置偏移量,网络设备可以根据该第一类型条目的位置偏移量从对应的第一类型页中获取对应的第一类型条目,并根据该第一类型条目中的key位置信息获取对应的key,进而,将所获取到的key和第三key进行比较,以确定该key与第三key是否匹配。

需要说明的是,网络设备确定key是否匹配时,除了需要判断key的值是否相同之外,还需要比较key的生存周期,其具体实现可以参见传统mvbt实现方案中的相关实现,本发明实施例对此不做赘述。

在该实施例中,网络设备确定查询到的key与第三key不匹配时,网络设备可以继续按照上述方式(使用二分法)进行查询和比较,直至查询到与第三key匹配的key,或确定不存在与第三key匹配的key。

其中,当网络设备确定查询到的key与第三key匹配时,网络设备可以读取该key,并根据对应的value位置读取该key对应的value,并将所读取到的key和value返回给读取请求发起方设备。

当网络设备确定不存在与第三key匹配的key时,网络设备可以返回读取失败。

需要说明的是,在本发明实施例中,当第二类型页、第三类型页和/或第四类型页中的可用空间不足时,网络设备可以创建新的第二类型页、第三类型页和/或第四类型页,并将新的第二类型页、第三类型页和/或第四类型页与原第二类型页、第三类型页和/或第四类型页进行关联。

进一步地,在本发明实施例中,考虑到每次在第一类型页中新增第一类型条目时,均需要更新对应的第四类型页中的第一类型条目的属性信息。若每次更新第四类型页中的第一类型条目的属性信息均覆盖更新前的值,则更新过程中无法对第四类型页中的第一类型条目的属性信息进行访问,导致数据处理性能下降。

因此,在本发明其中一个实施例中,为了提高数据处理性能,可以通过追加写模式,将第一类型条目的属性信息写入第四类型页中,即每次更新第一类型条目的属性信息时,不再覆盖更新前的值,而是在更新前的值之后的空闲空间中以追加写的方式更新。

在该实施例中,当发生了第一类型条目的属性信息更新时,第四类型页中会存在多个第一类型条目的属性信息(包括更新前的第一类型条目的属性信息和更新后的第一类型条目的属性信息),因此,为了进一步提高数据处理性能,第一类型页中还可以存储有对应的第四类型页中最晚写入的第一类型条目的属性信息的索引(本文中称为第一索引),该第一索引指向对应的第四类型页中的最晚写入的第一类型条目的属性信息。

当需要进行key查询时,可以根据该第一索引确定第四类型页中最晚写入的第一类型条目的属性信息,并根据该第一类型条目的属性信息中包括的各第一类型条目在第一类型页中的位置偏移量进行key查询,其具体实现可以在下文中结合具体实例进行说明。

进一步地,在本发明其中一个实施例中,第一类型页中还可以存储有指向除第一类型页之外的其它类型页的索引;其中,其它类型页可以包括第二类型页、第三类型页或第四类型页;

其它类型页中还存储有指向下一个同类型页的索引。

在该实施例中,第一类型页中可以存储有指向第二类型页的索引(本文中称为第二索引)、第三类型页的索引(本文中称为第三索引)、以及第四类型页的索引(本文中称为第四索引);其中,第一类型页中的第二索引、第三索引以及第四索引的长度固定。

第二类型页中还存储有下一个第二类型页的索引(本文中称为第五索引);

第三类型页中还存储有下一个第三类型页的索引(本文中称为第六索引);

第四类型页中还存储有下一个第四类型页的索引(本文中称为第六索引)。

在该实施例中,基于上述第二索引、第三索引、第四索引、第五索引、第六索引以及第七索引,可以快速定位第一类型页中对应的各第二类型页、第三类型页和第四类型页。

需要说明的是,在本发明实施例中,对于任一第一类型页,第二索引指向的第二类型页可以为对应该第一类型页创建的第一个第二类型页(即该第一类型页中第一个第一类型条目中的key位置指向的第二类型页),或者,可以为对应该第一类型页创建的最新的第二类型页(在该情况下,当创建新的第二类型页时,需要更新该第一类型页中的第二索引)。

同理,第三索引指向的第三类型页和第四索引指向的第四类型页也可以包括对应第一类型页创建的第一个第三类型页和第四类型页,或者,最新的第三类型页和第四类型页。

相应地,在该实施例中,建立目标mvbt数据存储结构之后,还可以包括:

根据指向除第一类型页之外的其它类型页的索引,确定第一类型页对应其它类型页;其中,其它类型页包括第二类型页、第三类型页或第四类型页;

对于任一类型的其它类型页,根据指向下一个同类型页的索引确定全部同类型的其它类型页;

对第一类型页、第一类型页对应的全部其它类型页进行资源回收。

例如,对于任一第一类型页,可以根据该第一类型页中的第二索引、第三索引、第四索引确定该第一类型页对应的第二类型页、第三类型页和第四类型页;进而,分别根据第二类型页中的第五索引、第三类型页中的第六索引以及第四类型页中的第七索引确定全部第二类型页、第三类型页和第四类型页,进而,对该第一类型页,以及该第一类型页对应的全部第二类型页、第三类型页和第四类型页进行资源回收。

为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体实例对本发明实施例提供的技术方案进行说明。

请参见图2,为本发明实施例提供的一种目标mvbt数据存储结构的示意图,如图2所示,该目标mvbt数据存储结构包括第一类型页(该实施例中称为treenodepage(树结点页))、第二类型页(该实施例中称为datapageforkey(键数据页))、第三类型页(该实施例中称为datapageforvalue(值数据页))以及第四类型页(该实施例中称为sortlistpage(排序列表页))。其中:

treenodepage包含5个区域:

1、firstsortlistpage(第一个排序列表页,即上述第五索引):记录了第一个sortlistpage的位置。

2、currentsortlist(当前排序列表,即上述第一索引):记录了最新的第一类型条目的属性信息的位置。

3、firstdatapage(第一个数据页,即上述第三索引):记录了第一个value位置(valuelocation)指向的datapageforvalue的位置。

4、firstkeydatapage(第一个键数据页,上述第二索引):记录了第一个key位置(valuelocation)指向的datapageforkey的位置。

5、剩下的部分都是key域,记录了每一个key和value在datapage中的位置以及该key的生存周期。

其中,treenode中firstsortlistpage、currentsortlist、firstdatapage以及firstkeydatapage的长度固定(各区域长度可以相同也可以不同),key域中各第一类型条目(一个条目包括一个key位置字段、一个value位置字段以及一个生存周期字段)的长度固定且相同。

sortlistpage用于记录treenodepage中第一类型条目的数量,以及按照key排序规则排序后的各第一类型条目在treenodepage中的位置偏移量,用于加速查找。sortlistpage包含2个区域:

1、nextsortlistpage(下一个排序列表页,即上述第七索引):记录下一个sortlistpage的位置;由于一个sortlistpage的大小是有限的,通过treenodepage的firstsortlistpage和sortlistpage的nextsortlistpage将所有的sortlistpage关联起来,统一管理;

2、第一类型条目的属性信息:记录了第一类型页中第一类型条目的数量以及各第一类型条目在treenodepage中的位置偏移量;其中,各第一类型条目在treenodepage中的位置偏移量在第四类型页中按序存储,且存储的顺序与每个第一类型条目包括的key位置字段对应的key按照预设key排序规则的排序结果一致,以提高查找效率。

其中,sortlistpage中的第一类型条目的属性信息通过追加写模式写入。

datapage(包括datapageforkey和datapageforvalue)用于记录key/value的实际数据。datapage包含2个区域:

1、nextdatapage(下一个数据页,即上述第五索引(datapageforkey)或第六索引(datapageforvalue)):记录下一个datapage的位置;由于一个datapage的大小有限,通过treenodepage的firstdatapage和datapage的nextdatapage,将所有的datapage关联起来(datapageforkey和datapageforvalue分别关联),统一管理。

2、实际数据域:用于存储key/value的实际数据。

其中,key/value的实际数据的长度可以为所支持的任意长度。

基于图2所示目标mvbt数据存储结构,本发明实施例提供的数据处理方案实现流程如下:

当接收针对key/value:“thisiskey”/“thisisdata”的插入请求时,将“thisiskey”写入datapageforkey,并将“thisisdata”写入datapageforvalue。

将datapageforkey的索引和“thisiskey”在datapageforkey中的偏移量作为“thisiskey”对应的keylocation(假设为keylocation0(键位置0)),并将datapageforvalue的索引和“thisisdata”在datapageforvalue中的偏移量作为“thisisdata”对应的valuelocation(该实施例中称为valuelocation0(值位置0)),将keylocation0、valuelocation0以及“thisiskey”对应的生存周期(本文中记为生存周期0)作为一个第一类型条目记录到treenodepage中(位置偏移量为0)。

此时,treenodepage中仅存在一个第一类型条目,其位置偏移量为0,因此,sortlistpage中的第一类型条目的属性信息中包括的第一类型条目的数量为1,该第一类型条目在treenodepage中的位置偏移量为0。

其中,插入key/value:“thisiskey”/“thisisdata”之后的目标mvbt数据存储结构的示意图如图3a所示。

在上一个key的基础上,再插入新的key/value:“zoo”/“gladtoseeyouagain”。此时,可以分别将“zoo”和“gladtoseeyouagain”写入datapageforkey和datapageforvalue。

将datapageforkey的索引和“zoo”在datapageforkey中的位置偏移量作为“zoo”对应的keylocation(假设为keylocation1),并将datapageforvalue的索引和“gladtoseeyouagain”在datapageforvalue中的位置偏移量作为“gladtoseeyouagain”对应的valuelocation(假设为valuelocation1),将keylocation1、valuelocation1以及“zoo”对应的生存周期(本文中记为生存周期1)作为一个第一类型条目记录到treenodepage中(偏移量为1)。

此时,treenodepage中存在两个第一类型条目,其位置偏移量分别为0和1,因此,需要更新sortlistpage中的第一类型条目的属性信息,更新后的第一类型条目的属性信息中的第一类型条目的数量为2,第一类型条目在treenodepage中的位置偏移量分别为0和1。

在该实施例中,假设对key使用字典序排序,由于“z”大于“t”,因此,key“thisiskey”应该排在“zoo”的前面,第一类型条目的属性信息中“位置偏移量0”应该排在“位置偏移量1”前面;treenodepage中的currentsortlist指向最晚写入的第一类型条目的属性信息。

其中,插入key/value:“zoo”/“gladtoseeyouagain”之后的目标mvbt数据存储结构的示意图如图3b所示。

在上两个key的基础上,再插入新的key/value:“hello”/“word”。假设最初的datapage(假设分别为datapageforkey0和datapageforvalue0)和sortlistpage(假设为sortlistpage0)已写满,此时,需要创建新的datapage(假设分别为datapageforkey1和datapageforvalue1)和sortlistpage(假设为sortlistpage1),并将最初的datapage和sortlistpage分别挂接到新创建的datapage和sortlistpage上,后续的插入操作针对新创建的页进行。

其中,可以将“hello”和“word”分别写入datapageforkey1和datapageforvalue1。

将datapageforkey1的索引和“hello”在datapageforkey1中的位置偏移量作为“hello”对应的keylocation(假设为keylocation2),并将datapageforvalue1的索引和“word”在datapageforvalue1中的位置偏移量作为“word”对应的valuelocation(假设为valuelocation2),将keylocation2、valuelocation2以及“hello”对应的生存周期(本文中记为生存周期2)作为一个第一类型条目记录到treenodepage中(位置偏移量为2)。

此时,treenodepage中存在三个第一类型条目,其位置偏移量分别为0、1和2,因此,需要更新sortlistpage中的第一类型条目的属性信息,更新后的第一类型条目的属性信息中的第一类型条目的数量为3,第一类型条目在treenodepage中的偏移量分别为0、1和2。

由于“h”小于“t”和“z”,因此,key“hello”应该排在“thisiskey”和“zoo”的前面,第一类型条目中“位置偏移量2”应该排在“位置偏移量1”和“位置偏移量0”的前面;treenodepage中的currentsortlist指向最晚写入的第一类型条目的属性信息。

其中,插入key/value:“hello”/“word”之后的目标mvbt数据存储结构的示意图如图3c所示。

当接收到针对key“hello”的删除请求,可以根据treenodepage中的currentsortlist的值确定最晚写入的的第一类型条目的属性信息,并利用二分法从该最晚写入的的第一类型条目的属性信息中的各第一类型条目在treenodepage中的位置偏移量中选择一个位置偏移量。

以图3c所示sortlistpage为例,利用二分法从sortlistpage1中最晚写入的第一类型条目中选择的位置偏移量为0,根据该位置偏移量从treenodepage中获取到的keylocation为keylocation0,根据该keylocation从datapageforkey中获取到的key为“thisiskey”。由于该key和“hello”不匹配,且“h”小于“t”,因此,可以利用二分法从sortlistpage1的最晚写入的第一类型条目的属性信息中排在“位置偏移量0”前面的位置偏移量中选择一个位置偏移量。

在该实施例中,sortlistpage1的最新的第一类型条目信息中排在位置偏移量0”前面的只有“位置偏移量2”,因此,所选择的位置偏移量为2,根据该位置偏移量从treenodepage中获取到的keylocation为keylocation2,根据该keylocation从datapageforkey中获取到的key为“hello”,其与待删除的key匹配。

其中,在该实施例中,假设对key进行匹配时,生存周期的匹配结果为成功。

在该实施例中,查询到key“hello”之后,可以将“hello”设置为deadkey,即将“hello”的生存周期(即生存周期2,假设为[a,+∞))的结束版本号替换为该删除事务对应的版本号(假设为b),即将“hello”的生存周期修改为[a,b)。

需要说明的是,在该实施例中,假设接收到针对“hello”的读取请求时,可以按照上述方式查询到“hello”之后,根据其对应的valuelocation(即valuelocation2)从datapageforvalue中获取到对应的value,即“world”,并将“hello”和“world”返回给读取请求发起方设备。

通过以上描述可以看出,在本发明实施例提供的技术方案中,通过对传统mvbt实现方案中的数据存储结构进行修改,在修改后的mvbt数据存储结构中,树形结构的第一类型页不再存储具体的key数据和value数据,而是存储key位置、与key对应的value位置以及key生存周期,且该第一类型页中由相互对应的key位置、value位置以及生存周期三者构成的条目的长度固定,从而可以按照传统mvbt实现方案中页的合并和分裂等操作方式实现该第一类型页的合并和分裂等操作;此外,该修改后的mvbt数据存储结构中新增用于存储key的第二类型页和用于存储value的第三类型页,该第二类型页和第三类型页中存储的key和value不要求固定长度,提高了key和value存储的灵活性,减少了资源浪费,并提高了数据处理性能。

请参见图4,为本发明实施例提供一种数据处理装置的结构示意图,其中,该装置可以应用于上述方法实施例中的网络设备,如图4所示,该数据处理装置可以包括:

建立单元410,用于建立目标多版本b+树mvbt数据存储结构;其中,所述目标mvbt数据存储结构包括第一类型页、第二类型页和第三类型页,所述第一类型页用于存储键key位置、与所述key对应的值value位置以及所述key的生存周期;所述第二类型页用于存储key,所述第三类型页用于存储value;所述第一类型页为树形结构页,且所述第一类型页中一个第一类型条目包括一个key位置字段、一个value位置字段以及一个生存周期字段;所述第一类型页中各第一类型条目长度固定且相同;

接收单元420,用于接收数据处理请求;

处理单元430,用于基于所述目标mvbt数据存储结构对所述接收单元420接收到的数据处理请求进行响应。

在可选实施例中,所述目标mvbt数据存储结构还包括第四类型页,所述第四类型页用于存储第一类型页中第一类型条目的属性信息,所述属性信息包括第一类型条目的数量,以及各第一类型条目在所述第一类型页中的位置偏移量;

每个位置偏移量在所述第四类型页中按序存储,且存储的顺序与每个第一类型条目包括的key位置字段对应的key的排序结果一致。

在可选实施例中,所述处理单元430,具体用于当所述数据处理请求为针对第一key和第一value的插入请求时,将所述第一key写入所述第二类型页,并将所述第一value写入所述第三类型页;

在所述第一类型页中增加对应所述第一key和第一value的第一类型条目,该第一类型条目中的key位置字段记录有所述第一key所写入的第二类型页的索引,以及所述第一key在该第二类型页中的位置偏移量,该第一类型条目中的value位置字段记录有所述第一value所写入的第三类型页的索引,以及所述第一value在该第三类型页中的位置偏移量,该第一类型条目中的生存周期字段记录有所述第一key的生存周期;

更新所述第四类型页中存储的第一类型条目的数量,并按照所述预设key排序规则,将所述第一key对应的第一类型条目在所述第一类型页中的位置偏移量插入所述第一类型条目的属性信息中。

在可选实施例中,所述处理单元430,具体用于当所述数据处理请求为针对第二key的删除请求时,查询该第二key对应的第一类型条目;

将该第一类型条目中的生存周期中的结束版本号更新为该删除请求对应的版本号。

在可选实施例中,所述处理单元430,具体用于当所述数据处理请求为针对第三key和对所述第三key对应的第三value的读取请求时,按照树形结构中根结点页至叶子结点页的顺序,利用二分法规则,在所述第四类型页中,获取第一类型页中第一类型条目的位置偏移量;

根据获取的第一类型条目的位置偏移量,确定该第一类型条目的偏移量对应的第一类型条目中包括的key位置对应的key;

当确定出的key与所述第三key匹配时读取该key,以及该key对应的value。

在可选实施例中,所述处理单元430,还用于通过追加写模式,将所述第一类型条目的属性信息写入所述第四类型页中;

所述第一类型页中还存储有所述第一类型页对应的第四类型页中最晚写入的第一类型条目的属性信息的第一索引;其中,所述第一类型页中第一索引的长度固定。

在可选实施例中,所述第一类型页中还存储有指向除第一类型页之外的其它类型页的索引;

所述其它类型页中还存储有指向下一个同类型页的索引;

其中,所述指向除第一类型页之外的其它类型页的索引的长度固定;

请一并参见图5,为本发明实施例提供的另一种数据处理装置的结构示意图,如图5所示,在图4所示数据处理装置的基础上,图5所示数据处理装置还可以包括

资源管理单元440,用于根据所述指向除第一类型页之外的其它类型页的索引,确定所述第一类型页对应其它类型页;其中,所述其它类型页包括第二类型页、第三类型页或第四类型页;

对于任一类型的其它类型页,根据所述指向下一个同类型页的索引确定全部同类型的其它类型页;

对所述第一类型页、所述第一类型页对应的全部其它类型页进行资源回收。

请参见图6,为本发明实施例提供的一种数据处理装置的硬件结构示意图。该数据处理装置可以包括处理器601、存储有机器可执行指令的机器可读存储介质602。处理器601与机器可读存储介质602可经由系统总线603通信。并且,通过读取并执行机器可读存储介质602中与数据处理逻辑对应的机器可执行指令,处理器601可执行上文描述的数据处理方法。

本文中提到的机器可读存储介质602可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

本发明实施例还提供了一种包括机器可执行指令的机器可读存储介质,例如图6中的机器可读存储介质602,所述机器可执行指令可由数据处理装置中的处理器601执行以实现以上描述的数据处理方法。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

由上述实施例可见,通过对传统mvbt实现方案中的数据存储结构进行修改,在修改后的mvbt数据存储结构中,树形结构的第一类型页不再存储具体的key数据和value数据,而是存储key位置、与key对应的value位置以及key生存周期,且该第一类型页中由相互对应的key位置、value位置以及生存周期三者构成的条目的长度固定,从而可以按照传统mvbt实现方案中页的合并和分裂等操作方式实现该第一类型页的合并和分裂等操作;此外,该修改后的mvbt数据存储结构中新增用于存储key的第二类型页和用于存储value的第三类型页,该第二类型页和第三类型页中存储的key和value不要求固定长度,提高了key和value存储的灵活性,减少了资源浪费,并提高了数据处理性能。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1