一种大字段数据的处理方法及装置与流程

文档序号:11830453阅读:306来源:国知局
一种大字段数据的处理方法及装置与流程

本发明实施例涉及数据库相关技术领域,尤其涉及一种大字段数据的处理方法及装置。



背景技术:

大字段是数据库中的一种数据类型,以大字段类型进行存储的数据成为大字段数据,一般地,以大字段类型存储的数据可以分为两类:一类是长文本,普通的文本类型最多只能存储4000个汉字,而基于大字段类型存储的长文本远可以大于4000字;另一类是二进制信息,如图片或者文件等。与其他数据类型相比,大字段需要采用特殊的存储方式。

因为大字段数据的大小一般都很大,甚至大于数据库规定的最大行大小。这就意味着很多大字段数据无法直接在存储在数据库表中行单元中。现有存储大字段数据的方法中,通常是为大字段数据专门定义一种数据页的页类型,称为大字段数据页,以用该类型的数据页独立存储大字段数据。具体的,根据大字段数据的数据量大小,可能会用到一个或多个大字段数据页来存储一个大字段数据,大字段数据顺序的存储在这些大字段数据页中;然后,这些大字段数据页按照顺序通过页头中记录的前页及后页的地址连接起来形成一个数据页的数据页链表,该数据页链表的第一页称为数据首页,且该数据首页的页地址和大字段数据的数据ID存放在数据库表的行记录中。

基于上述大字段数据的独立存储方法存储大字段数据后,如果要对大字段数据中指定数据进行插入、修改等处理操作,首先需要定位到指定数据在大字段数据页中的具体位置。其定位过程可概括为:首先基于行记录中数据首页的页地址确定存储该大字段数据的数据页链表的数据首页,然后从数据页链表的数据首页开始逐个获取大字段数据页以进行偏移检查,直到定位到指定数据所在的大字段数据页,并确定指定数据大字段数据页中的具体位置,后续再对该数据页进行处理。然而,对基于独立存储方法存储的大字段数据通过上述定位方法确定要处理的指定数据时,在找到上述指定数据的所在页之前,还会对其他大字段数据页的内容进行遍历,但是对其他大字段数据页遍历时所进行的输入输出均是多余操作的,很大程度影响了大字段数据的处理效率,由此可知基于独立存储方法所存储大字段数据,在对大字段数据进行处理时并不能满足实际的应用要求。



技术实现要素:

本发明的目的是提出一种大字段数据的处理方法及装置,以实现对大字段数据的优化处理,提高对大字段数据的整体处理效率。

一方面,本发明实施例提供了一种大字段数据的处理方法,该处理方法包括:

接收对大字段数据进行处理的处理指令,其中,所述大字段数据分片式存储于指定数据库表中;

确定存储所述大字段数据的数据页形成的数据页链表,并根据所述处理指令在所述数据页链表中对所述大字段数据进行处理,其中,所述数据页链表中存在一个大字段控制页,所述大字段控制页中包含分片式存储所述大字段数据时形成的分片信息。

另一方面,本发明实施例还提供了一种大字段数据的处理装置,该处理装置包括:

指令接收模块,用于接收对大字段数据进行处理的处理指令,其中,所述大字段数据分片式存储于指定数据库表中;

数据处理模块,用于确定存储所述大字段数据的数据页形成的数据页链表,并根据所述处理指令在所述数据页链表中对所述大字段数据进行处理,其中,所述数据页链表中存在一个大字段控制页,所述大字段控制页中包含分片式存储所述大字段数据时形成的分片信息。

本发明实施例提供了一种大字段数据的处理方法及装置,该处理方法可概括为:首先接收对分片式存储于指定数据库表中的大字段数据进行处理的处理指令;确定存储所述大字段数据的数据页形成的数据页链表,并根据所述处理指令在所述数据页链表中对所述大字段数据进行处理。利用该处理方法,由于待处理的大字段数据在指定数据库表中为分片式存储,所以对待处理的大字段数据进行处理时,能够基于分片式存储对应的定位手段快速定位待处理数据在数据页链表中的具体位置,与现有处理方法相比,很大程度减少了处理过程中对数据页遍历的遍历数量,由此降低了大字段数据处理时的输入输出代价,从而提高了大字段数据处理的整体处理效率。

附图说明

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

图2为本发明实施例二提供的一种大字段数据的处理方法的流程示意图;

图3为本发明实施例三提供的一种大字段数据的处理方法的流程示意图;

图4为本发明实施例四提供的一种大字段数据的处理装置的结构框图。

具体实施方式

下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种大字段数据的处理方法的流程示意图。该方法适用于对大字段数据进行处理的情况,可以由大字段数据的处理装置执行,其中该装置可由软件和/或硬件实现,并一般集成于数据库管理系统中。

如图1所示,本发明实施例一提供的一种大字段数据的处理方法,具体包括如下操作:

S101、接收对大字段数据进行处理的处理指令,其中,所述大字段数据分片式存储于指定数据库表中。

在本实施例中,所述大字段数据具体可理解为存储于所述指定数据库表中的数据类型为大字段的列所对应的数据,如长文本、图片或者文件等,其中,对所述大字段数据的处理并不直接在所属列对应的行单元中进行,可以基于本发明实施例提供的大字段数据的处理方法进行。在本实施例中,所述指定数据库表具体可理解为创建于数据库中的,且包含数据类型为大字段的列的任一基本表。

一般地,对存储于所述指定数据库表中的大字段数据进行处理之前,需要先接收处理所述大字段数据的处理指令。具体的,所述处理指令可以包括在大字段数据中插入新数据的插入指令、修改大字段数据中指定数据的修改指令、以及删除大字段数据中部分数据的删除指令等。

在本实施例中,所述分片式存储具体可理解为基于大字段数据页存储所述大字段数据,并对存储所述大字段数据的大字段数据页在逻辑上进行分片划分的过程。具体的,在所述分片式存储中,可以形成至少一个分片,且每个分片会形成相应的单片信息,基于这些单片信息可以形成分片式存储的分片信息。

S102、确定存储所述大字段数据的数据页形成的数据页链表,并根据所述处理指令在所述数据页链表中对所述大字段数据进行处理,其中,所述数据页链表中存在一个大字段控制页,所述大字段控制页中包含分片式存储所述大字段数据时形成的分片信息。

在本实施例中,对于分片式存储的大字段数据而言,也会对应存在一个数据页链表,然而,所述数据页链表的数据结构与基于现有处理方法确定的数据页链表的数据结构不同,本实施例中确定出的数据页链表中除包含存储所述大字段数据所用的大字段数据页之外,还包括了大字段控制页,所述大字段控制页具体可用于记录分片式存储所述大字段数据时所形成分片信息。一般的,所述大字段控制页逻辑上位于数据页链表中首个大字段数据页的前面,即,所述首个大字段数据页的页头中记录的前页地址就是所述大字段控制页的页地址。

在本实施例中,确定出所述数据页链表后,就可以根据所述处理指令对存储于所述指定数据库表中的大字段数据进行相应的处理。其处理过程可概括为:首先确定所述大字段数据所属的数据页链表,然后基于分片式存储对应的定位手段在所述数据页链表中定位所述大字段数据具体所在的大字段数据页,最终确定待处理大字段数据在所述大字段数据页中的具体位置并进行相应的处理操作。即,本发明实施例提供的大字段数据的处理方法主要用于处理存储方式为分片式存储的大字段数据。

进一步的,所述分片信息包括:大字段数据的总字符数、总字节数、分片个数以及各分片对应的单片信息;所述单片信息包括:当前分片中首个大字段数据页的页地址以及当前分片中所包含的字符总数、字节总数和大字段数据页的个数。

在本实施例中,所述大字段数据的总字符数及总字节数具体可指已存储到所述指定数据库表相应存储位置的大字段数据的字符数以及字节数;所述分片个数具体可指对存储大字段数据的大字段数据页进行分片时可得到分片的个数。

在本实施例中,存储大字段数据的大字段数据页能够基于页头中所记录的前、后页的页地址形成数据页链表,对大字段数据页进行分片存储实际上可理解为基于大字段数据页之间的前后页的链接关系在逻辑上进行的分片划分,且每个分片对应形成一个单片信息,各单片信息组成了大字段数据的分片信息,通过所形成的分片信息可以在指定数据库表中定位所述大字段数据所属的分片以及具体所属大字段数据页。

本发明实施例提供了一种大字段数据的处理方法,利用该处理方法,由于确定了待处理的大字段数据在指定数据库表中为分片式存储,所以对待处理的大字段数据进行处理时,能够基于分片式存储对应的定位手段快速定位待处理数据在数据页链表中的具体位置,与现有处理方法相比,很大程度减少了处理过程中对数据页遍历的遍历数量,由此降低了大字段数据处理时的输入输出代价,从而提高了大字段数据处理的整体处理效率。

实施例二

图2为本发明实施例二提供的一种大字段数据的处理方法的流程示意图。本发明实施例二以上述实施例为基础进行优化,在本实施例中,该处理方法还优化包括了:在所述指定数据库表中分片式存储所述大字段数据。

在上述优化的基础上,进一步将“在所述指定数据库表中分片式存储所述大字段数据”优化为:a、接收存储所述大字段数据的存储指令,获取当前待存储的大字段数据;b、基于所述存储指令确定所述指定数据库表中是否存在与所述大字段数据对应的数据页链表,若是,则执行步骤c;若否,则执行步骤d;c、获取所述数据页链表的大字段控制页中的存储内容,并将所述存储内容记录于创建的分片信息中之后执行步骤e;d、为所述大字段数据分配一个数据标识,创建并初始化一个分片信息,之后执行步骤e,其中,所述分片信息初始化为空;e、基于所述分片信息对所述大字段数据进行分片式存储,并进行分片信息更新;f、如果基于步骤b确定已存在数据页链表,则将更新后的分片信息写入所述数据页链表的大字段控制页中并结束;否则,将所述分片信息写入新分配的大字段控制页中,并将所述大字段控制页加入到新形成的数据页链表中;g、如果所述大字段数据在所述指定数据库表中的行记录为空,则将所述大字段数据的数据标识以及所述数据页链表中首个大字段数据页的页地址写入所述指定数据库表的指定行中,形成所述大字段数据的行记录。

如图2所示,本发明实施例二提供的一种大字段数据的处理方法,具体包括如下操作:

在本实施例中,对所述待处理的大字段数据进行处理前,需要将所述大字段数据先存储于所述指定数据库表中,由此在本发明实施例提供的大字段数据的处理方法中,还增加将所述大字段数据分片式存储到所述指定数据库表中的操作。在本实施例中,对于大字段数据尤其是数据量较大的大字段数据而言,为了提高对所述大字段数据的处理效率,需要对所述大字段数据进行分片式存储,其分片式存储所述大字段数据的操作步骤如S201~S207所示。

此外,需要说明的是,如果大字段数据的数据量很大,则在对大字段数据进行存储时,不会一次将待存储的大字段数据发送到数据库管理系统,而是分批发送,因此,需要对分批发送的部分大字段数据进行分批存储。

S201、接收存储所述大字段数据的存储指令,获取当前待存储的大字段数据。

在本实施例中,可以根据所接收的存储指令来实现对所述当前待存储的大字段数据的存储。

S202、基于所述存储指令确定所述指定数据库表中是否存在与所述大字段数据对应的数据页链表,若是,则执行步骤S203;若否,则执行步骤S204。

在本实施例中,在步骤S201之后,基于所述存储指令中包含的存储位置,可以确定所述大字段数据在所述指定数据库表中的行数据,其中,所述存储位置包括在所述指定数据库表中存储所述大字段数据时所指定的列信息和行信息。

在本实施例中,在确定出当前待存储的大字段数据在指定数据库表中的行数据后,确定所述行数据中是否存在相应的数据标识和数据页链表数据首页地址信息,如果已存在,则表明在存储当前待存储的大字段数据之前,所述存储位置中已存储有大字段数据,由此可以认为当前待存储的大字段数据仅是后续要存储的部分大字段数据,此时,需要执行步骤S203;如果当前待存储所述大字段数据对应的存储位置不存在相应的数据页链表,则可以认为确定出的存储位置中还没有大字段数据存入,此时,需要执行步骤S204。

需要说明的是,在本实施例中,存储在指定数据库表中同一个存储位置上的大字段数据所具有的数据标识相同,其中,所述数据标识可用于同存储在其他存储位置上的大字段数据进行区分。

S203、获取所述数据页链表的大字段控制页中的存储内容,并将所述存储内容记录于创建的分片信息中,之后执行步骤S205。

在本实施例中,如果当前待存储的大字段数据在指定数据库表中指定的存储位置已存在分片式存储的大字段数据,并且在所述数据页链表的大字段控制页中记录了了分片式存储所述大字段数据时分片信息,作为所述大字段控制页的存储内容。此时,如果需要分片式存储所述当前待存储的大字段数据,则需要获取所述数据页链表的大字段控制页中的存储内容,且在对当前待存储的大字段数据进行分片式存储时,为了便于更新所述大字段控制页中的存储内容,将所述存储内容记录于分片信息中。

S204、为所述大字段数据分配一个数据标识,创建并初始化一个分片信息,之后执行步骤S205,其中,所述分片信息初始化为空。

在本实施例中,如果当前待存储的大字段数据在指定数据库表中指定的存储位置上还没有大字段数据存入,此时,需要为当前待存储的大字段数据分配一个数据标识,所述数据标识可以作为同一存储位置的唯一标识,即,如果大字段数据存储在同一指定位置,则可认为这些大字段数据的数据标识相同。

在本实施例中,为所述大字段数据分配一个数据标识之后,还需要创建一个分片信息用于记录所述大字段控制页中的存储内容,且新创建的分片信息中初始化为空。

S205、基于所述分片信息对所述大字段数据进行分片式存储,并进行分片信息更新。

在本实施例中,基于上述步骤S203或步骤S204确定出用于记录所述存储内容的分片信息之后,就可以基于分片信息对当前待存储的大字段数据进行分片式存储,此外,在进行分片式存储后,还可以对所述分片信息进行更新。

进一步的,基于所述分片信息对所述大字段数据进行分片式存储,并进行分片信息更新,包括:

a、确定所述分片信息中记录的分片个数是否为0,若是,记所述大字段数据为待存储数据,创建并初始化临时分片信息,之后执行步骤d;若否,则执行步骤b。

