CN106156301A - 一种大字段数据的处理方法及装置 - Google Patents

一种大字段数据的处理方法及装置 Download PDF

Info

Publication number
CN106156301A
CN106156301A CN201610506092.XA CN201610506092A CN106156301A CN 106156301 A CN106156301 A CN 106156301A CN 201610506092 A CN201610506092 A CN 201610506092A CN 106156301 A CN106156301 A CN 106156301A
Authority
CN
China
Prior art keywords
big field
page
data
field data
control group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610506092.XA
Other languages
English (en)
Other versions
CN106156301B (zh
Inventor
王攀
郭琰
望声宜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Dameng Database Co Ltd
Original Assignee
Shanghai Dameng Database Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Dameng Database Co Ltd filed Critical Shanghai Dameng Database Co Ltd
Priority to CN201610506092.XA priority Critical patent/CN106156301B/zh
Publication of CN106156301A publication Critical patent/CN106156301A/zh
Application granted granted Critical
Publication of CN106156301B publication Critical patent/CN106156301B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种大字段数据的处理方法及装置,该处理方法包括:接收对指定数据库表的大字段数据进行处理的处理指令;如果所述大字段数据的数据长度小于或等于设定阈值,则根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理,其中所述数据页记为大字段记录页,所述大字段记录页用于存储至少两条大字段数据的数据信息。利用该处理方法,由于大字段数据所属的数据页至少存储两条大字段数据的数据信息,能够节省数据库的存储空间,由此降低了存储空间的资源浪费,此外,还能够减少大字段数据处理时的数据页加载量,由此降低了大字段数据处理时的输入输出代价,从而提高了数据库的执行效率。

Description

一种大字段数据的处理方法及装置
技术领域
本发明实施例涉及数据库相关技术领域,尤其涉及一种大字段数据的处理方法及装置。
背景技术
大字段是数据库中的一种数据类型,以大字段类型进行存储的数据称为大字段数据。一般地,以大字段类型存储的数据可以分为两类:一类是长文本,普通的文本类型最多只能存储4000个汉字,而基于大字段类型存储的长文本远可以大于4000字;另一类是二进制信息,如图片或者文件等。与其他数据类型相比,大字段需要采用特殊的存储方式。
因为大字段数据的大小一般都很大,甚至大于数据库规定的最大行大小。这就意味着很多大字段数据无法直接在存储在数据库表中行单元中。现有存储大字段数据的方法中,通常是为大字段数据专门定义一种数据页的类型,称为大字段数据页,以用该类型的数据页独立存储大字段数据,且在行记录中只记录首个大字段数据页的页地址信息。
对于该种简单的大字段独立存储方法,局限之处在于:对于需要存储大字段数据,至少需要一个大字段数据页,然而,对于一个大字段数据页来说,只能用来存储一个大字段数据。但在实际应用中,很多的大字段数据长度都不会超过数据页的一半,对于该种情况,大字段数据页在存储一个大字段数据之后,会剩余大量的空闲空间,而这些空闲空间也不能再用来存储其他数据。由此造成了大字段数据页的空间浪费;同时,当对大字段数据进行批量查询时,也会增加大字段数据页的输入输出代价,从而降低数据库的执行效率。
发明内容
本发明的目的是提出一种大字段数据的处理方法及装置,以实现对大字段数据的优化处理。
一方面,本发明实施例提供了一种大字段数据的处理方法,该处理方法包括:
接收对指定数据库表的大字段数据进行处理的处理指令;
如果所述大字段数据的数据长度小于或等于设定阈值,则根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理,其中,所述数据页记为大字段记录页,所述大字段记录页用于存储至少两条大字段数据的数据信息。
另一方面,本发明实施例还提供了一种大字段数据的处理装置,该处理装置包括:
指令接收模块,用于接收对指定数据库表的大字段数据进行处理的处理指令;
数据处理模块,用于当所述大字段数据的数据长度小于或等于设定阈值时,根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理,其中,所述数据页记为大字段记录页,所述大字段记录页用于存储至少两条大字段数据的数据信息。
本发明实施例提供了一种大字段数据的处理方法及装置,该处理方法可概括为:首先接收对指定数据库表的大字段数据进行处理的处理指令;在确定大字段数据的数据长度小于或等于设定阈值时,根据接收的处理指令确定大字段数据所属的数据页,并对大字段数据进行相应的处理。利用该处理方法,由于大字段数据所属的数据页至少存储两条大字段数据的数据信息,能够节省数据库的存储空间,由此降低了存储空间的资源浪费,此外,还能够减少大字段数据处理时的数据页加载量,由此降低了大字段数据处理时的输入输出代价,从而提高了数据库的执行效率。
附图说明
图1为本发明实施例一提供的一种大字段数据的处理方法的流程示意图;
图2为本发明实施例二提供的一种大字段数据的处理方法的流程示意图;
图3为本发明实施例三提供的一种大字段数据的处理方法的流程示意图;
图4为本发明实施例四提供的一种大字段数据的处理装置的结构框图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种大字段数据的处理方法的流程示意图。该方法适用于对大字段数据进行处理的情况,可以由大字段数据的处理装置执行,其中该装置可由软件和/或硬件实现,并一般集成于数据库管理***中。
如图1所示,本发明实施例一提供的一种大字段数据的处理方法,具体包括如下操作:
S101、接收对指定数据库表的大字段数据进行处理的处理指令。
在本实施例中,所述指定数据库表具体可理解为创建于数据库中的,且包含数据类型为大字段的列的任一基本表。在本实施例中,所述大字段数据具体可理解为所述指定数据库表中数据类型为大字段的列所对应的数据,如长文本、图片或者文件等,其中,对所述大字段数据的处理并不直接在所属列对应的行单元中进行,可以基于本发明实施例提供的大字段数据的处理方法进行。
一般地,在对所述大字段数据进行处理时,可以首先进行接收处理所述大字段数据所需处理指令的操作。具体的,所述处理指令可以包括大字段数据的存储指令、修改指令以及删除指令等。
S102、如果所述大字段数据的数据长度小于或等于设定阈值,则根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理,其中,所述数据页记为大字段记录页,所述大字段记录页用于存储至少两条大字段数据的数据信息。
一般地,在接收到所述处理指令之后,可以基于所述大字段数据的数据长度与所述设定阈值的大小关系来确定处理所述大字段数据所对应的处理方法。通常情况下,在接收到处理指令后,对于数据长度大于设定阈值的大字段数据而言,所使用的处理方法可以是现有的常规处理方法;对于数据长度小于或等于设定阈值的大字段数据而言,就可以使用本发明实施例所提供的处理方法来进行处理。
具体的,所述大字段数据的数据长度具体可指数据类型为大字段的数据所具有的数据大小,一般以字节为单位来表示。所述设定阈值可人为设定,也可默认设定,其中,所述设定阈值可优选设定为一个数据页的页大小的一半或者更小,示例性的,若数据页的页大小为4KB,则所述设定阈值可以为2KB或者1.8KB等。
在本实施例中,当所述大字段数据的数据长度小于或等于设定阈值时,表明所述大字段数据的数据长度较小,此时可以基于步骤S102实现对所述大字段数据的处理。具体的,首先根据所述处理指令确定所述大字段数据所属的数据页,然后,再基于处理指令对所述大字段数据进行相应的处理,其中,基于步骤S102所确定的数据页与基于现有处理方法确定的数据页不同,基于S102确定出的数据页中至少可以存储两条大字段数据的数据信息,为了便于区分,本发明实施例中记所述数据页为大字段记录页;而基于现有处理方法确定的数据页仅允许存储一条大字段数据。由此可知,基于步骤S102的处理步骤可以节省数据库的存储空间,减少存储空间的浪费。
在本实施例中,基于S102确定出所述大字段数据所属的大字段记录页后,还可以基于不同的处理指令对大字段数据进行不同的处理操作,示例性的,如基于存储指令对大字段数据进行存储操作,或基于修改指令对大字段数据进行修改操作等。
本发明实施例一提供了一种大字段数据的处理方法,该处理方法首先接收对指定数据库表的大字段数据进行处理的处理指令;在确定大字段数据的数据长度小于或等于设定阈值时,根据接收的处理指令确定大字段数据所属的数据页,并对大字段数据进行相应的处理。利用该处理方法,由于大字段数据所属的数据页至少存储两条大字段数据的数据信息,节省了数据库的存储空间,由此降低了存储空间的资源浪费,此外,很大程度减少了大字段数据处理时的数据页加载量,由此降低了大字段数据处理时的输入输出代价,从而提高了数据库的执行效率。
实施例二
图2为本发明实施例二提供的一种大字段数据的处理方法的流程示意图。本发明实施例二以上述实施例为基础进行优化,在本实施例中,该处理方法还优化包括了:在创建所述指定数据库表时,如果检测到所述指定数据库表中存在数据类型为大字段的列,则为所述列创建专属的大字段数据段,所述大字段数据段为处理大字段数据所需的数据环境;在所述大字段数据段中创建至少一个控制组,并为所述控制组对应分配一个数据页,记所述数据页为大字段控制页。
如图2所示,本发明实施例二提供的一种大字段数据的处理方法,具体包括如下操作:
需要说明的是,由于对大字段数据的处理不能直接在所属列对应的行单元中进行,所以在对大字段数据进行处理操作之前,需要为所述大字段数据创建处理操作所需的数据环境,下述步骤S201~S203为本发明实施例提出的处理所述大字段数据所需数据环境的创建过程。
S201、在创建所述指定数据库表时,检测所述指定数据库表中是否存在数据类型为大字段的列。
具体的,在最初创建所述指定数据库表时,确定在所述指定数据库表中要形成的列的数据类型,并确定是否存在数据类型为大字段的列。示例性的,不同的数据库对大字段类型的表示不同,如Oracle数据库中常见的大字段类型有二进制大对象(Binary LargeObject,BLOB)以及字符大对象(Character Large Object,CLOB)等,又如SQL Server数据库常见的大字段类型有text(文本)以及image(图片)等。
S202、如果存在所述列,则为所述列创建专属的大字段数据段,所述大字段数据段为处理大字段数据所需的数据环境。
在本实施例中,如果检测到存在数据类型为大字段的列,则相应的为所述列创建专属的大字段数据段,且所述大字段数据段用于作为处理大字段数据所需的数据环境。一般地,所述大字段数据段可以抽象的看作一个存储容器,用于存放所分配的数据页,而存放于所述大字段数据段中的数据页一般用来记录与所述列相关的大字段数据。
需要说明的是,本发明实施例提供的处理方法,如果想要实现在一个数据页(记作大字段记录页)中至少记录两条大字段数据的数据信息,就需要创建一个能够管理所述大字段记录页的控制组,则可以基于步骤S203实现控制组的创建。
S203、在所述大字段数据段中创建至少一个控制组,并为所述控制组对应分配一个数据页,记所述数据页为大字段控制页。
在本实施例中,可以在所述大字段数据段中创建多个控制组,以此提高处理进程并发效率。此外,由于控制组仅是一个逻辑上的名称,所以需要为每个控制组对应分配一个数据页(记为大字段控制页)来实现控制组对大字段记录页的管理控制。需要说明的是,所述大字段记录页以及大字段控制页均为数据页,在实际操作中,主要基于数据页的页头中记录的页类型来区分。
进一步的,所述控制组基于对应的大字段控制页中存储的目录项信息管理大字段记录页,其中,所述目录项信息中的一条目录项对应记录一个大字段记录页的页地址以及页剩余空间大小。
此外,所述大字段记录页包括页头、数据以及数据索引三部分,其中,所述页头中记录有所述大字段记录页所属控制组的控制组地址;所述控制组地址为与所述控制组对应的大字段控制页的页地址。
在本实施例中,一个控制组可以管理至少一个大字段记录页,对所述大字段记录页的管理主要基于控制组对应大字段控制页中存储的目录项信息实现;所述目录项信息中可以存在多条目录项,每条目录项对应记录一个大字段记录页的页地址以及页剩余空间大小。需要说明的是,对于新创建的控制组,其对应的大字段控制页中的目录项信息初始化为空,只有在将大字段数据记录到大字段记录页后,才会将所述大字段记录页的目录项更新至所述控制组对应的大字段控制页中。
在本实施例中,所形成的大字段记录页的组成部分与现有的数据页的组成部分不同,现有的数据页由页头和数据两部分组成,而所述大字段记录页由页头、数据以及数据索引三部分组成,其中,所述页头中除了包含原有的页头标准信息(如页地址、页类型等)外,还记录了当前大字段记录页中存储的数据记录条数、已使用的字节数以及所属控制组的控制组地址等;所述数据部分可用于记录至少两条大字段数据的数据信息;所述数据索引部分则记录了已存储的各大字段数据的数据ID及其页内偏移量,可以用于后续对已存储大字段数据的查询定位。在本实施例中,上述大字段控制页以及大字段记录页中的信息均会随着对大字段数据进行的处理操作而发生相应的更新变化。
S204、接收对所述指定数据库表的大字段数据进行处理的处理指令。
S205、如果所述大字段数据的数据长度小于或等于设定阈值,则根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理。
本发明实施例二提供的一种大字段数据的处理方法,优化增加了创建大字段数据段的操作,所创建的大字段数据段为大字段数据的处理提供了所需的数据环境基础,使得大字段数据能够正常进行处理操作;此外,还优化增加了控制组的创建操作,在大字段数据段中所创建的控制组则可用来确定大字段数据具体所属的数据页,利用该处理方法,能够节省数据库的存储空间,还能够降低大字段数据处理时的输入输出代价,进而达到提升数据库执行效率的目的。
实施例三
图3为本发明实施例三提供的一种大字段数据的处理方法的流程示意图。本发明实施例三以上述实施例为基础进行优化,在本实施例中,将“根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理”具体优化为:当所述处理指令为存储指令时,确定存储所述大字段数据所需的大字段记录页,并对所述大字段数据进行存储操作;当所述处理指令为修改指令时,确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行修改操作;当所述处理指令为删除指令时,确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行删除操作。
如图3所示,本发明实施例三提供的一种大字段数据的处理方法,具体包括如下操作:
S301、在创建所述指定数据库表时,如果检测到所述指定数据库表中存在数据类型为大字段的列,则为所述列创建专属的大字段数据段。
示例性的,所述大字段数据段可以作为处理大字段数据所需的数据环境。
S302、在所述大字段数据段中创建至少一个控制组,并为所述控制组对应分配一个数据页,记所述数据页为大字段控制页。
示例性的,所述控制组可以基于对应大字段控制页中存储的目录项信息来控制目录项信息中存在的大字段记录页,所述大字段记录页用于存储至少两条大字段数据的数据信息。
S303、接收对指定数据库表的大字段数据进行处理的处理指令。
S304、如果所述大字段数据的数据长度小于或等于设定阈值,则基于所接收的处理指令执行步骤S305、步骤S306或步骤S307。
示例性的,如果确定出所述大字段数据的数据长度小于或等于设定阈值,则可基于本发明实施例提供的处理方法进行处理操作。
S305、当所述处理指令为存储指令时,确定存储所述大字段数据所需的大字段记录页,并对所述大字段数据进行存储操作。
在本实施例中,对所述大字段数据进行存储操作具体可理解为将大字段数据存储至确定的大字段记录页中。
进一步的,所述确定存储所述大字段数据所需的大字段记录页,并对所述大字段数据进行存储操作,包括:
将所述大字段数据分配到所述大字段数据段的任一个未封锁的控制组中,并封锁所述控制组;基于所述控制组对应的目录项信息确定存储所述大字段数据所需的大字段记录页;将所述大字段数据的数据信息写入所述大字段记录页;更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
在本实施例中,在所述控制组内对大字段数据进行处理操作之前一般先对控制组进行封锁,由此避免多个并发处理进程同时对在一个控制组内进行操作。其中,封锁操作为数据库中的一个基本操作,这里不再赘述。
在本实施例中,在将所述大字段数据写入所述大字段记录页后,会在所述指定数据库表的指定行中存储所述大字段数据的数据ID以及所述大字段记录页的页地址,由此形成所述大字段数据的行记录信息,以便于后续所述大字段数据进行索引查询。
此外,在将所述大字段数据写入所述大字段记录页后,还要更新所述大字段记录页在所述控制组中的目录项信息,以保证控制组对应的目录项信息与其管理的大字段记录页的信息能够保持一致。
进一步的,所述基于所述控制组对应的目录项信息确定存储所述大字段数据所需的大字段记录页,包括:如果所述控制组对应的目录项信息为空,则为所述大字段数据分配一个新的大字段记录页;否则,确定所述控制组对应的目录项信息中是否存在满足设定条件的目录项,如果存在满足所述设定条件的目录项,则确定所述目录项中页地址对应的大字段记录页为存储所述大字段数据所需的大字段记录页;否则,为所述大字段数据分配一个新的大字段记录页。其中,所述设定条件为:目录项的页剩余空间大小大于或等于所述大字段数据的数据长度。
S306、当所述处理指令为修改指令时,确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行修改操作。
在本实施例中,所述对所述大字段数据进行修改操作具体可理解为对已确定的大字段记录页中存储的大字段数据的数据信息进行修改。
进一步的,所述确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行修改操作,包括:
基于所述大字段数据在所述指定数据库表中对应的行记录信息,确定所述大字段数据所属数据页的页地址;基于所述页地址在所述大字段数据段中确定对应的大字段记录页;检查所述大字段记录页的页头中记录的控制组地址是否为空;如果所述控制组地址不为空,则封锁所述控制组地址对应的控制组;确定所述大字段数据修改后的数据长度是否小于或等于所述大字段记录页的页剩余空间大小,若是,则直接在所述大字段记录页内修改所述大字段数据;若否,则将记录于所述大字段记录页中的大字段数据复制到缓存区进行修改,并从所述大字段记录页中删除与所述大字段数据相关的记录,对修改后的大字段数据重新进行存储操作;如果对所述控制组进行了封锁,更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
在本实施例中,所述大字段记录页的页头中记录的控制组地址存在为空的情况,在出现该情况时,表明所述大字段记录页的页剩余空间已经不多,因此后续不会再考虑将新的大字段数据存储进来,由此进行存储操作时节省了不必要的判定;此外,由于所述大字段记录页不属于任何控制组,此时也不必再进行控制组的封锁操作,进而也不必进行控制组目录信息的更新操作以及相应的封锁释放操作,这里不再详述。
在本实施例中,如果对修改后的大字段数据重新进行了存储操作,则在对修改后的大字段数据重新进行存储操作后,会在所述指定数据库表中的指定行中存储所述大字段数据的数据ID以及所述修改后的大字段数据对应的大字段记录页的页地址,由此形成所述大字段数据的新的行记录信息,以便于后续所述大字段数据进行正确的索引查询。
S307、当所述处理指令为删除指令时,确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行删除操作。
进一步的,所述确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行删除操作,包括:
基于所述大字段数据在所述指定数据库表中对应的行记录信息,确定所述大字段数据所属数据页的页地址;基于所述页地址在所述大字段数据段中确定对应的大字段记录页;检查所述大字段记录页的页头中包含的控制组地址是否为空;如果所述控制组地址不为空,则封锁所述控制组地址对应的控制组;确定所述大字段数据在所述大字段记录页中的记录位置,并从所述大字段记录页中删除与所述大字段数据相关的记录;如果对所述控制组进行了封锁,更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
在本实施例中,在对待删除的大字段数据进行删除操作后,需要将所述大字段数据在指定数据库表的指定行中的行记录信息也相应的删除,使得所述指定行的行记录信息为空,由此保证大字段数据的正确索引查询。
本发明实施例三提供的一种大字段数据的处理方法,具体化了基于接收的处理指令的不同进行不同处理操作的过程。利用该处理方法,实现了对大字段数据在数据库中的存储操作、修改操作以及删除操作,由于存储大字段数据的数据页至少能够存储两条大字段数据的数据信息,所以与现有的存储操作相比,很大程度节省了数据库的存储空间,由此降低存储空间的资源浪费,同时,在对存储于特殊数据页的大字段数据据进行修改或删除操作时,能够减少大字段数据的数据页加载量,由此降低大字段数据处理时的输入输出代价,从而提高了数据库的执行效率。
在上述实施例的基础上,本发明实施例三还将“更新所述大字段记录页在所述控制组中的目录项信息”优化为:a、确定所述大字段记录页的页地址;b、检测所述控制组对应的各目录项中是否存在包含所述页地址的目录项,若存在,则执行步骤c;若不存在,则执行步骤f;c、确定所述目录项中的页剩余空间大小是否小于预设的页空间下限值,若是,则执行步骤d;若否,则执行步骤e;d、从所述控制组的目录项信息中删除所述目录项,并将所述大字段记录页的页头中的控制组地址设置为空,结束当前更新操作;e、更新所述目录项中的页剩余空间大小,并结束当前更新操作;f、检测所述大字段记录页的数据部分是否为空或者所述大字段记录页的页剩余空间是否小于预设的页空间下限值,若是,则执行步骤g;若否,则执行步骤h;g、直接结束当前更新操作;h、如果所述控制组对应的目录项条数没有达到预设的上限制,则执行步骤i;否则,执行步骤j;i、添加所述大字段记录页的目录项到所述控制组对应的目录项信息中,并在所述大字段记录页的页头中记录所述控制组的控制组地址,结束当前更新操作。j、查找所述控制组对应的目录项信息中页剩余空间最小的目录项,如果所述目录项的页剩余空间大小大于所述大字段记录页的页剩余空间大小,则结束当前操作;否则,则执行步骤k;k、删除所述目录项信息中页剩余空间最小的目录项,将所述目录项对应的数据页页头中的控制页地址置为空;将所述大字段记录页的目录项添加到所述控制组对应的目录项信息中,并在所述大字段记录页的页头中记录所述控制组的控制组地址,结束当前更新操作。
在本实施例中,如果存在所述大字段记录页中的数据部分为空的情况,可以认为是对所述大字段记录页中的大字段数据进行了删除或者修改操作而造成的,此时,如果所述控制组的目录项信息中不存在所述大字段记录页的目录项记录,则可以执行上述步骤g的操作。
在本实施例中,上述步骤a至步骤k给出了更新所述大字段记录页在所述控制组中的目录项信息的具体实现方法,基于上述步骤a至步骤k的更新操作,可以将符合条件的大字段记录页加入至所述控制组中,以便于后续***新的大字段数据时,能够通过控制组的管理将符合条件的大字段记录页分配给新的大字段数据进行存储;同时,还可以将不符合条件的大字段记录页目录项从控制组中的目录项信息中删除,以避免后续再将新的大字段数据存储其中。由此在保证控制组目录项信息与其管理的大字段记录页的信息保持一致的同时,还提高了大字段数据的处理效率。
实施例四
图4为本发明实施例提供的一种大字段数据的处理装置,该处理装置适用于对大字段数据进行处理的情况,该处理装置可由软件和/或硬件实现,并一般集成于数据库管理***中。如图4所示,该处理装置包括:指令接收模块41和数据处理模块42。
其中,指令接收模块41,用于接收对指定数据库表的大字段数据进行处理的处理指令。
数据处理模块42,用于当所述大字段数据的数据长度小于或等于设定阈值时,根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理,其中,所述数据页记为大字段记录页,所述大字段记录页用于存储至少两条大字段数据的数据信息。
在本实施例中,该处理装置首先通过指令接收模块41接收对指定数据库表的大字段数据进行处理的处理指令;然后通过数据处理模块42在所述大字段数据的数据长度小于或等于设定阈值时,根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理。
本发明实施例提供的一种大字段数据的处理装置,集成在数据库管理***中,在指定数据库表出现需要处理的大字段数据时,能够基于该处理装置的指令接收模块接收对指定数据库表的大字段数据进行处理的处理指令,并能够通过数据处理模块在所述大字段数据的数据长度小于或等于设定阈值时,根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理。利用该处理装置,能够节省数据库的存储空间,降低存储空间的资源浪费,还能够很大程度的减少大字段数据处理的数据页加载量,降低大字段数据处理时的输入输出代价,从而提高了数据库的执行效率。
进一步的,该处理装置,还包括:数据段创建模块,用于在创建所述指定数据库表时,如果检测到所述指定数据库表中存在数据类型为大字段的列,则为所述列创建专属的大字段数据段,所述大字段数据段为处理大字段数据所需的数据环境;控制组创建模块,用于在所述大字段数据段中创建至少一个控制组,并为所述控制组对应分配一个数据页,记所述数据页为大字段控制页。
在上述实施例的基础上,所述控制组基于对应的大字段控制页中存储的目录项信息管理大字段记录页,其中,所述目录项信息中的一条目录项对应记录一个大字段记录页的页地址以及页剩余空间大小;所述大字段记录页包括页头、数据以及数据索引三部分,其中,所述页头中记录有所述大字段记录页所属控制组的控制组地址;所述控制组地址为与所述控制组对应的大字段控制页的页地址。
进一步的,所述数据处理模块42,具体包括:
存储操作单元,用于当所述大字段数据的数据长度小于或等于设定阈值且所述处理指令为存储指令时,确定存储所述大字段数据所需的大字段记录页,并对所述大字段数据进行存储操作;
修改操作单元,用于当所述大字段数据的数据长度小于或等于设定阈值且所述处理指令为修改指令时,确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行修改操作;
删除操作单元,用于当所述大字段数据的数据长度小于或等于设定阈值且所述处理指令为删除指令时,确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行删除操作。
在上述实施例的基础上,所述存储操作单元,具体用于:
将所述大字段数据分配到所述大字段数据段的任一个未封锁的控制组中,并封锁所述控制组;基于所述控制组对应的目录项信息确定存储所述大字段数据所需的大字段记录页;将所述大字段数据的数据信息写入所述大字段记录页;更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
在本实施例中,基于存储操作单元完成所述大字段数据的存储操作后,可以在所述指定数据库表的指定行中存储所述大字段数据的数据ID以及所述大字段记录页的页地址,由此形成所述大字段数据的行记录信息,以便于后续所述大字段数据进行索引查询。
进一步的,所述基于所述控制组对应的目录项信息确定存储所述大字段数据所需的大字段记录页,包括:如果所述控制组对应的目录项信息为空,则为所述大字段数据分配一个新的大字段记录页;否则,确定所述控制组对应的目录项信息中是否存在满足设定条件的目录项,如果存在满足所述设定条件的目录项,则确定所述目录项中页地址对应的大字段记录页为存储所述大字段数据所需的大字段记录页;否则,为所述大字段数据分配一个新的大字段记录页;其中,所述设定条件为:目录项的页剩余空间大小大于或等于所述大字段数据的数据长度。
在上述实施例的基础上,所述修改操作单元,具体用于:
基于所述大字段数据在所述指定数据库表中对应的行记录信息,确定所述大字段数据所属数据页的页地址;基于所述页地址在所述大字段数据段中确定对应的大字段记录页;检查所述大字段记录页的页头中记录的控制组地址是否为空;如果所述控制组地址不为空,则封锁所述控制组地址对应的控制组;确定所述大字段数据修改后的数据长度是否小于或等于所述大字段记录页的页剩余空间大小,若是,则直接在所述大字段记录页内修改所述大字段数据;若否,则将记录于所述大字段记录页中的大字段数据复制到缓存区进行修改,并从所述大字段记录页中删除与所述大字段数据相关的记录,对修改后的大字段数据重新进行存储操作;如果对所述控制组进行了封锁,更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
在本实施例中,如果基于修改操作单元进行了大字段数据的修改,并重新对所述修改后的大字段数据进行了存储操作,则可以在所述指定数据库表中的指定行中存储所述大字段数据的数据ID以及所述修改后的大字段数据对应的大字段记录页的页地址,由此形成所述大字段数据的新的行记录信息,以便于后续所述大字段数据进行正确的索引查询。。
在上述实施例的基础上,所述删除操作单元,具体用于:
基于所述大字段数据在所述指定数据库表中对应的行记录信息,确定所述大字段数据所属数据页的页地址;基于所述页地址在所述大字段数据段中确定对应的大字段记录页;检查所述大字段记录页的页头中包含的控制组地址是否为空;如果所述控制组地址不为空,则封锁所述控制组地址对应的控制组;确定所述大字段数据在所述大字段记录页中的记录位置,并从所述大字段记录页中删除与所述大字段数据相关的记录;如果对所述控制组进行了封锁,更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
在本实施例中,在基于删除操作单元对待删除的大字段数据进行删除操作后,需要将所述大字段数据在指定数据库表的指定行中的行记录信息也相应的删除,使得所述指定行的行记录信息为空,由此保证大字段数据的正确索引查询。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种大字段数据的处理方法,其特征在于,包括:
接收对指定数据库表的大字段数据进行处理的处理指令;
如果所述大字段数据的数据长度小于或等于设定阈值,则根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理,其中,所述数据页记为大字段记录页,所述大字段记录页用于存储至少两条大字段数据的数据信息。
2.根据权利要求1所述的方法,其特征在于,还包括:
在创建所述指定数据库表时,如果检测到所述指定数据库表中存在数据类型为大字段的列,则为所述列创建专属的大字段数据段,所述大字段数据段为处理大字段数据所需的数据环境;
在所述大字段数据段中创建至少一个控制组,并为所述控制组对应分配一个数据页,记所述数据页为大字段控制页。
3.根据权利要求2所述的方法,其特征在于,
所述控制组基于对应的大字段控制页中存储的目录项信息管理大字段记录页,其中,所述目录项信息中的一条目录项对应记录一个大字段记录页的页地址以及页剩余空间大小;
所述大字段记录页包括页头、数据以及数据索引三部分,其中,所述页头中记录有所述大字段记录页所属控制组的控制组地址;
所述控制组地址为与所述控制组对应的大字段控制页的页地址。
4.根据权利要求3所述的方法,其特征在于,所述根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理,具体包括:
当所述处理指令为存储指令时,确定存储所述大字段数据所需的大字段记录页,并对所述大字段数据进行存储操作;
当所述处理指令为修改指令时,确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行修改操作;
当所述处理指令为删除指令时,确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行删除操作。
5.根据权利要求4所述的方法,其特征在于,所述确定存储所述大字段数据所需的大字段记录页,并对所述大字段数据进行存储操作,包括:
将所述大字段数据分配到所述大字段数据段的任一个未封锁的控制组中,并封锁所述控制组;
基于所述控制组对应的目录项信息确定存储所述大字段数据所需的大字段记录页;
将所述大字段数据的数据信息写入所述大字段记录页;
更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
6.根据权利要求5所述的方法,其特征在于,所述基于所述控制组对应的目录项信息确定存储所述大字段数据所需的大字段记录页,包括:
如果所述控制组对应的目录项信息为空,则为所述大字段数据分配一个新的大字段记录页;
否则,确定所述控制组对应的目录项信息中是否存在满足设定条件的目录项,如果存在满足所述设定条件的目录项,则确定所述目录项中页地址对应的大字段记录页为存储所述大字段数据所需的大字段记录页;否则,为所述大字段数据分配一个新的大字段记录页;
其中,所述设定条件为:目录项的页剩余空间大小大于或等于所述大字段数据的数据长度。
7.根据权利要求4所述的方法,其特征在于,所述确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行修改操作,包括:
基于所述大字段数据在所述指定数据库表中对应的行记录信息,确定所述大字段数据所属数据页的页地址;
基于所述页地址在所述大字段数据段中确定对应的大字段记录页;
检查所述大字段记录页的页头中记录的控制组地址是否为空;
如果所述控制组地址不为空,则封锁所述控制组地址对应的控制组;
确定所述大字段数据修改后的数据长度是否小于或等于所述大字段记录页的页剩余空间大小,若是,则直接在所述大字段记录页内修改所述大字段数据;若否,则将记录于所述大字段记录页中的大字段数据复制到缓存区进行修改,并从所述大字段记录页中删除与所述大字段数据相关的记录,对修改后的大字段数据重新进行存储操作;
如果对所述控制组进行了封锁,更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
8.根据权利要求4所述的方法,其特征在于,所述确定所述大字段数据所属的大字段记录页,并对所述大字段数据进行删除操作,包括:
基于所述大字段数据在所述指定数据库表中对应的行记录信息,确定所述大字段数据所属数据页的页地址;
基于所述页地址在所述大字段数据段中确定对应的大字段记录页;
检查所述大字段记录页的页头中包含的控制组地址是否为空;
如果所述控制组地址不为空,则封锁所述控制组地址对应的控制组;
确定所述大字段数据在所述大字段记录页中的记录位置,并从所述大字段记录页中删除与所述大字段数据相关的记录;
如果对所述控制组进行了封锁,更新所述大字段记录页在所述控制组中的目录项信息,并释放对所述控制组的封锁。
9.根据权利要求5-8任一所述的方法,其特征在于,所述更新所述大字段记录页在所述控制组中的目录项信息,包括:
a、确定所述大字段记录页的页地址;
b、检测所述控制组对应的各目录项中是否存在包含所述页地址的目录项,若存在,则执行步骤c;若不存在,则执行步骤f;
c、确定所述目录项中的页剩余空间大小是否小于预设的页空间下限值,若是,则执行步骤d;若否,则执行步骤e;
d、从所述控制组的目录项信息中删除所述目录项,并将所述大字段记录页的页头中的控制组地址设置为空,结束当前更新操作;
e、更新所述目录项中的页剩余空间大小,并结束当前更新操作;
f、检测所述大字段记录页的数据部分是否为空或者所述大字段记录页的页剩余空间是否小于预设的页空间下限值,若是,则执行步骤g;若否,则执行步骤h;
g、直接结束当前更新操作;
h、如果所述控制组对应的目录项条数没有达到预设的上限制,则执行步骤i;否则,执行步骤j;
i、添加所述大字段记录页的目录项到所述控制组对应的目录项信息中,并在所述大字段记录页的页头中记录所述控制组的控制组地址,结束当前更新操作。
j、查找所述控制组对应的目录项信息中页剩余空间最小的目录项,如果所述目录项的页剩余空间大小大于所述大字段记录页的页剩余空间大小,则结束当前操作;否则,则执行步骤k;
k、删除所述目录项信息中页剩余空间最小的目录项,将所述目录项对应的数据页页头中的控制页地址置为空;将所述大字段记录页的目录项添加到所述控制组对应的目录项信息中,并在所述大字段记录页的页头中记录所述控制组的控制组地址,结束当前更新操作。
10.一种大字段数据的处理装置,其特征在于,包括:
指令接收模块,用于接收对指定数据库表的大字段数据进行处理的处理指令;
数据处理模块,用于当所述大字段数据的数据长度小于或等于设定阈值时,根据所述处理指令确定所述大字段数据所属的数据页,并对所述大字段数据进行相应的处理,其中,所述数据页记为大字段记录页,所述大字段记录页用于存储至少两条大字段数据的数据信息。
CN201610506092.XA 2016-06-30 2016-06-30 一种大字段数据的处理方法及装置 Active CN106156301B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610506092.XA CN106156301B (zh) 2016-06-30 2016-06-30 一种大字段数据的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610506092.XA CN106156301B (zh) 2016-06-30 2016-06-30 一种大字段数据的处理方法及装置

Publications (2)

Publication Number Publication Date
CN106156301A true CN106156301A (zh) 2016-11-23
CN106156301B CN106156301B (zh) 2019-07-09

Family

ID=57350339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610506092.XA Active CN106156301B (zh) 2016-06-30 2016-06-30 一种大字段数据的处理方法及装置

Country Status (1)

Country Link
CN (1) CN106156301B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992561A (zh) * 2017-11-29 2018-05-04 四川巧夺天工信息安全智能设备有限公司 一种解析edb数据库源文件中过长字段的方法
CN108038215A (zh) * 2017-12-22 2018-05-15 上海达梦数据库有限公司 数据处理方法及***
CN108090137A (zh) * 2017-11-29 2018-05-29 四川巧夺天工信息安全智能设备有限公司 一种解析edb数据库源文件中过长字段的方法
CN109918373A (zh) * 2019-02-02 2019-06-21 上海达梦数据库有限公司 数据存储方法、装置、服务器和存储介质
CN111309985A (zh) * 2020-03-10 2020-06-19 支付宝(杭州)信息技术有限公司 基于PostgreSQL数据库的高维向量存储方法和装置
CN112307021A (zh) * 2020-10-23 2021-02-02 北京锐安科技有限公司 数据处理方法、装置、设备和存储介质
CN113076326A (zh) * 2021-03-25 2021-07-06 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101236525A (zh) * 2008-01-24 2008-08-06 创新科存储技术(深圳)有限公司 文件存储、读取、删除及复制方法及其相关***
CN101620617A (zh) * 2009-07-28 2010-01-06 中兴通讯股份有限公司 日志文件的查询和处理的方法及装置
CN104462141A (zh) * 2013-09-24 2015-03-25 ***通信集团重庆有限公司 一种数据存储与查询的方法、***及存储引擎装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101236525A (zh) * 2008-01-24 2008-08-06 创新科存储技术(深圳)有限公司 文件存储、读取、删除及复制方法及其相关***
CN101620617A (zh) * 2009-07-28 2010-01-06 中兴通讯股份有限公司 日志文件的查询和处理的方法及装置
CN104462141A (zh) * 2013-09-24 2015-03-25 ***通信集团重庆有限公司 一种数据存储与查询的方法、***及存储引擎装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992561A (zh) * 2017-11-29 2018-05-04 四川巧夺天工信息安全智能设备有限公司 一种解析edb数据库源文件中过长字段的方法
CN108090137A (zh) * 2017-11-29 2018-05-29 四川巧夺天工信息安全智能设备有限公司 一种解析edb数据库源文件中过长字段的方法
CN108090137B (zh) * 2017-11-29 2021-11-26 四川巧夺天工信息安全智能设备有限公司 一种解析edb数据库源文件中过长字段的方法
CN108038215A (zh) * 2017-12-22 2018-05-15 上海达梦数据库有限公司 数据处理方法及***
CN109918373A (zh) * 2019-02-02 2019-06-21 上海达梦数据库有限公司 数据存储方法、装置、服务器和存储介质
CN111309985A (zh) * 2020-03-10 2020-06-19 支付宝(杭州)信息技术有限公司 基于PostgreSQL数据库的高维向量存储方法和装置
CN111309985B (zh) * 2020-03-10 2023-08-25 支付宝(杭州)信息技术有限公司 基于PostgreSQL数据库的高维向量存储方法和装置
CN112307021A (zh) * 2020-10-23 2021-02-02 北京锐安科技有限公司 数据处理方法、装置、设备和存储介质
CN113076326A (zh) * 2021-03-25 2021-07-06 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质
CN113076326B (zh) * 2021-03-25 2024-05-31 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN106156301B (zh) 2019-07-09

Similar Documents

Publication Publication Date Title
CN106156301A (zh) 一种大字段数据的处理方法及装置
US10642515B2 (en) Data storage method, electronic device, and computer non-volatile storage medium
US9575976B2 (en) Methods and apparatuses to optimize updates in a file system based on birth time
US7779045B2 (en) Lazy updates to indexes in a database
CN102103497B (zh) 有限状态机执行装置和方法、在应用中的建立和使用方法
CN104809237A (zh) LSM-tree索引的优化方法和装置
US20070162506A1 (en) Method and system for performing a redistribute transparently in a multi-node system
US11314689B2 (en) Method, apparatus, and computer program product for indexing a file
CN101315621A (zh) 一种实现文档共享编辑的方法
CN105989015B (zh) 一种数据库扩容方法和装置以及访问数据库的方法和装置
CN100424699C (zh) 一种属性可扩展的对象文件***
CN110633378A (zh) 一种支持超大规模关系网络的图数据库构建方法
CN107783988A (zh) 一种目录树的加锁方法及设备
CN100445991C (zh) 用于数据库***中大对象基础结构的***和方法
CN104391745A (zh) 一种可扩展的对象生命周期管理方法
KR101575639B1 (ko) 지도 서비스를 위한 타일 이미지 갱신 시스템 및 그 방법
CN105512325A (zh) 多版本数据索引的更新、删除与建立方法及装置
CN104573112A (zh) Oltp集群数据库中页面查询方法及数据处理节点
CN103207866A (zh) 一种基于分块策略的文件存储方法及***
CN105469173A (zh) 一种静态内存进行优化管理的方法
CN100468346C (zh) 一种绘图资源的管理方法及***
CN104133970A (zh) 一种数据空间管理方法及装置
CN101093450A (zh) 一种多cpu互斥的方法
CN112328389B (zh) 一种用于二叉树添加和删除结点的内存分配方法
CN102495838A (zh) 数据处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant