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

技术编号:20329142 阅读:65 留言:0更新日期:2019-02-13 05:45
本申请提供一种数据处理方法和装置,该方法包括:在接收到读操作命令后,确定所述读操作命令携带的第一Key对应的第一内存页;从与所述第一内存页对应的第一排序数组中,获取第一数组元素表征的第一位置偏移量,并确定所述第一位置偏移量对应的所述第一内存页中的第一内存元素;判断所述第一Key和所述第一Key对应的生存周期,与所述第一内存元素中记录的第二Key和生存周期是否匹配;如果是,从所述第一内存元素中读取与所述第一Key对应的数据部分。通过本申请的技术方案,可以减少遍历次数,快速从大量内存元素中读取到目标内存元素,节省大量时间,提高页内访问速度。

【技术实现步骤摘要】
一种数据处理方法和装置
本申请涉及存储
,尤其是涉及一种数据处理方法和装置。
技术介绍
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次遍历操作后,才能够遍历到目标内存元素,耗费大量时间来执行遍历操作,影响页内访问速度。
技术实现思路
本申请提供一种数据处理方法和装置,以减少遍历次数,提高访问速度。第一方面,本申请提供一种数据处理方法,应用于采用MVBT存储数据的网络设备,所述网络设备的内存包括多个内存页,每个内存页包括至少一个内存元素,每个内存页均配置对应的排序数组,所述排序数组中的每个数组元素用于表征内存元素在所述内存页中的位置偏移量,所述方法包括:在接收到读操作命令后,确定所述读操作命令携带的第一Key对应的第一内存页;从与所述第一内存页对应的第一排序数组中,获取第一数组元素表征的第一位置偏移量,并确定所述第一位置偏移量对应的所述第一内存页中的第一内存元素;判断所述第一Key和所述第一Key对应的生存周期,与所述第一内存元素中记录的第二Key和生存周期是否匹配;如果是,从所述第一内存元素中读取与所述第一Key对应的数据部分。第二方面,本申请提供一种数据处理装置,应用于采用MVBT存储数据的网络设备,所述网络设备的内存包括多个内存页,每个内存页包括至少一个内存元素,每个内存页均配置对应的排序数组,所述排序数组中的每个数组元素用于表征内存元素在所述内存页中的位置偏移量,所述装置包括:确定模块,用于在接收到读操作命令后,确定所述读操作命令携带的第一Key对应的第一内存页;获取模块,用于从与所述第一内存页对应的第一排序数组中,获取第一数组元素表征的第一位置偏移量,并确定所述第一位置偏移量对应的所述第一内存页中的第一内存元素;判断模块,用于判断所述第一Key和所述第一Key对应的生存周期,与所述第一内存元素中记录的第二Key和生存周期是否匹配;读取模块,用于当判断结果为是时,从所述第一内存元素中读取与所述第一Key对应的数据部分。第三方面,本申请提供一种网络设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述的数据处理方法步骤。第四方面,本申请提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令可以促使所述处理器实现上述的数据处理方法步骤。基于上述技术方案,本申请实施例中,在采用MVBT存储数据的网络设备,若网络设备的内存包括多个内存页,且每个内存页包括大量内存元素,不需要从内存页的第一个内存元素开始进行遍历,而是从与内存页关联的排序数组中选择数组元素,并从该数组元素表征的位置偏移量对应的内存元素进行遍历,从而减少遍历次数,可以快速从大量内存元素中读取到目标内存元素,节省大量时间,提高页内访问速度,使得查找效率大幅度提高,加强了读写性能。附图说明为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。图1A-图1E是本申请一种实施方式中的采用COW存储数据的示意图;图2A-图2I是本申请一种实施方式中的采用MVBT存储数据的示意图;图3A和图3B是本申请一种实施方式中的数据处理方法的流程图;图4A和图4B是本申请一种实施方式中的排序数组的示意图;图5A-图5C是本申请一种实施方式中的堆栈数组的处理示意图;图6是本申请一种实施方式中的数据处理装置的结构图;图7是本申请一种实施方式中的网络设备的硬件结构图。具体实施方式在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。本申请实施例中提出一种数据处理方法,可以应用于采用Key-Value数据库存储数据的网络设备(如路由器、交换机等),Key-Value数据库可以包括但不限于LMDB等,后续以LMDB为例进行说明。LMDB一般存储在内存中,LMDB的存储结构可以为树结构或者哈希结构,可以使用COW技术实现数据更新。在一个例子中,LMDB在网络设备上具有广泛使用,例如,可以将接口名称作为Key,并将该接口名称的属性作为Value进行查找。又例如,可以将IP地址作为Key,并将该IP地址对应的ACL(AccessControlList,访问控制列表)规则作为Value进行查找。当然,上述应用只是两个示例,对此不做限制。在一个例子中,LMDB通常使用B+Tree(B+树)作为存储结构,B+Tree是一种按照内存页(Page)分层的数据结构,B+Tree可以由页节点(LeafPage)和非页节点(BranchPage)组成,最下层的是页节点,用于存储数据,其余层均是非页节点,用于组织Key方便查找。参见图1A所示,为LMDB采用B+Tree存储数据的示例,内存页5-内存页12是页节点,内存页1-内存页4是非页节点。此外,内存页5包括3个内存元本文档来自技高网
...

【技术保护点】
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任一...

【专利技术属性】
技术研发人员:王洋
申请(专利权)人:新华三技术有限公司
类型:发明
国别省市:浙江,33

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

1