在本实施例中,在基于所述分片信息对所述大字段数据进行分片式存储的过程中,首先确定分片信息中记录的分片个数是否为0,如果所述分片个数为0,则表明所述分片信息为空,此时,对所述大字段数据进行分片式存储时可以将所述大字段数据记为待存储数据,然后创建临时分片信息并进行初始化,所述临时分片信息用于待存储数据的后续操作,之后执行步骤d;如果所述分片个数不为0,则表明在当前待存储的大字段数据之前已经存在分片信息,需要执行步骤b。

b、确定所述分片信息中最后一个分片号对应的单片信息,并基于所述单片信息确定相应分片中所包含的最后一个大字段数据页。

在本实施例中,将当前待存储的大字段数据存储于指定数据库表的过程,可看作将当前待存储的大字段数据存储于指定大字段数据页的过程,具体的,所述指定大字段数据页位于数据页链表的最后一个分片中,且属于所述最后一个分片的最后一个大字段数据页,其中,所述最后一个大字段数据页可以基于所述分片信息确定,其确定过程如上述步骤b的描述。

c、如果所述最后一个大字段数据页中存在页剩余空间,则将所述大字段数据写入所述最后一个大字段数据页的页剩余空间,并确定所述大字段数据是否全部写入,若是,则直接对所述分片信息进行更新并结束;若否,记未写入的大字段数据为待存储数据,创建并初始化临时分片信息,之后执行步骤d。

在本实施例中,基于步骤b确定出所述最后一个大字段数据页后,就可以基于步骤c对当前待存储的大字段数据进行写入操作,如果所述大字段数据全部写入所述最后一个大字段数据页,则可直接对所述分片信息进行更新并结束大字段数据的写入操作;如果没有完全写入,则需要将剩余的大字段数据记作待存储数据,创建并初始化临时分片信息,之后执行步骤d。

d、分配一个新的大字段数据页,将所述待存储数据写入所述大字段数据页中,并将未写入到所述大字段数据页的大字段数据标记为待存储数据。

在本实施例中,所述步骤d可承接上述步骤a或步骤c来执行。

e、确定所述临时分片信息中是否存在单片信息,若是,则将所述临时分片信息中最后一个单片信息对应的分片确定为目标分片,之后执行步骤f;若否,则执行步骤g。

在本实施例中,所述临时分片信息是新创建的,主要用于记录临时所形成的单片信息,将待存储数据写入所述大字段数据页后,需要基于步骤e确定所述大字段数据页所属的目标分片。

f、如果所述目标分片满足添加新分片的条件,则执行步骤g;否则执行步骤h。

在本实施例中,添加新分片的条件一般设定为:现有的分片个数不超过预设的分片数且当前目标分片中的数据页数量已经超过了预设值。

g、创建一个分片作为目标分片,并对应形成单片信息,将所述单片信息加入到所述临时分片信息中,之后执行步骤h,其中,所述单片信息初始为空。

h、将所述大字段数据页加入到所述目标分片中,更新所述目标分片对应的单片信息,并更新所述临时分片信息。

在本实施例中,将所述大字段数据页加入到所述目标分片后,对于所述目标分片中的大字段数据页而言,可以通过构建大字段数据页之间前后页的逻辑关系,来形成一个分片中的数据页链。此外,可以确定在所述目标分片中所包含大字段数据页中的字符数和字节数,由此形成目标分片的单片信息。

在本实施例中,通常在将大字段数据写入新分配的大字段数据页之后,将大字段数据页加入到分片信息时直接对所述大字段数据页进行分片,这样可以省去再次遍历大字段数据页中数据信息的时间,由此也可以节省输入输出代价。

i、确定是否仍存在待存储数据,若是,则返回执行步骤d;若否,则执行步骤j。

在本实施例中,基于步骤e~步骤h对将新分配的大字段数据页加入到相应的分片后,需要确定是否还存在未存储的待存储数据,如果存在,则需要返回步骤d重新执行上述操作。

j、将所述临时分片信息描述的大字段数据与所述分片信息描述的大字段数据进行合并,以更新所述分片信息。

在本实施例中,因只使用一个大数据控制页来记录分片信息,所以分片信息中的分片个数是有上限的。在将大字段数据写入大字段数据页后,并不直接加入到原有的分片信息中,而是将其加入到所创建的临时分片信息中,由此避免了每次向分片信息添加大字段数据页时,在满足创建新分片的条件后对分片数据上限以及分片合并进行判断的操作,基于本实施例所提供的方法只需要在两个分片信息合并时进行一次检查即可;同时,因为基于当前所接收的存储指令获取到的待存储的大字段数据的数据量不是很大,所以分片数不会超过上限,由此避免了在临时分片信息中考虑当前分片数是否达到上限的判断操作,最终起到了简化操作的作用。

在本实施例中,所述临时分片信息包括:当前所包含的大字段数据的总字符数、总字节数、分片个数以及各分片的单片信息。在形成临时分片信息后,将临时分片信息描述的大字段数据与所述分片信息描述的大字段数据进行合并,由此实现分片信息的更新。

