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

文档序号:22314003发布日期:2020-09-23 01:36阅读:104来源:国知局
本公开涉及计算机
技术领域
:,尤其涉及一种数据处理方法和装置。
背景技术
::日志结构合并树(lsm-tree,logstructuredmergetree)是一种广泛应用于数据存储领域的结构。lsm结构中至少包括具有可读写特性的高层存储空间(例如,memtable)和具有只读特性的低层存储空间(例如,basetable)。当memtable中的数据量超过阈值时,lsm-tree结构需要将memtable和basetable合并生成新的basetable,以及生成新的空的memtable。memtable和basetable之间的合并可能会导致用于存储关键字对应的数据的内存资源发生变化。目前在访问lsm-tree结构时,每次访问都通过关键字在整个数据存储系统中进行资源定位,确定用于存储关键字对应的数据的内存资源,进而对内存资源中的数据进行数据处理,数据处理效率较低。技术实现要素:有鉴于此,本公开提出了一种数据处理方法和装置,使得可以提高lsm-tree结构的访问速度,进而可以有效提高数据处理效率。根据本公开的第一方面,提供了一种数据处理方法,所述方法应用于基于lsm-tree结构的数据存储系统,所述方法包括:接收包含目标关键字的数据处理请求,所述数据处理请求用于请求对与所述目标关键字对应的目标数据执行数据处理操作;通过与所述目标关键字对应的句柄,对所述目标数据执行数据处理操作,所述句柄中包括用于指向所述目标数据的指针。在一种可能的实现方式中,通过与所述目标关键字对应的句柄,对所述目标数据执行数据处理操作,包括:判断所述指针是否有效;当确定所述指针有效时,通过所述指针对所述目标数据执行数据处理操作。在一种可能的实现方式中,所述方法还包括:当确定所述指针无效时,根据所述目标关键字在所述数据存储系统中进行资源定位,查找所述目标数据;根据查找结果对所述指针进行重新赋值;通过重新赋值后的所述指针对所述目标数据执行数据处理操作。在一种可能的实现方式中,所述lsm-tree结构至少包括第一层级和第二层级,所述第一层级中的数据具有可读写特性,所述第二层级中的数据具有只读特性;所述方法还包括:当所述第一层级中数据表的数据量大于阈值时,将所述数据表的层级确定为第三层级,以及生成新的空数据表并将所述空数据表的层级设置为第一层级,所述第三层级中的数据具有只读特性;将所述第三层级中的数据合并至所述第二层级。在一种可能的实现方式中,所述指针包括读指针和写指针;所述方法还包括:当所述第一层级中数据表为空,且所述第三层级中的数据未合并至所述第二层级时,将所述写指针设置为空指针;当所述第三层级中的数据合并至所述第二层级之后,且所述写指针为空指针时,将所述读指针设置为空指针。在一种可能的实现方式中,判断所述指针是否有效,包括下述至少一个步骤:当所述读指针为非空指针时,确定所述读指针有效;当所述写指针为非空指针时,确定所述写指针有效。在一种可能的实现方式中,所述句柄中还包括第一标识,所述lsm-tree结构中包括第二标识,在所述第三层级中的数据合并至所述第二层级之前,所述第一标识和所述第二标识相同;所述方法还包括:当所述第三层级中的数据合并至所述第二层级之后,更新所述第二标识,更新后的所述第二标识与所述第一标识不相同。在一种可能的实现方式中,所述指针包括读指针和写指针;判断所述指针是否有效,包括:当所述第一标识和所述第二标识相同时,确定所述读指针和所述写指针有效。在一种可能的实现方式中,所述方法还包括:根据所述目标关键字在所述数据存储系统中进行资源定位之后,更新所述第一标识,更新后的所述第一标识与所述第二标识相同。在一种可能的实现方式中,当确定所述指针有效时,通过所述指针对所述目标数据执行数据处理操作,包括下述至少一个步骤:对所述读指针指向的所述目标数据进行读取;对所述写指针指向的所述目标数据进行修改。在一种可能的实现方式中,根据查找结果对所述指针进行重新赋值,包括:若查找到所述目标数据,则将所述目标数据的内存地址赋值给所述读指针。在一种可能的实现方式中,通过重新赋值后的所述指针对所述目标数据执行数据处理操作,包括:对重新赋值后的所述读指针指向的所述目标数据进行读取。在一种可能的实现方式中,根据查找结果对所述指针进行重新赋值,包括:若查找到所述目标数据,则将所述目标数据复制到所述第一层级;将所述目标数据在所述第一层级中的内存地址赋值给所述写指针。在一种可能的实现方式中,通过重新赋值后的所述指针对所述目标数据执行数据处理操作,包括:对重新赋值后的所述写指针指向的所述目标数据进行修改。在一种可能的实现方式中,根据查找结果对所述指针进行重新赋值,包括:若未查找到所述目标数据,则在所述第一层级中创建一个空的内存资源;将所述空的内存资源的内存地址赋值给所述写指针。在一种可能的实现方式中,通过重新赋值后的所述指针对所述目标数据执行数据处理操作,包括:在重新赋值后的所述写指针指向的所述空的内存资源中写入所述目标数据。根据本公开的第二方面,提供了一种数据处理装置,所述装置应用于基于lsm-tree结构的数据存储系统,所述装置包括:接收模块,用于接收包含目标关键字的数据处理请求,所述数据处理请求用于请求对与所述目标关键字对应的目标数据执行数据处理操作;数据处理模块,用于通过与所述目标关键字对应的句柄,对所述目标数据执行数据处理操作,所述句柄中包括用于指向所述目标数据的指针。根据本公开的第三方面,提供了一种数据处理装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述第一方面所述的数据处理方法。根据本公开的第四方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述第一方面所述的数据处理方法。在基于lsm-tree结构的数据存储系统中,接收包含目标关键字的数据处理请求,数据处理请求用于请求对与目标关键字对应的目标数据执行数据处理操作;进而通过与目标关键字对应的句柄,对目标数据执行数据处理操作,句柄中包括用于指向目标数据的指针。在lsm-tree结构中设置与关键字对应的句柄,通过与关键字对应的句柄直接访问lsm-tree结构中与关键字对应的数据以执行数据处理操作,使得可以提高lsm-tree结构的访问速度,进而可以有效提高数据处理效率。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出一种基于lsm-tree结构的数据存储系统的示意图;图2示出本公开一实施例的数据处理方法的流程示意图;图3示出本公开一实施例的lsm-tree结构的示意图;图4示出本公开一实施例的lsm-tree结构中的数据合并示意图;图5示出本公开一实施例的更新句柄中指针的示意图;图6示出本公开一实施例的更新lsm-tree结构中第二序列号的示意图;图7示出本公开一实施例的数据处理装置的结构示意图;图8示出本公开一实施例的电子设备的结构示意图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。在基于lsm-tree结构的数据存储系统中,数据的存储格式为键值对(key-value)结构,value为数据的数据值,key值(关键字)为数据的索引参数。图1示出一种基于lsm-tree结构的数据存储系统的示意图。在图1所示的数据存储系统中,lsm-tree结构包括第一层级(高层级)中用于存储数据的数据表memtabel(memorytable),以及第二层级(低层级)中用于存储数据的数据表basetable。其中,memtabel具有可读写特性,basetable具有只读特性。当key-value数据写入时,都是先写入第一层级中的memtabel。当第一层级中memtable的数据量超过阈值时,将该memtable与第二层级中的basetable进行合并,得到第二层级中新的basetable,以及在第一层级中生成新的空的memtale继续进行数据写入。写入lsm-tree结构中的数据分层存储,关键字相同的数据可以存储在不同层级的数据表中,存储在较高层级数据表中的数据相对于存储在较低层级数据表中的数据为新数据。也即,若memtable和basetable中存在关键字相同的数据,memtable中该关键字对应的数据相对于basetable中该关键字对应的数据为新数据,在memtable与basetable合并时,memtable中该关键字对应的数据覆盖basetable中该关键字对应的数据。正如
背景技术
:部分陈述的,由于memtable与basetable的合并可能会导致存储关键字对应的数据的内存地址发生变化,因此,在访问lsm-tree结构时,需要每次根据关键字进行资源定位,确定存储该关键字对应的数据的内存地址,进而根据该内存地址执行读操作或写操作等数据处理操作之后释放该内存地址。这种每次根据关键字进行资源定位的访问方式受限于数据存储系统的规模,当数据存储系统规模较大时,lsm-tree结构的访问速度较低,进而导致数据处理效率下降。本公开提供的数据处理方法可以应用于图1所示的基于lsm-tree结构的数据存储系统,以提高lsm-tree结构的访问速度,进而有效提高数据处理效率。下面详细介绍本公开提供的数据处理方法。图2示出本公开一实施例的数据处理方法的流程示意图。图2所示的方法可以应用于基于lsm-tree结构的数据存储系统,该方法可以包括:步骤21,接收包含目标关键字的数据处理请求,数据处理请求用于请求对与目标关键字对应的目标数据执行数据处理操作。步骤22,通过与目标关键字对应的句柄,对目标数据执行数据处理操作,句柄中包括用于指向目标数据的指针。在lsm-tree结构中创建全局句柄链表,该全局句柄链表中存储有lsm-tree结构中创建的所有句柄。每个句柄中包括关键字,以及用于指向关键字对应的数据的指针,使得可以通过与关键字对应的句柄,直接对关键字对应的数据执行数据处理操作,而无需进行资源定位。在一种可能的实现方式中,句柄中的指针包括读指针和写指针。图3示出本公开一实施例的lsm-tree结构的示意图。如图3所示,lsm-tree结构中包括第一层级(高层级)的memtabel、第二层级(低层级)的basetable,以及全局句柄链表。全局句柄链表中包括第一关键字对应的句柄a和第二关键字对应的句柄b。memtabel中包括:第一关键字对应的数据a以及第二关键字对应的数据b。basetable中包括:第一关键字对应的数据c以及第三关键字对应的数据d。句柄a中包括:第一关键字、读指针和写指针,其中,句柄a中的读指针和写指针均指向memtabel中第一关键字对应的数据a,即通过句柄a中的读指针和写指针可以直接访问数据a,进而对数据a执行数据处理操作。句柄b中包括:第二关键字、读指针和写指针,其中,句柄b中的读指针和写指针均指向memtabel中第二关键字对应的数据b,即通过句柄b中的读指针和写指针可以直接访问数据b,进而对数据b执行数据处理操作。在一种可能的实现方式中,可以针对lsm-tree结构中访问率较高的热数据,创建该热数据对应的句柄,即创建该热数据的关键字对应的句柄,以提高热数据的访问速度。除了可以为lsm-tree结构中的热数据创建句柄之外,还可以根据实际需要,为lsm-tree结构中其它数据创建句柄,本公开对此不作具体限定。在一种可能的实现方式中,lsm-tree结构至少包括第一层级和第二层级,第一层级中的数据具有可读写特性,第二层级中的数据具有只读特性;当第一层级中数据表的数据量超过阈值时,将该数据表的层级确定为第三层级,以及生成新的空数据表并将该空数据表的层级设置为第一层级,第三层级中的数据具有只读特性;将第三层级中的数据合并至第二层级。阈值可以根据实际情况进行设置,本公开对此不作具体限定。仍以上述图3为例,若图3的memtabel中的数据量超过阈值,则需要执行图4所示的数据合并。图4示出本公开一实施例的lsm-tree结构中的数据合并示意图。如图4所示,将数据量超过阈值的memtabel的层级由第一层级设置为第三层级,即将数据量超过阈值的memtabel变更为第三层级中的数据表immutable(immutabletable),以及在第一层级中生成新的空memtable以用于后续数据写入,其中,第三层级位于第一层级和第二层级之间,第三层级中的数据具有只读特性。将immutable与basetable进行数据合并得到第二层级中的新的basetable。由于immutable中第一关键字对应的数据a相对于basetable中第一关键字对应的数据c为新数据,因此,在数据合并过程中,immutable中第一关键字对应的数据a覆盖basetable中第一关键字对应的数据c。在得到的新的basetable中,包括:第一关键字对应的数据a、第二关键字对应的数据b,以及第三关键字对应的数据d。在一种可能的实现方式中,通过与目标关键字对应的句柄,对目标数据执行数据处理操作,包括:判断指针是否有效;当确定指针有效时,通过指针对目标数据执行数据处理操作。在一种可能的实现方式中,还包括:当确定指针无效时,根据目标关键字在数据存储系统中进行资源定位,查找目标数据;根据查找结果对指针进行重新赋值;通过重新赋值后的指针对目标数据执行数据处理操作。当与目标关键字对应的句柄中的指针有效时,表示lsm-tree结构中未发生数据合并,即可以通过该指针直接对目标数据进行访问以及执行数据处理操作;当与目标关键字对应的句柄中的指针无效时,表示lsm-tree结构中发生了数据合并,目标关键字对应的数据的内存地址发生了变化,该指针无法准确指向目标数据,此时,需要根据目标关键字重新进行资源定位查找目标数据之后,对该指针重新赋值,进而可以通过该指针对目标数据进行访问以及执行数据处理操作。判断指针是否有效的方式包括但不限于下述两种方式。第一种:在一种可能的实现方式中,当第一层级中数据表为空,且第三层级中的数据未合并至第二层级时,将写指针设置为空指针;当第三层级中的数据合并至第二层级之后,且写指针为空指针时,将读指针设置为空指针。在一种可能的实现方式中,判断指针是否有效,包括下述至少一个步骤:当读指针为非空指针时,确定读指针有效;当写指针为非空指针时,确定写指针有效。lsm-tree结构中执行immutable与basetable的数据合并的过程中,同步对全局句柄链表中每个句柄内的指针进行更新。在数据量超过阈值的memtabel变更为immutable,以及生成新的空的memtable之后,且immutable与basetable进行数据合并之前,由于imuutable具有只读性,此时,遍历全局句柄链表,将全局句柄链表中每个句柄中的写指针设置为空指针,读指针不变。即针对于任一句柄,仅可以通过句柄中的读指针直接执行数据访问以及数据处理操作,而无法通过句柄中的写指针直接执行数据访问以及数据处理操作。在immutable与basetable进行数据合并之后,数据的内存地址发生了变化,此时,遍历全局句柄链表,针对全局句柄链表中的任一句柄:若该句柄中的写指针仍为空指针,表示lsm-tree结构中未通过该句柄中的关键字进行资源定位对写指针进行过重新赋值,此时,将该句柄中的读指针设置为空指针,即无法通过该句柄中的读指针和写指针直接执行数据访问以及数据处理操作;若该句柄中的写指针为非空指针,表示lsm-tree结构中已经通过该句柄中的关键字进行资源定位对写指针进行过重新赋值,此时,无需对句柄中的读指针和写指针进行更新,即可以通过该句柄中的读指针和写指针直接执行数据访问以及数据处理操作。仍以上述图4为例,在执行图4所示的数据合并的过程中,图5示出本公开一实施例的更新句柄中指针的示意图。如图5所示,在数据量超过阈值的memtabel变更为immutable,以及生成新的空的memtable,且immutable与basetable进行数据合并之前,遍历全局句柄链表,将句柄a和句柄b中的写指针设置为空指针,读指针不变。句柄a中的写指针设置为空指针,表示该写指针是无效的,即无法通过句柄a中的写指针来对immutable中的数据a进行访问以及执行数据处理操作,此时,仍然可以通过句柄内a中的读指针来对immutable中的数据a进行访问以及执行数据处理操作。句柄b中的写指针设置为空指针,表示该写指针是无效的,即无法通过句柄b中的写指针来对immutable中的数据b进行访问以及执行数据处理操作,此时,仍然可以通过句柄内b中的读指针来对immutable中的数据b进行访问以及执行数据处理操作。在immutable与basetable进行数据合并之后,遍历全局句柄链表,将句柄a和句柄b中的读指针设置为空指针。句柄a中的读指针和写指针均被设置为空指针,即句柄a中的读指针和写指针均是无效的,此时,句柄a中的读指针和写指针均无法直接对basetable中的数据a进行访问以及执行数据处理操作。句柄b中的读指针和写指针均被设置为空指针,即句柄b中的读指针和写指针均是无效的,此时,句柄b中的读指针和写指针均无法直接对basetable中的数据b进行访问以及执行数据处理操作。由于lsm-tree结构中执行immutable与basetable的数据合并的过程中,同步对全局句柄链表中每个句柄内的指针进行了更新,使得在接收到包含目标关键字的数据处理请求后,可以通过判断与目标关键字对应的句柄内的指针是否为非空指针,来确定与目标关键字对应的句柄内的指针是否有效,并在确定与目标关键字对应的句柄内的指针有效时,通过与目标关键字对应的句柄内的指针直接对目标数据进行访问以及执行数据处理操作,而无需通过资源定位在lsm-tree结构中查找目标数据,从而提高了lsm-tree结构的访问速度,进而提高了数据处理效率。第二种:在一种可能的实现方式中,句柄中还包括第一标识,lsm-tree结构中包括第二标识,在第三层级中的数据合并至第二层级之前,第一标识和第二标识相同;当第三层级中的数据合并至第二层级之后,更新第二标识,更新后的第二标识与第一标识不相同。在一种可能的实现方式中,根据目标关键字在数据存储系统中进行资源定位之后,更新第一标识,更新后的第一标识与第二标识相同。在一种可能的实现方式中,指针包括读指针和写指针;判断指针是否有效,包括:当第一标识和第二标识相同时,确定读指针和写指针有效。在一种可能的实现方式中,第一标识为第一序列号,第二标识为第二序列号。lsm-tree结构中执行immutable与basetable的数据合并的过程中,同步对lsm-tree结构中的第二序列号进行更新。在memtabel中数据量小于阈值时,或在数据量超过阈值的memtabel变更为immutable,以及生成新的空的memtable之后,且immutable与basetable进行数据合并之前,句柄中的第一序列号与lsm-tree结构中的第二序列号相同。在immutable与basetable进行数据合并之后,数据的内存地址发生了变化,递增第二序列号,例如,将第二序列号加1。此时,第一序列号与第二序列号不相同。在根据句柄中的关键字在数据存储系统中进行资源定位并对句柄中的指针进行重新赋值之后,更新句柄中的第一序列号,以使得句柄中更新后的的第一序列号与lsm-tree中的第二序列号相同,即句柄中的指针变为有效。仍以上述图4为例,在执行图4所示的数据合并的过程中,图6示出本公开一实施例的更新lsm-tree中第二序列号的示意图。如图6所示,在数据量超过阈值的memtabel变更为immutable,以及生成新的空的memtable,且immutable与basetable进行数据合并之前,句柄a中的第一序列号、句柄b中的第一序列号与lsm-tree中的第二序列号均为003。在immutable与basetable进行数据合并之后,递增第二序列号,第二序列号变为004。句柄a中的第一序列号003与lsm-tree中的第二序列号004不相同,即句柄a中的读指针和写指针均是无效的,此时,句柄a中的读指针和写指针均无法直接对basetable中的数据a进行访问以及执行数据处理操作。句柄b中的第一序列号003与lsm-tree中的第二序列号004不相同,即句柄b中的读指针和写指针均是无效的,此时,句柄b中的读指针和写指针均无法直接对basetable中的数据b进行访问以及执行数据处理操作。第一标识和第二标识除了可以是序列号之外,还可以是其它标识,本公开对此不做具体限定。由于lsm-tree结构中执行immutable与basetable的数据合并的过程中,同步对lsm-tree结构中的第二标识进行了更新,使得在接收到包含目标关键字的数据处理请求后,可以通过判断与目标关键字对应的句柄内的第一标识与lsm-tree结构中的第二标识是否相同,来确定与目标关键字对应的句柄内的指针是否有效,在确定与目标关键字对应的句柄内的指针有效时,通过与目标关键字对应的句柄内的指针直接对目标数据进行访问以及执行数据处理操作,无需通过资源定位在lsm-tree结构中查找与目标关键字对应的目标数据,从而提高了lsm-tree结构的访问速度,进而提高了数据处理效率。在一种可能的实现方式中,当确定指针有效时,通过指针对目标数据执行数据处理操作,包括下述至少一个步骤:对读指针指向的目标数据进行读取;对写指针指向的目标数据进行修改。当与目标关键字对应的句柄中的读指针为有效时,可以通过该读指针直接读取目标数据;当与目标关键字对应的句柄中的写指针为有效时,可以通过该写指针直接对目标数据进行修改。当确定与目标关键字对应的句柄中的指针无效时,根据目标关键字在数据存储系统中进行资源定位,查找目标数据,以及根据查找结果对与目标关键字对应的句柄中的指针进行重新赋值,进而通过重新赋值后的该指针对目标数据执行数据处理操作。根据目标关键字在数据存储系统中进行资源定位,查找目标数据的过程为:步骤1,根据目标关键字,在memtable中查找目标数据,若查找到,则确定目标数据的内存地址,若未查找到,则继续执行步骤2;步骤2,若lsm-tree结构中存在immutable,则执行步骤3,否则执行步骤4;步骤3,根据目标关键字,在immutable中查找目标数据,若查找到,则确定目标数据的内存地址,若未查找到,继续执行步骤4;步骤4,根据目标关键字,在basetable中查找目标数据,若查找到,则确定目标数据的内存地址,若未查找到,则确定lsm-tree结构中未存储目标数据。在一种可能的实现方式中,根据查找结果对指针进行重新赋值,包括:若查找到目标数据,则将目标数据的内存地址赋值给读指针。在一种可能的实现方式中,通过重新赋值后的指针对目标数据执行数据处理操作,包括:对重新赋值后的读指针指向的目标数据进行读取。根据目标关键字在数据存储系统中进行资源定位查找到目标数据之后,将目标数据的内存地址赋值给与目标关键字对应的句柄中的读指针,使得在lsm-tree结构中下一次执行immutable与basetable的数据合并之前,均可以通过与目标关键字对应的句柄中的读指针对目标数据进行直接读取,而无需再次进行资源定位,有效提高了目标数据的访问速度和处理效率。在一种可能的实现方式中,根据查找结果对指针进行重新赋值,包括:若查找到目标数据,则将目标数据复制到第一层级;将所述目标数据在第一层级中的内存地址赋值给写指针。在一种可能的实现方式中,通过重新赋值后的指针对目标数据执行数据处理操作,包括:对重新赋值后的写指针指向的目标数据进行修改。由于只有memtable具有可写特性,使得可以根据目标关键字在数据存储系统中进行资源定位查找到目标数据之后,将目标数据复制到memtable中,进而将目标数据在memtable中的内存地址赋值给与目标关键字对应的句柄中的写指针,使得在lsm-tree结构中下一次执行immutable与basetable的数据合并之前,均可以通过与目标关键字对应的句柄中的写指针直接对目标数据进行修改,而无需再次进行资源定位,有效提高了目标数据的访问速度和处理效率。在一种可能的实现方式中,根据查找结果对指针进行重新赋值,包括:若未查找到目标数据,则在第一层级中创建一个空的内存资源;将空的内存资源的内存地址赋值给读指针和写指针。根据目标关键字在数据存储系统中进行资源定位之后,若未查找到目标数据,表示数据存储系统中未存储目标数据,此时,在memtable中创建一个空的内存资源,进而将该空的内存资源的内存地址赋值给与目标关键字对应的句柄中的读指针和写指针,使得后续可以根据与目标关键字对应的句柄中的读指针直接确定数据存储系统中未存储目标数据,而无需再次进行资源定位,或者可以根据与目标关键字对应的句柄中的写指针直接向该内存资源中写入目标数据。在一种可能的实现方式中,通过重新赋值后的指针对目标数据执行数据处理操作,包括:在重新赋值后的写指针指向的空的内存资源中写入目标数据。在基于lsm-tree结构的数据存储系统中,接收包含目标关键字的数据处理请求,数据处理请求用于请求对与目标关键字对应的目标数据执行数据处理操作;进而通过与目标关键字对应的句柄,对目标数据执行数据处理操作,句柄中包括用于指向目标数据的指针。在lsm-tree结构中设置与关键字对应的句柄,通过与关键字对应的句柄直接访问lsm-tree结构中与关键字对应的数据以执行数据处理操作,使得可以提高lsm-tree结构的访问速度,进而可以有效提高数据处理效率。图7示出本公开一实施例的数据处理装置的结构示意图。图7所示的装置70可以应用于基于lsm-tree结构的数据存储系统,并可以用于执行上述图2所示方法实施例的步骤,装置70包括:接收模块71,用于接收包含目标关键字的数据处理请求,数据处理请求用于请求对与目标关键字对应的目标数据执行数据处理操作;数据处理模块72,用于通过与目标关键字对应的句柄,对目标数据执行数据处理操作,句柄中包括用于指向目标数据的指针。在一种可能的实现方式中,数据处理模块72包括:判断子模块,用于判断指针是否有效;数据处理子模块,用于当确定指针有效时,通过指针对目标数据执行数据处理操作。在一种可能的实现方式中,数据处理模块72还包括:查找子模块,用于当确定指针无效时,根据目标关键字在数据存储系统中进行资源定位,查找目标数据;指针赋值子模块,用于根据查找结果对指针进行重新赋值;数据处理子模块,还用于通过重新赋值后的指针对目标数据执行数据处理操作。在一种可能的实现方式中,lsm-tree结构至少包括第一层级和第二层级,第一层级中的数据具有可读写特性,第二层级中的数据具有只读特性;装置70还包括:生成模块,用于当第一层级中数据表的数据量超过阈值时,将该数据表的层级确定为第三层级,以及生成新的空数据表并将该空数据表的层级设置为第一层级,第三层级中的数据具有只读特性;合并模块,用于将第三层级中的数据合并至第二层级。在一种可能的实现方式中,指针包括读指针和写指针;装置70还包括:指针更新模块,用于当第一层级总数据表为空,且第三层级中的数据未合并至第二层级时,将写指针设置为空指针;指针更新模块,还用于当第三层级中的数据合并至第二层级之后,且写指针为空指针时,将读指针设置为空指针。在一种可能的实现方式中,判断子模块包括:读指针判断单元,用于当读指针为非空指针时,确定读指针有效;写指针判断单元,用于当写指针为非空指针时,确定写指针有效。在一种可能的实现方式中,句柄中还包括第一标识,lsm-tree结构中包括第二标识,在第三层级中的数据合并至第二层级之前,第一标识和第二标识相同;装置70还包括:标识更新模块,用于当第三层级中的数据合并至第二层级之后,更新第二标识,更新后的第二标识与第一标识不相同。在一种可能的实现方式中,指针包括读指针和写指针;判断模块子具体用于:当第一标识和第二标识相同时,确定读指针和写指针有效。在一种可能的实现方式中,标识更新单元,还用于根据目标关键字在数据存储系统中进行资源定位之后,更新第一标识,更新后的第一标识与第二标识相同。在一种可能的实现方式中,数据处理子模块包括:读取单元,用于对读指针指向的目标数据进行读取;修改单元,用于对写指针指向的目标数据进行修改。在一种可能的实现方式中,指针赋值模块子模块具体用于:若查找到目标数据,则将目标数据的内存地址赋值给读指针。在一种可能的实现方式中,读取单元还用于:对重新赋值后的读指针指向的目标数据进行读取。在一种可能的实现方式中,指针赋值模块子模块具体用于:若查找到目标数据,则将目标数据复制到第一层级;将目标数据在第一层级中的内存地址赋值给写指针。在一种可能的实现方式中,修改单元还用于:对重新赋值后的写指针指向的目标数据进行修改。在一种可能的实现方式中,指针赋值模块子模块具体用于:若未查找到目标数据,则在第一层级中创建一个空的内存资源;将空的内存资源的内存地址赋值给写指针。在一种可能的实现方式中,数据处理子模块还包括:写入单元,用于在重新赋值后的写指针指向的空的内存资源中写入目标数据。本公开提供的装置70能够实现图2所示方法实施例中的各个步骤,并实现相同的技术效果,为避免重复,这里不再赘述。图8示出本公开一实施例的电子设备的结构示意图。如图8所示,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。存储器,存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据处理装置。处理器,执行存储器所存放的程序,并具体执行:接收包含目标关键字的数据处理请求,数据处理请求用于请求对与目标关键字对应的目标数据执行数据处理操作;通过与目标关键字对应的句柄,对目标数据执行数据处理操作,句柄中包括用于指向目标数据的指针。在一种可能的实现方式中,处理器被具体配置为执行:判断指针是否有效;当确定指针有效时,通过指针对目标数据执行数据处理操作。在一种可能的实现方式中,处理器被具体配置为执行:当确定指针无效时,根据目标关键字在数据存储系统中进行资源定位,查找目标数据;根据查找结果对指针进行重新赋值;通过重新赋值后的指针对目标数据执行数据处理操作。在一种可能的实现方式中,lsm-tree结构至少包括第一层级和第二层级,第一层级中的数据具有可读写特性,第二层级中的数据具有只读特性;处理器被具体配置为执行:当第一层级中数据表的数据量超过阈值时,将该数据表的层级确定为第三层级,以及生成新的空数据表并将该空数据表的层级设置为第一层级,第三层级中的数据具有只读特性;将第三层级中的数据合并至第第二层级。在一种可能的实现方式中,所述指针包括读指针和写指针;处理器被具体配置为执行:当第一层级中数据表为空,且第三层级中的数据未合并至第二层级时,将写指针设置为空指针;当第三层级中的数据合并至第二层级之后,且写指针为空指针时,将读指针设置为空指针。在一种可能的实现方式中,处理器被具体配置为执行:当读指针为非空指针时,确定读指针有效;当写指针为非空指针时,确定写指针有效。在一种可能的实现方式中,句柄中还包括第一标识,lsm-tree结构中包括第二标识,在第三层级中的数据合并至第二层级之前,第一标识和第二标识相同;处理器被具体配置为执行:当第三层级中的数据合并至第二层级之后,更新第二标识,更新后的第二标识与第一标识不相同。在一种可能的实现方式中,指针包括读指针和写指针;处理器被具体配置为执行:当第一标识和第二标识相同时,确定读指针和写指针有效。在一种可能的实现方式中,处理器被具体配置为执行:根据目标关键字在数据存储系统中进行资源定位之后,更新第一标识,更新后的第一标识与第二标识相同。在一种可能的实现方式中,处理器被具体配置为执行:对读指针指向的目标数据进行读取;对写指针指向的目标数据进行修改。在一种可能的实现方式中,处理器被具体配置为执行:若查找到目标数据,则将目标数据的内存地址赋值给读指针。在一种可能的实现方式中,处理器被具体配置为执行:对重新赋值后的读指针指向的目标数据进行读取。在一种可能的实现方式中,处理器被具体配置为执行:若查找到目标数据,则将目标数据复制到第一层级;将目标数据在第一层级中的内存地址赋值给写指针。在一种可能的实现方式中,处理器被具体配置为执行:对重新赋值后的写指针指向的目标数据进行修改。在一种可能的实现方式中,处理器被具体配置为执行:若未查找到目标数据,则在第一层级中创建一个空的内存资源;将空的内存资源的内存地址赋值给写指针。在一种可能的实现方式中,处理器被具体配置为执行:在重新赋值后的写指针指向的空的内存资源中写入目标数据。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。该电子设备可执行图2所示方法实施例执行的方法,并实现上述图2所示方法实施例的功能,本说明书实施例在此不再赘述。本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图2所示实施例中的数据处理方法,并具体执行图2所示方法实施例的步骤。本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1