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

文档序号:6492599阅读:111来源:国知局
一种数据处理方法及装置制造方法【专利摘要】本发明提供一种数据处理方法及装置,方法包括以下步骤:设置一内存表,所述内存表包括至少两级的存储结点,所述存储结点用于存储数据或者下一级存储结点的地址;接收待插入记录数据,所述待插入记录数据包括有待插入数据标识;判断是否存在与待插入记录数据标识相同的记录数据标识;若存在与所述待插入记录数据标识相同的记录数据标识,则将所述待插入记录数据解析成至少一个的细胞数据,并将细胞数据在下一级存储结点进行存储。【专利说明】一种数据处理方法及装置【【
技术领域
】】[0001]本发明涉及数据处理【
技术领域
】,特别是涉及一种数据处理方法及装置。【【
背景技术
】】[0002]随着需要处理的数据的不断增多,对数据处理效率提出了很高的要求。[0003]以分布式数据库的内存表为例,现有技术主要通过两种结构的内存表对数据进行存储,一是基于跳跃表(skiplist)结构的内存表,另一个是基于平衡树结构的内存表。[0004]但是不论是基于跳跃表结构的内存表,还是基于平衡树结构的内存表,在插入记录数据或者查询记录数据时,由于在极端场景下,由O(1gN)的时间复杂度降低为O(N),而且基于全key的插入存储对于内存的浪费很大,在向内存表插入记录数据的时候需要解析成无冲突的key键,导致插入记录数据的效率低下,进而降低记录数据存储的效率。[0005]因此,需解决现有技术中存在的技术问题。【【
发明内容】】[0006]本发明的一个目的在于提供一种数据处理方法,旨在解决现有技术中的基于全key的插入存储对于内存的浪费很大,在向内存表插入记录数据的时候需要解析成无冲突的key键,导致对记录数据的存储以及查询的效率低下的技术问题。[0007]为解决上述技术问题,本发明构造了一种数据处理方法,所述方法包括以下步骤:[0008]接收待插入记录数据,所述待插入记录数据包括有待插入数据标识;[0009]判断是否存在与待插入记录数据标识相同的记录数据标识;[0010]若存在与所述待插入记录数据标识相同的记录数据标识,则将所述待插入记录数据解析成至少一个的细胞数据,并将细胞数据存储在内存表中,所述内存表包括至少两级的存储结点,所述存储结点用于存储数据或者下一级存储结点的地址,所述细胞数据存储于所述内存表的所述下一级存储节点中。[0011]本发明的另一个目的在于提供一种数据处理方法,旨在解决现有技术中的基于全key的插入存储对于内存的浪费很大,在向内存表插入记录数据的时候需要解析成无冲突的key键,导致对记录数据的存储以及查询的效率低下的技术问题。[0012]为解决上述技术问题,本发明构造了一种数据处理装置,所述装置包括:[0013]存储模块,所述存储模块包括一内存表,所述内存表包括至少两级的存储结点,所述存储结点用于存储数据或者下一级存储结点的地址;[0014]接收模块,用于接收待插入记录数据,所述待插入记录数据包括有待插入数据标识;[0015]判断模块,用于判断是否存在与待插入记录数据标识相同的记录数据标识;[0016]处理模块,用于在存在与所述待插入记录数据标识相同的记录数据标识时,将所述待插入记录数据解析成至少一个的细胞数据,并将细胞数据在下一级存储结点进行存储。[0017]相对于现有技术,本发明预先设置一内存表,该内存表包括至少两级的存储结点,所述存储结点用于存储数据或者下一级存储结点的地址;在接收到待插入记录数据,首先判断是否存在与待插入记录数据标识相同的记录数据标识;若存在与所述待插入记录数据标识相同的记录数据标识,则将所述待插入记录数据解析成至少一个的细胞数据,并将细胞数据在下一级存储结点进行存储。本发明提高了对记录数据存储的效率,进而提高了数据处理效率。[0018]为让本发明的上述内容能更明显易懂,下文特举优选实施例,并配合所附图式,作详细说明如下:【【专利附图】【附图说明】】[0019]图1为本发明提供的据处理方法的较佳实施例流程示意图;[0020]图2为本发明中内存表的较佳实施例结构示意图;[0021]图3为本发明中记录数据的结构示意图;[0022]图4为本发明中细胞数据的结构示意图;[0023]图5为本发明中对不同记录数据进行存储时的示意图;[0024]图6为本发明中查找待插入记录数据正确位置的示意图;[0025]图7为本发明中查询数据时的结构示意图;[0026]图8为本发明中对记录数据标识进行前缀压缩的示意图;[0027]图9为本发明提供的数据处理装置的较佳实施例结构示意图。【【具体实施方式】】[0028]以下各实施例的说明是参考附加的图式,用以例示本发明可用以实施的特定实施例。本发明所提到的方向用语,例如「上」、「下」、「前」、「后」、「左」、「右」、「内」、「外」、「侧面」等,仅是参考附加图式的方向。因此,使用的方向用语是用以说明及理解本发明,而非用以限制本发明。在图中,结构相似的单元是以相同标号表示。[0029]请参阅图1,图1为本发明提供的数据处理方法的较佳实施例流程示意图。[0030]在步骤SlOl中,预先设置一内存表(Memtable)。其中该内存表包括至少两级的存储结点,非最后一级的存储结点除了存储数据外,还用于存储其对应的下一级存储结点的地址。[0031]譬如请参阅图2,图2为本发明提供的内存表的一较佳实施例结构示意图。该内存表包括两级的存储结点,即一级存储节点A和二级存储节点B,二级存储节点B为一级存储节点A的下一级存储节点。其中一级存储节点A除了存储数据外,还存储二级存储节点B的地址,譬如存储节点All内存储有二级存储节点B的地址。[0032]譬如请参阅图3,图3为本发明中记录数据的结构示意图,其中记录数据是某一存储标识(Rowkey)下的一组数据组成的集合,其中记录数据包括一记录数据标识(Record_key)以及多个细胞数据(Rell)。[0033]请参阅图4,图4为本发明中细胞数据的结构示意图。其中细胞数据为存储数据的最小数据单元,其包括细胞数据标识(Rell_key)以及细胞值(Rell_value),其中所述细胞数据标识携带有时间戳,即每一时间戳对应一细胞数据标识,因此不存在相同的细胞数据标识。在本发明中,记录数据存储于一级存储结点A中,细胞数据存储于二级存储结点B中。[0034]在步骤S102中,接收待插入记录数据,判断是否存在与待插入记录数据标识相同的记录数据标识,若存在,则进行步骤S103,否则进行步骤S104。[0035]若之前没有相同记录数据标识的记录数据存储,则待插入记录数据的存储位置为一级存储结点A,若在此之前已经有相同记录数据标识的记录数据存储,则所述待插入记录数据的存储位置为二级存储结点B。[0036]在步骤S103中,将所述待插入记录数据解析成至少一个的细胞数据,并将细胞数据在二级存储结点B进行存储。[0037]譬如请参阅图5,以存储第一记录数据recordl和第二记录数据record2为例。其中第一记录数据recordl由于没有相同的记录数据标识的冲突,被存储至一级存储结点A,而第二记录数据reCOrd2由于之前已有相同记录数据标识的记录数据插入进来,因此将第二记录数据record2解析成3个无冲突的细胞数据,对每个细胞数据在二级存储结点B中找到正确的位置,并对细胞数据标识采用前缀压缩的方式进行存储。[0038]在具体实施过程中,以存储第一记录数据recordl为例,在查找第一记录数据recordl待存储的正确位置的过程中,本发明实施例优选采用逐层二分法查找正确的位置进行存储。假设第一记录数据recordl的记录数据标识为X,并假设A2<C1<C2<C3<F1<F2<X<F3<C4<A3,其中Al、A2、A3…B1、B2、B3等为各级存储节点中存储节点的记录数据标识,譬如Al、A2、A3…为一级存储结点A中各存储节点的记录数据标识。[0039]具体请参阅图6,首先在内存表的一级存储结点A上进行查找:由于X大于A2且小于A3,则通过二分法查找到A2存`储结点,进而判定X存储于A2存储结点对应的分支上,譬如A2存储结点对应下一级存储节点C。之后在下一级存储节点C查找:由于X大于C3,则通过二分法查找到C3存储结点,进而判定X存储于C3存储结点对应的分支上,譬如C3存储结点对应下一级存储节点F。之后继续在下一级存储节点F上进行查找,依次类推,每一级的存储节点都通过二分法查找相对应的下一级存储节点,直到达到内存表中的最后一级存储节点,,即可找到正确的位置。譬如在最后一级存储节点F查找到存储位置为F3存储节点时,则将F3存储节点后移,并将X插入到F3存储节点原先的位置。[0040]在步骤S104中,对待插入记录数据标识进行前缀压缩后存储。[0041]在具体实施过程中,还包括查询的步骤,请参阅图7,可用待插入记录数据标识作为查询索引,在内存表中查询是否已存储有对应的记录数据;若已存储有对应的记录数据,且已存储的记录数据位于一级存储结点A,则在对应的记录数据中获取相应的细胞数据;若已存储有对应的记录数据,且已存储的记录数据位于二级存储结点B,则查找细胞数据标识,该细胞数据标识对应记录数据标识,并用该细胞数据标识作为索引进行查询,若查询到对应的细胞数据,则证明查询成功,否则证明查询失败。[0042]在具体实施过程中,在对待插入记录数据标识进行前缀压缩时,选择合适的基准密钥(基key)对待插入记录数据标识进行前缀压缩,然后存储至正确位置。其中基准密钥是用来作为前缀压缩的基准的key,譬如第一记录数据recordl的第一记录数据标识Ml;本发明选择的基准密钥在满足所有已存在的记录数据标识中,所选择的基准密钥可使得待插入记录数据的数据标识可压缩的字节数最多。[0043]譬如,第一记录数据recordl具有第一记录数据标识Ml,第二记录数据record2具有第二记录数据标识M2,第一记录数据recordl和第二记录数据record2存储至内存表后,待插入记录数据为第三记录数据reCOrd3,其具有第三记录数据标识M3,该第三记录数据标识M3占用内存为BufferLen,首先查找到与第三记录数据标识M3最接近的第二记录数据标识M2,假设第二记录数据标识M2提供给第三记录数据标识M3的公共前缀串的长度为PrefixLen,则PrefixLen小于或者等于第二记录数据标识M2与第三记录数据标识M3的公共前缀串的长度SameLen,即:PrefixLen<SameLen。[0044]假设保存压缩信息所占空间为Threshold,则第三记录数据标识M3压缩时:所占空间为下式⑴:[0045]BufferLen-PrefixLen+Threshold(I);[0046]第三记录数据标识M3不压缩时所占空间为weiBufferLen;[0047]假设第四记录数据recorcM具有第四记录数据标识M4,记录数据标识M4与M2、M3至少有SameLen长度的公共前缀串,第四记录数据标识M4的大小是BufferSize;当第四记录数据标识M4插入时,空间的使用情况分别为:[0048]如果第三记录数据标识M3已被压缩,则第四记录数据标识M4可以压缩的大小是基于第三记录数据标识M3的基准密钥(B)产生的,则最终保存第四记录数据标识M4所需要的空间同样为式(1),即:[0049]BufferSize-PrefixLen+Threshold[0050]如果第三记录数据标识M3未被压缩,则第三记录数据标识M3就可以作为M4的基准密钥,则第三记录数据标识M3至少能提供SameLen的压缩空间给第四记录数据标识M4,那么第四记录数据标识M4以第三记录数据标识M3为基准密钥时其空间消耗为下式(2):[0051]BufferSize-SameLen+Threshold(2)[0052]在第三记录数据标识M3压缩和不压缩的情况下,第四记录数据标识M4插入的时候总的空间消耗分别为Tl和T2:[0053]Tl=BufferLen-PrefixLen+Threshold+BufferSize-PrefixLen+Threshold(3)[0054]T2=BufferLen+BufferSize-SameLen+Threshold(4)[0055]T2<Tl,可以得出:SameLen>2*PrefixLen-Threshold,显然当SameLen与PrefixLeruThreshold满足上述关系时,待插入记录数据的记录数据标识key可以不压缩,该记录数据标识key可作为下一个个待插入记录数据的记录数据标识的基准密钥,从而提供更大的压缩空间。[0056]对记录数据标识进行前缀压缩的过程请参阅图8,第一记录数据recordl和第二记录数据reCOrd2的记录数据标识分别为200个字节和230个字节,其中有180个字节是相同的,在不进行前缀压缩的条件下,仅存储记录数据标识共需230+200=430个字节。若采用前缀压缩的方式,以第一记录数据标识Ml为基准密钥进行前缀压缩,存储第二记录数据标识M2需要的字节数为:用8个字节保存记录数据标识的地址,用4个字节保存总长度,用4个字节保存压缩的长度,再加上后面未压缩的230-180=50个字节,共需字节数:8+4+4+50=66个字节。则现有技术中需要用230个字节来保存的数据,进行前缀压缩后只需66个字节即可完成保存。[0057]请参阅图9,图9为本发明提供的数据处理装置的较佳实施例结构示意图。所述装置包括存储模块81、接收模块82、判断模块83、处理模块84以及查询模块85。[0058]所述存储模块81包括一内存表,所述内存表包括至少两级的存储结点,所述存储结点用于存储数据或者下一级存储结点的地址,具体请参阅图2以及针对图2的详细描述。[0059]所述接收模块82接收待插入记录数据,所述待插入记录数据包括有待插入数据标识;所述判断模块83判断是否存在与待插入记录数据标识相同的记录数据标。[0060]若所述判断模块83判定存在与所述待插入记录数据标识相同的记录数据标识,则所述处理模块84将所述待插入记录数据解析成至少一个的细胞数据,并将细胞数据在下一级存储结点进行存储。若所述判断模块83判定不存在与所述待插入记录数据标识相同的记录数据标识,则所述处理模块84将所述待插入记录数据标识进行前缀压缩后存储。优选的,所述处理模块84对细胞数据的细胞数据标识进行前缀压缩后存储。[0061]在将所述待插入记录数据标识进行前缀压缩时,所述处理模块84查找一记录数据标识作为待插入记录数据标识的基准密钥,所述待插入记录数据标识以该基准密钥为准进行压缩,其中所查找的记录数据标识满足下式:[0062]SameLen>2*PrefixLen-Threshold;[0063]其中SameLen为该记录数据标识与待插入记录数据标识的公共前缀串的长度;PrefiXLen为该记录数据标识提供给所述待插入数据标识的公共前缀串的长度;Threshold为所述内存表中保存压缩信息所占空间。[0064]更具体的,所述内存表包括一级存储结点和二级存储结点,所述查询模块在进行记录数据查询时,用记录数据标识作为查询索引,在内存表中查询是否已存储有对应的记录数据;若已存储有对应的记录数据,且已存储的记录数据位于一级存储结点,则在对应的记录数据中获取相应的细胞数据;若已存储的记录数据位于二级存储结点,则用细胞数据标识作为索引进行查询,若查询到对应的细胞数据,则查询成功,否则查询失败。[0065]综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。【权利要求】1.一种数据处理方法,其特征在于:所述方法包括以下步骤:接收待插入记录数据,所述待插入记录数据包括有待插入数据标识;判断是否存在与待插入记录数据标识相同的记录数据标识;若存在与所述待插入记录数据标识相同的记录数据标识,则将所述待插入记录数据解析成至少一个的细胞数据,并将细胞数据存储在内存表中,所述内存表包括至少两级的存储结点,所述存储结点用于存储数据或者下一级存储结点的地址,所述细胞数据存储于所述内存表的所述下一级存储节点中。2.根据权利要求1所述的数据处理方法,其特征在于:所述方法还包括以下步骤:若不存在与所述待插入记录数据标识相同的记录数据标识,则将所述待插入记录数据标识进行前缀压缩后存储。3.根据权利要求1所述的数据处理方法,其特征在于:将细胞数据在下一级存储结点进行存储时,具体包括:对细胞数据的细胞数据标识进行前缀压缩后存储。4.根据权利要求2所述的数据处理方法,其特征在于:对记录数据的记录数据标识进行前缀压缩的步骤具体包括:查找记录数据标识,将所查找的记录数据标识作为待插入记录数据标识的基准密钥,所述待插入记录数据标识以该基准密钥为准进行压缩,其中所查找的记录数据标识满足下式:SameLen>2*Pr`efixLen-Threshold;其中SameLen为该记录数据标识与待插入记录数据标识的公共前缀串的长度;PrefiXLen为该记录数据标识提供给所述待插入数据标识的公共前缀串的长度;Threshold为所述内存表中保存压缩信息所占空间。5.根据权利要求1所述的数据处理方法,其特征在于:所述内存表包括一级存储结点和二级存储结点,所述二级存储节点在顺序上为所述一级存储节点的下一级存储节点,所述方法还包括在所述内存表查询数据的过程,该查询数据的过程包括:用记录数据标识作为查询索引,在内存表中按照存储节点的顺序查询是否已存储有对应的记录数据;如果已存储有对应的记录数据,则判断已存储有对应的记录数据所属的存储节点:若已存储的记录数据位于一级存储结点,则在对应的记录数据中获取相应的细胞数据;若已存储的记录数据位于二级存储结点,则查找一细胞数据标识,该细胞数据标识对应所述记录数据标识,并用查找到的细胞数据标识作为索引进行查询,若查询到对应的细胞数据,则查询成功,否则查询失败。6.一种数据处理装置,其特征在于:所述装置包括:存储模块,所述存储模块包括一内存表,所述内存表包括至少两级的存储结点,所述存储结点用于存储数据或者下一级存储结点的地址;接收模块,用于接收待插入记录数据,所述待插入记录数据包括有待插入数据标识;判断模块,用于判断是否存在与待插入记录数据标识相同的记录数据标识;处理模块,用于在存在与所述待插入记录数据标识相同的记录数据标识时,将所述待插入记录数据解析成至少一个的细胞数据,并将细胞数据在下一级存储结点进行存储。7.根据权利要求6所述的数据处理装置,其特征在于:所述处理模块,还用于在不存在与所述待插入记录数据标识相同的记录数据标识时,将所述待插入记录数据标识进行前缀压缩后存储。8.根据权利要求6所述的数据处理装置,其特征在于:所述处理模块,还用于对细胞数据的细胞数据标识进行前缀压缩后存储。9.根据权利要求7所述的数据处理装置,其特征在于:所述处理模块,还用于查找一记录数据标识,将所查找的记录数据标识作为待插入记录数据标识的基准密钥,所述待插入记录数据标识以该基准密钥为准进行压缩,其中所查找的记录数据标识满足下式:SameLen>2*PrefixLen-Threshold;其中SameLen为该记录数据标识与待插入记录数据标识的公共前缀串的长度;PrefiXLen为该记录数据标识提供给所述待插入数据标识的公共前缀串的长度;Threshold为所述内存表中保存压缩信息所占空间。10.根据权利要求6所述的数据处理装置,其特征在于:所述内存表包括一级存储结点和二级存储结点,所述二级存储节点在顺序上为所述一级存储节点的下一级存储节点,所述装置还包括查询模块,所述查询模块,用于用记录数据标识作为查询索引,在内存表中按照存储节点的顺序查询是否已存储有对应的记录数据;如果已存储有对应的记录数据,则判断已存储有对应的记录数据所属的存储节点:若已存储的记录数据位于一级存储结点,则在对应的记录数据中获取相应的细胞数据;若已存储的记录数据位于二级存储结点,则查找一细胞数据标识,该细胞数据标识对应所述记录数据标识,并用查找到的细胞数据标识作为索引进行查询,若查询到对应的细胞数据,则查询成功,否则查询失败。`【文档编号】G06F17/30GK103870462SQ201210528212【公开日】2014年6月18日申请日期:2012年12月10日优先权日:2012年12月10日【发明者】敖争光申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1