具体的,对所述分片信息的更新可表述为:将临时分片信息描述的大字段数据合并到所述分片信息描述的大字段数据中,形成新的分片信息大字段数据,此时,分片信息中的大字段数据的总字符数和总字节数都会发生变化,其中的分片个数也会发生变化。其中,当分片个数达到设定值时,需要对分片进行合并,一般地,会选取所包含大字段数据页数量较少的两个相邻的分片进行合并,通常将后一个分片中的大字段数据页合并到前一个分片中,其对应的单片信息也会相应的变化。需要说明的是,处于同一数据页链表中的多个分片之间,通常基于前一个分片中最后一个大字段数据页页与后一个分片中首个大字段数据页之间的逻辑关系,来建立任意相邻两分片之间的关系,此外,数据页链表中的分片通过各自的分片号进行区分。

S206、如果基于步骤S202确定已存在数据页链表,则将更新后的分片信息写入所述数据页链表的大字段控制页中并结束;否则,将所述分片信息写入新分配的大字段控制页中,并将所述大字段控制页加入到新形成的数据页链表中。

在本实施例中,当基于步骤S205对当前待存储的大字段数据进行分片式存储后并相应的进行分片信息更新后,会将更新后的分片信息写入大字段控制页中,作为更新后的大字段控制页的存储内容,然后,将所述大字段控制页和原数据页链表中已存在的大字段数据页及基于步骤S205新分配的大字段数据页一起形成新的数据页链表。

在本实施例中,所形成新的数据页链表与所述大字段数据的存储指令中包含的存储信息相对应,基于所述数据页链表,可进一步对所获取的下一分段的待存储大字段数据进行分片式存储,也可对已存储的大字段数据基于处理指令进行相应的处理操作。在所述数据页链表中,所述大字段控制页在逻辑上位于首个大字段数据页的前面,所述大字段控制页的页地址作为所述首个大字段数据页的前页地址记录于所述首个大字段数据页的页头中。

S207、如果所述大字段数据在所述指定数据库表中的行记录为空,则将所述大字段数据的数据标识以及所述数据页链表中首个大字段数据页的页地址写入所述指定数据库表的指定行中,形成所述大字段数据的行记录。

在本实施例中,如果步骤S201中所获取的当前待存储的大字段数据最初没有对应存在数据页链表,则可认为所述大字段数据在所述指定数据库表中的行记录为空,由此可基于步骤S207在所述指定数据库表的指定行中形成所述大字段数据的行记录。此后,可以基于所述行记录来确定所述大字段数据对应的数据页链表。

S208、接收对大字段数据进行处理的处理指令,其中,所述大字段数据分片式存储于指定数据库表中。

在本实施例中,基于步骤S201~步骤S207存储大字段数据之后,就可以接收到对大字段数据进行处理的处理指令。

S209、确定存储所述大字段数据的数据页形成的数据页链表,并根据所述处理指令在所述数据页链表中对所述大字段数据进行处理。

在本实施例中,所述数据页链表中存在一个大字段控制页,所述大字段控制页中包含分片式存储所述大字段数据时形成的分片信息。基于所述分片信息就可在数据页链表中定位待处理数据所在的位置,由此再基于所接收处理指令对待处理数据进行处理。

本发明实施例二提供的一种大字段数据的处理方法,优化增加了分片式存储大字段数据的操作步骤,利用该处理方法,保证了处理的大字段数据为分片式存储在指定数据库中,由此保证了能够基于分片式存储对应的定位手段快速定位待处理数据在数据页链表中的具体位置,与现有处理方法相比,很大程度减少了处理过程中对数据页遍历的遍历数量,由此降低了大字段数据处理时的输入输出代价,从而提高了大字段数据处理的整体处理效率。

实施例三

图3为本发明实施例三提供的一种大字段数据的处理方法的流程示意图。本发明实施例三以上述实施例为基础进行优化,在本实施例中,将“确定存储所述大字段数据的数据页形成的数据页链表,并根据所述处理指令在所述数据页链表中对所述大字段数据进行处理”具体优化为:基于所述大字段数据在所述指定数据库表中对应的行记录,确定分片式存储所述大字段数据的数据页形成的数据页链表;当所述处理指令为在所述大字段数据中插入新数据的插入指令时,在所述数据页链表中对所述大字段数据进行插入操作;当所述处理指令为删除所述大字段数据中的部分数据的删除指令时,在所述数据页链表中对所述大字段数据进行删除操作。

如图3所示,本发明实施例三提供的一种大字段数据的处理方法,具体包括如下操作:

S301、在指定数据库表中分片式存储所述大字段数据。

在本实施例中,步骤S301的具体实现过程已在上述实施例二中详细描述,这里不再赘述。

S302、接收对大字段数据进行处理的处理指令,其中,所述大字段数据分片式存储于指定数据库表中。

在本实施例中,步骤S302的具体实现过程已在上述实施例一和实施例二中详细描述,这里不再赘述。

S303、基于所述大字段数据在所述指定数据库表中对应的行记录,确定分片式存储所述大字段数据的数据页形成的数据页链表。

