【技术实现步骤摘要】
一种数据处理方法和装置
本申请涉及存储
,尤其是涉及一种数据处理方法和装置。
技术介绍
Key-Value(键-值)数据库是目前使用最广泛的数据库,可以通过唯一标识来对数据进行存储、读取和管理,存储结构可以为树结构或者哈希结构,且可以包括LMDB(LightingMemory-mappedDataBase,内存映射数据库)等。Key-Value数据库使用COW(Copy-On-Write,写时拷贝)技术来提供并发保护,提高数据存储的并发性,数据读写性能较高。COW技术是指:针对每次修改操作,将修改涉及的内存页拷贝一份,对原内存页不修改,修改操作集中在拷贝的新内存页。由于原内存页未修改,因此读事务可以不间断的进行访问。但是,针对每次的修改操作,COW技术均需要拷贝大量内存页,造成大量的拷贝操作,占用大量的CPU(CentralProcessingUnit,中央处理器)资源。为了解决COW技术的大量拷贝问题,目前引入了MVBT(Multi-VersionB+Tree,多版本B+树)技术,MVBT技术通过对每个Key(键)增加一个生存周期(LifeSpan),从而可以大幅降低内存页的拷贝次数,可以节省CPU资源。在MVBT技术中,每个内存页包括大量内存元素,为了从大量内存元素中读取到目标内存元素,需要从第一个内存元素开始进行遍历,一直到遍历出目标内存元素,上述方式需要遍历大量内存元素,会耗费大量时间,影响页内访问速度。例如,内存页包括400个内存元素,若目标内存元素是第300个内存元素,则从第一个内存元素开始进行遍历,在执行300次遍历操作后,才能够遍历到 ...
【技术保护点】
1.一种数据处理方法,其特征在于,应用于采用多版本B+树MVBT存储数据的网络设备,所述网络设备的内存包括多个内存页,每个内存页包括至少一个内存元素,每个内存页均配置对应的排序数组,所述排序数组中的每个数组元素用于表征内存元素在所述内存页中的位置偏移量,所述方法包括:在接收到读操作命令后,确定所述读操作命令携带的第一键Key对应的第一内存页;从与所述第一内存页对应的第一排序数组中,获取第一数组元素表征的第一位置偏移量,并确定所述第一位置偏移量对应的所述第一内存页中的第一内存元素;判断所述第一Key和所述第一Key对应的生存周期,与所述第一内存元素中记录的第二Key和生存周期是否匹配;如果是,从所述第一内存元素中读取与所述第一Key对应的数据部分。
【技术特征摘要】
1.一种数据处理方法,其特征在于,应用于采用多版本B+树MVBT存储数据的网络设备,所述网络设备的内存包括多个内存页,每个内存页包括至少一个内存元素,每个内存页均配置对应的排序数组,所述排序数组中的每个数组元素用于表征内存元素在所述内存页中的位置偏移量,所述方法包括:在接收到读操作命令后,确定所述读操作命令携带的第一键Key对应的第一内存页;从与所述第一内存页对应的第一排序数组中,获取第一数组元素表征的第一位置偏移量,并确定所述第一位置偏移量对应的所述第一内存页中的第一内存元素;判断所述第一Key和所述第一Key对应的生存周期,与所述第一内存元素中记录的第二Key和生存周期是否匹配;如果是,从所述第一内存元素中读取与所述第一Key对应的数据部分。2.根据权利要求1所述的方法,其特征在于,所述判断所述第一Key和所述第一Key对应的生存周期,与所述第一内存元素中记录的第二Key和生存周期是否匹配之后,所述方法还包括:如果否,则从与所述第一内存页对应的第一排序数组中,获取第二数组元素表征的第二位置偏移量,并确定所述第二位置偏移量对应的所述第一内存页中的第二内存元素;重复执行判断所述第一Key和所述第一Key对应的生存周期,与内存元素中记录的Key和生存周期是否匹配的步骤,直至所述第一Key和所述第一Key对应的生存周期,与内存元素中记录的Key和生存周期匹配,并从内存元素中读取与所述第一Key对应的数据部分结束。3.根据权利要求2所述的方法,其特征在于,所述从与所述第一内存页对应的第一排序数组中,获取第二数组元素表征的第二位置偏移量之前,所述方法还包括:若所述第二Key大于所述第一Key,将所述第一排序数组中起始位置数组元素与中间位置数组元素之间的所有数组元素,确定为所述第一内存页对应的第二排序数组,并从所述第二排序数组中,获取数组元素表征的位置偏移量;若所述第二Key小于所述第一Key,将所述第一排序数组中中间位置数组元素与结束位置数组元素之间的所有数组元素,确定为所述第一内存页对应的第二排序数组,并从所述第二排序数组中,获取数组元素表征的位置偏移量。4.根据权利要求1所述的方法,其特征在于,所述第一数组元素为所述第一排序数组中中间位置的数组元素。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:在接收到写操作命令后,确定所述写操作命令携带的第三Key对应的第二内存页;将所述第三Key、所述第三Key对应的生存周期和所述第三Key对应的数据部分存储到所述第二内存页中的第三内存元素;对所述第二内存页中的每个内存元素的位置重新排序;根据第三内存元素的位置排序结果,在所述第二内存页对应的第三排序数组中插入数组元素,并将所述第三内存元素在所述第二内存页中的位置偏移量记录到插入的所述数组元素中。6.根据权利要求5所述的方法,其特征在于,所述对所述第二内存页中的每个内存元素的位置重新排序,包括:获取所述第二内存页中的每个内存元素记录的Key;按照每个Key的值从小到大的顺序,依次对每个Key进行排序,得到每个内存元素的位置排序结果;或者,按照每个Key的值从大到小的顺序,依次对每个Key进行排序,得到每个内存元素的位置排序结果。7.根据权利要求5所述的方法,其特征在于,所述根据第三内存元素的位置排序结果,在所述第二内存页对应的第三排序数组中插入数组元素,包括:拷贝与所述第二内存页对应的第三排序数组,得到拷贝后的第三排序数组,并保留拷贝前的第三排序数组;根据位置排序结果,确定所述第三内存元素在所述位置排序结果中的位置,并根据所述位置在所述拷贝后的第三排序数组中的对应位置插入一个数组元素。8.根据权利要求1-7任一...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。