在本实施例中,分片式存储所述大字段数据后,可以基于所述指定数据库表中对应的行记录确定所述数据页链表。具体的,数据页链表的确定过程可表述为:基于所述大字段数据的数据标识确定所述大字段数据在数据库表中对应的行记录;之后基于行记录中所记录的首个大字段数据页的页地址确定所述首个大字段数据页的位置,由此确定出所述大字段数据对应的数据页链表。

在本实施例中,基于所接收处理指令的不同,所进行的处理操作就不相同,具体的,可以基于步骤S304对所述待处理的大字段数据进行插入操作;此外,还可以基于步骤S305进行相应的删除操作。

S304、当所述处理指令为在所述大字段数据中插入新数据的插入指令时,在所述数据页链表中对所述大字段数据进行插入操作。

在本实施例中,当接收到插入指令时,一般需要在所述大字段数据对应的数据页链表中插入新的大字段数据。需要说明的是,在确定所述大字段数据对应的数据页链表后,可以通过数据首页的页头中记录的前页地址,确定所述数据页链表中的大字段控制页。

进一步的,所述在所述数据页链表中对所述大字段数据进行插入操作,包括:

确定待插入数据在所述大字段数据中的整体偏移量;获取所述数据页链表的大字段控制页中的存储内容,并将所述存储内容记录于的分片信息中,基于所述整体偏移量以及所述分片信息,确定所述待插入数据所属的分片;基于所述分片对应的单片信息在所述分片内确定所述待插入数据所属的大字段数据页以及在所述大字段数据页内具体的插入位置;在所述插入位置对所述待插入数据进行插入操作。

在本实施例中,可以通过所接收的插入指令确定待插入数据在所述大字段数据中的整体偏移量;在确定所述大字段数据对应的数据页链表后,可以通过数据首页的页头中记录的前页地址,确定所述数据页链表的大字段控制页,由此可获得所述大字段控制页中的存储内容,并将所述存储内容记录于分片信息中。

在本实施例中,步骤“基于所述整体偏移量以及所述分片信息,确定所述待插入数据所属的分片”可概述为:基于分片信息,从首个分片开始,检查该分片的字节数是否能够容纳所述整体偏移量,如果能够容纳,则确定所述待插入数据属于该分片;如果不能够容纳,则用所述整体偏移量减去上述首个分片容纳的字节数得到待插入数据的剩余偏移量;从所述分片信息中继续获取下一个分片的单片信息并判断该分片是否能够容纳所计算的剩余偏移量,如此循环直到确定出待插入数据所在的分片。

在本实施例中,步骤“基于所述分片对应的单片信息在所述分片内确定所述待插入数据所属的大字段数据页以及在所述大字段数据页内具体的插入位置”可概述为:在确定出的分片中,基于该分片的单片信息,获取该分片内首个大字段数据页的页地址,获取该首个大字段数据页,并检查待插入数据是否属于首个大字段数据页,如果属于,则确定待插入数据在该大字段数据页中具体的插入位置;如果不属于,则获取该分片内的下一个大字段数据页并判断,如此循环直至确定待插入数据所在的大字段数据页以及在该大字段数据页中具体的插入位置。

进一步的,所述在所述插入位置对所述待插入数据进行插入操作,具体包括:

在所述插入位置对所述已存储的大字段数据进行分裂操作,形成第一部分数据和第二部分数据,其中,各个部分的大字段数据都存在对应的分片信息;所述待插入数据合并到所述第一部分数据中,并对应更新所述第一部分数据的分片信息;将第一部分的数据和第二部分数据合并,并将合并后形成的分片信息存储至所述大字段控制页中,作为大字段控制页的存储内容。

在本实施例中,将合并后形成的分片信息存储至所述大字段控制页中,实现了数据页链表中分片信息的更新以及存储数据的更新。需要注意的是,在进行上述插入操作后,可以基于更新后的数据页链表对行记录中的信息进行更新,即重新确定数据页链表中首个大字段数据页的页地址,然后将所述页地址与数据标识一同作为新的行记录,由此保证行记录中信息的准确性。

S305、当所述处理指令为删除所述大字段数据中的部分数据的删除指令时,在所述数据页链表中对所述大字段数据进行删除操作。

在本实施例中,当接收到删除指令时,一般需要在所述大字段数据对应的数据页链表中删除指定的部分大字段数据。具体的,对于要删除的大字段数据,通常基于获取的删除指令来确定所述待删除数据在所述大字段数据中的整体起始偏移量以及整体结束偏移量。

进一步的,所述在所述数据页链表中对所述大字段数据进行删除操作,包括:

确定待删除数据在所述大字段数据中的整体起始偏移量和整体结束偏移量;获取所述数据页链表的大字段控制页中的存储内容,并将所述存储内容记录于的分片信息中,基于所述整体起始偏移量和整体结束偏移量以及所述分片信息,确定所述待删除数据所属的分片;基于所述待删除数据起始和结束位置所属的分片的单片信息,确定所述待删除数据起始位置和结束位置所属的大字段数据页、以及在大字段数据页中的偏移;基于所述起始位置到所述结束位置,将所述待删除数据从相应的大字段数据页中分离并删除;更新所述大字段控制页中的存储内容。

在本实施例中,步骤“基于所述起始位置到所述结束位置,将所述待删除数据从相应的大字段数据页中分离并删除”的具体过程可描述为:首先,在所述待删除数据的起始位置对已存储的大字段数据进行分裂操作,形成第一部分数据和第二部分数据,其中,各个部分的大字段数据都存在对应的分片信息,具体的,第一部分数据对应的分片信息中记录了所述待删除数据起始位置之前数据的分片信息;第二部分数据对应的分片信息中记录了所述待删除数据的起始位置之后数据的分片信息;然后,在所述待删除数据的结束位置对所述第二部分数据再次进行分裂操作,使得所述第二部分数据分裂成第三部分数据和第四部分数据,其中,所述第三部分数据对应的分片信息中记录了所述待删除数据的起始位置之后、结束位置之前数据的分片信息,即待删除数据的分片信息;所述第四部分数据对应的分片信息中记录了所述待删除数据的结束位置之后的分片信息;最后,删除所述第三部分数据,并将所述第一部分数据和第四部分数据进行合并,同时合并所述第一部分数据对应的分片信息与第四部分数据对应的分片信息。

在本实施例中,将合并后的分片信息写入所述大字段控制页中,作为大字段控制页的存储内容,由此实现了数据页链表中分片信息的更新以及存储数据的更新。需要注意的是,在进行上述删除操作后,可以基于更新后的数据页链表对行记录中的信息进行更新,即重新确定数据页链表中首个大字段数据页的页地址,然后将所述页地址与数据标识一同作为新的行记录,由此也保证了行记录中信息的准确性。

本发明实施例三提供的一种大字段数据的处理方法,具体化了大字段数据的插入操作以及删除操作。利用该处理方法,由于确定了待处理的大字段数据在指定数据库表中为分片式存储,所以对待处理的大字段数据进行处理时,能够基于分片式存储对应的定位手段快速定位待处理数据在数据页链表中的具体位置,与现有处理方法相比,很大程度减少了处理过程中对数据页遍历的遍历数量,由此降低了大字段数据处理时的输入输出代价,从而提高了大字段数据处理的整体处理效率。

实施例四

图4为本发明实施例提供的一种大字段数据的处理装置的结构框图,该处理装置适用于对大字段数据进行处理的情况,该处理装置可由软件和/或硬件实现,并一般集成于数据库管理系统中。如图4所示,该处理装置包括:指令接收模块41和数据处理模块42。

其中,指令接收模块41,用于接收对大字段数据进行处理的处理指令,其中,所述大字段数据分片式存储于指定数据库表中。

数据处理模块42,用于确定存储所述大字段数据的数据页形成的数据页链表,并根据所述处理指令在所述数据页链表中对所述大字段数据进行处理,其中,所述数据页链表中存在一个大字段控制页,所述大字段控制页中包含分片式存储所述大字段数据时形成的分片信息。

在本实施例中,该处理装置首先基于指令接收模块41接收对大字段数据进行处理的处理指令,其中,所述大字段数据分片式存储于指定数据库表中;然后通过数据处理模块42确定存储所述大字段数据的数据页形成的数据页链表,并根据所述处理指令在所述数据页链表中对所述大字段数据进行处理,其中,所述数据页链表中存在一个大字段控制页,所述大字段控制页中包含分片式存储所述大字段数据时形成的分片信息。

本发明实施例四提供的一种大字段数据的处理装置,集成在数据库管理系统中,当需要处理存储在指定数据库中的大字段数据时,能够基于该处理装置的指令接收模块,并能够通过数据处理模块在所述大字段数据的数据页数量大于设定阈值时,确定分片式存储所述大字段数据的数据页链表,同时根据所述处理指令在所述数据页链表中对所述大字段数据进行处理。利用该处理装置,能够基于分片式存储对应的定位手段快速定位待处理数据在数据页链表中的具体位置,与现有处理装置相比,很大程度减少了处理过程中对数据页遍历的遍历数量,由此降低了大字段数据处理时的输入输出代价,从而提高了大字段数据处理的整体处理效率。

进一步的,该处理装置还包括:

数据存储模块,用于在所述指定数据库表中分片式存储所述大字段数据。

在上述实施例的基础上,所述数据存储模块,具体包括:

a、接收存储所述大字段数据的存储指令,获取当前待存储的大字段数据;b、基于所述存储指令确定所述指定数据库表中是否存在与所述大字段数据对应的数据页链表,若是,则执行步骤c;若否,则执行步骤d;c、获取所述数据页链表的大字段控制页中的存储内容,并将所述存储内容记录于创建的分片信息中之后执行步骤e;d、为所述大字段数据分配一个数据标识,创建并初始化一个分片信息,之后执行步骤e,其中,所述分片信息初始化为空;e、基于所述分片信息对所述大字段数据进行分片式存储,并进行分片信息更新;f、如果基于步骤b确定已存在数据页链表,则将更新后的分片信息写入所述数据页链表的大字段控制页中并结束;否则,将所述分片信息写入新分配的大字段控制页中,并将所述大字段控制页加入到新形成的数据页链表中;g、如果所述大字段数据在所述指定数据库表中的行记录为空,则将所述大字段数据的数据标识以及所述数据页链表中首个大字段数据页的页地址写入所述指定数据库表的指定行中,形成所述大字段数据的行记录。

进一步的,所述基于所述分片信息对所述大字段数据进行分片式存储,并进行分片信息更新,包括:

a、确定所述分片信息中记录的分片个数是否为0,若是,记所述大字段数据为待存储数据,创建并初始化临时分片信息,之后执行步骤d;若否,则执行步骤b;b、确定所述分片信息中最后一个分片号对应的单片信息,并基于所述单片信息确定相应分片中所包含的最后一个大字段数据页;c、如果所述最后一个大字段数据页中存在页剩余空间,则将所述大字段数据写入所述最后一个大字段数据页的页剩余空间,并确定所述大字段数据是否全部写入,若是,则直接对所述分片信息进行更新并结束;若否,记未写入的大字段数据为待存储数据,创建并初始化临时分片信息,之后执行步骤d;d、分配一个新的大字段数据页,将所述待存储数据写入所述大字段数据页中,并将未写入到所述大字段数据页的大字段数据标记为待存储数据;e、确定所述临时分片信息是否存在单片信息,若是,则将所述临时分片信息中最后一个单片信息对应的分片确定为目标分片,之后执行步骤f;若否,则执行步骤g;f、如果所述目标分片满足添加新分片的条件,则执行步骤g;否则执行步骤h;g、创建一个分片作为目标分片,并对应形成单片信息,将所述单片信息加入到所述临时分片信息中,之后执行步骤h,其中,所述单片信息初始为空;h、将所述大字段数据页加入到所述目标分片中,更新所述目标分片对应的单片信息,并更新所述临时分片信息;i、确定是否仍存在待存储数据,若是,则返回执行步骤d;若否,则执行步骤j;j、将所述临时分片信息描述的大字段数据与所述分片信息描述的大字段数据进行合并,以更新所述分片信息。

在上述实施例的基础上,所述数据处理模块42,具体包括:

链表确定单元,用于基于所述大字段数据在所述指定数据库表中对应的行记录,确定分片式存储所述大字段数据的数据页形成的数据页链表;

插入处理单元,用于当所述处理指令为在所述大字段数据中插入新数据的插入指令时,在所述数据页链表中对所述大字段数据进行插入操作;

删除处理单元,用于当所述处理指令为删除所述大字段数据中的部分数据的删除指令时,在所述数据页链表中对所述大字段数据进行删除操作。

进一步的,所述插入处理单元,具体用于:

确定待插入数据在所述大字段数据中的整体偏移量;获取所述数据页链表的大字段控制页中的存储内容,并将所述存储内容记录于的分片信息中,基于所述整体偏移量以及所述分片信息,确定所述待插入数据所属的分片;基于所述分片对应的单片信息在所述分片内确定所述待插入数据所属的大字段数据页以及在所述大字段数据页内具体的插入位置;在所述插入位置对所述待插入数据进行插入操作。

进一步的,所述在所述插入位置对所述待插入数据进行插入操作,具体包括:

在所述插入位置对所述已存储的大字段数据进行分裂操作,形成第一部分数据和第二部分数据,其中,各个部分的大字段数据都存在对应的分片信息;将所述待插入数据合并到所述第一部分数据中,并对应更新所述第一部分数据的分片信息;将第一部分的数据和第二部分数据合并,并将合并后形成的分片信息存储至所述大字段控制页中,作为大字段控制页的存储内容。

在上述实施例的基础上,所述删除处理单元,具体用于:

确定待删除数据在所述大字段数据中的整体起始偏移量和整体结束偏移量;获取所述数据页链表的大字段控制页中的存储内容,并将所述存储内容记录于的分片信息中,基于所述整体起始偏移量和整体结束偏移量以及所述分片信息,确定所述待删除数据所属的分片;基于所述待删除数据所属的分片的单片信息,确定所述待删除数据所属的大字段数据页、以及在大字段数据页中具体的起始位置和结束位置;基于所述起始位置到所述结束位置,将所述待删除数据从相应的大字段数据页中分离并删除;更新所述大字段控制页中的存储内容。

进一步的,所述分片信息包括:大字段数据的总字符数、总字节数、分片个数以及各分片对应的单片信息;

所述单片信息包括:当前分片中首个大字段数据页的页地址以及当前分片中所包含的字符总数、字节总数和大字段数据页的个数。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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