CN108073709A - 一种数据记录的操作方法、装置、设备和存储介质 - Google Patents

一种数据记录的操作方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN108073709A
CN108073709A CN201711386517.9A CN201711386517A CN108073709A CN 108073709 A CN108073709 A CN 108073709A CN 201711386517 A CN201711386517 A CN 201711386517A CN 108073709 A CN108073709 A CN 108073709A
Authority
CN
China
Prior art keywords
field
data
record
extended
length
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
CN201711386517.9A
Other languages
English (en)
Other versions
CN108073709B (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 CN201711386517.9A priority Critical patent/CN108073709B/zh
Publication of CN108073709A publication Critical patent/CN108073709A/zh
Application granted granted Critical
Publication of CN108073709B publication Critical patent/CN108073709B/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/2282Tablespace storage structures; Management thereof

Landscapes

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

Abstract

本发明实施例公开了一种数据记录的操作方法、装置、设备和存储介质。其中,该方法包括:在记录组织和解析时,将修改表结构操作所添加的列对应的扩展字段与建表时原始列对应的原始字段予以区别。具体内容包括:获取数据记录所在表的记录组织描述,记录组织描述获取表中原始列和添加列的个数,并根据原始列的个数与添加列之前其他添加列的个数,确定扩展字段的物理标识;根据原始字段的数据长度之和与扩展字段之前其他扩展字段的数据长度之和,确定扩展字段的数据偏移;根据扩展字段的物理标识和数据偏移,将字段数据顺序组织到数据记录中。本发明实施例的技术方案,在表添加列时,只对数据字典进行操作,不需要重建数据,提高了表添加列的效率。

Description

一种数据记录的操作方法、装置、设备和存储介质
技术领域
本发明实施例涉及数据库处理领域,尤其涉及一种数据记录的操作方法、装置、设备和存储介质。
背景技术
数据库中数据列表的行记录最普通的组织方法是按照表定义列的顺序来组织各个字段,我们称之为顺序组织方法,也有组织方法按照字段中先定长后变长类型的顺序,将定长类型的字段和变长类型的字段分别集中在一起,对记录中字段的组织顺序进行调整,我们称为调序组织方法。例如,表TAB的定义为(C1 VARCHAR(10),C2 INT,C3 VARBINARY(10),C4 INT);按照顺序组织方法,字段的顺序为C1、C2、C3、C4,按照调序组织方法,表TAB中C2、C4列是定长的,C1、C3列是变长的,字段的顺序为C2、C4、C1、C3。
与顺序组织方法相比,使用调序组织方法组织的所有记录中,不管变长数据如何取值,定长类型的字段在记录中的位置是固定的,在数据访问时可以根据其是第几个定长字段,获得其在记录中的数据偏移,不必从头开始遍历前导字段,能够有效的提高记录中数据访问的速度。
但是在表添加列时,调序组织方法存在不足。新加列在记录中对应的数据字段可能在其他字段之间,无法根据记录长度省略后续的字段,所以对于当前已经存在的数据,添加列时必须要重建数据,这会导致数据表添加列操作产生大量的IO,效率很低。
发明内容
本发明实施例提供了一种数据记录的操作方法、装置、设备和存储介质,使得保证大多数情况数据访问速度的前提下,在数据记录所在表添加列时,只需要对数据字典进行操作,不必重建数据,提高表添加列的效率。
第一方面,本发明实施例提供了一种数据列表的操作方法,该方法包括:
获取数据记录对应的记录组织描述,所述记录组织描述获取所述数据记录所在表中原始列和添加列的个数,并根据所述原始列的个数与所述添加列之前其他添加列的个数,确定所述数据记录中扩展字段的物理标识,所述扩展字段为所述数据记录所在表中添加列对应的字段;
获取所述数据记录中原始字段和扩展字段的数据长度,根据所述原始字段的数据长度之和与所述扩展字段之前其他扩展字段的数据长度之和,确定所述扩展字段的数据偏移,所述原始字段为所述数据记录所在表中原始列对应的字段;
根据每个扩展字段的物理标识和数据偏移,将每个扩展字段的数据顺序组织到所述数据记录中。
第二方面,本发明实施例提供了一种数据列表的操作装置,该装置包括:
组织描述获取模块,用于获取数据记录对应的记录组织描述,所述记录组织描述获取所述数据记录所在表中原始列和添加列的个数,并根据所述原始列的个数与所述添加列之前其他添加列的个数,确定所述数据记录中扩展字段的物理标识,所述扩展字段为所述数据记录所在表中添加列对应的字段;
数据偏移确定模块,用于获取所述数据记录中原始字段和扩展字段的数据长度,根据所述原始字段的数据长度之和与所述扩展字段之前其他扩展字段的数据长度之和,确定所述扩展字段的数据偏移,所述原始字段为所述数据记录所在表中原始列对应的字段;
数据组织模块,用于根据每个扩展字段的物理标识和数据偏移,将每个扩展字段的数据顺序组织到所述数据记录中。
第三方面,本发明实施例提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的数据记录的操作方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的数据记录的操作方法。
本发明实施例提供的一种数据记录的操作方法、装置、设备和存储介质,通过设定记录组织描述中对应扩展字段的物理标识,并根据数据记录中扩展字段的数据偏移,在原始字段之后顺序组织所有扩展字段,原始字段仍采用调序方式组织数据,保证了大多数情况下数据访问的速度;而且添加列后,之前已经存在的数据记录可以将其扩展字段的值解析为NULL,所以在表添加列操作时,只对数据字典进行操作,不需要重建数据,提高了表添加列的效率。
附图说明
图1为本发明实施例一提供的一种数据记录的操作方法的流程图;
图2为本发明实施例二提供的方法中生成记录组织描述的方法流程图;
图3为本发明实施例三提供的一种数据记录的操作方法的流程图;
图4为本发明实施例三提供的方法中组织数据记录的方法流程图;
图5为本发明实施例四提供的方法中解析数据记录的方法流程图;
图6为本发明实施例四提供的方法中解析数据记录的方法流程图;
图7为本发明实施例五提供的一种数据记录的操作装置的结构示意图;
图8为本发明实施例六提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据记录的操作方法的流程图,本实施例可适用于数据库技术中任一种对行存储方式的数据记录进行组织和解析的情况。本实施例提供的一种数据记录的操作方法可以由数据记录的操作装置来执行,该装置可以通过软件和/或硬件的方式来实现,并集成在执行本方法的设备中,在本实施例中执行本方法的设备可以是平板电脑、台式机和笔记本等任意一种可以对数据记录进行操作的智能终端。具体的,参考图1,该方法具体包括如下步骤:
S110,获取数据记录对应的记录组织描述。
具体的,数据记录为表结构中的行记录。为了在数据记录所在表中添加列,而不用重建数据,需要获取表定义时原始列的个数,并在原始列之后添加新加列。在表添加列时,需要对数据字典中的对象进行修改,具体的,数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据记录所在表中各列的逻辑标识、列名、存储类型和长度等做出详细的说明。进一步的,表添加列后,在数据字典中对各个添加列进行说明,将原始列的个数作为第一个添加列的逻辑标识在数据字典中进行记录,并依次增加逻辑标识来对应记录剩余的添加列,并记录添加列对应的列名、存储类型和长度等信息。优选的,为了区分表中的原始列和添加列,可以在数据字典中对各列进行描述时对应设置一个区分标识,例如,原始列通过字符“0”来进行标识,添加列通过字符“1”来进行标识。
进一步的,在需要对表中的数据记录中的数据进行组织或解析时,需要根据数据字典中的信息生成该表的记录组织描述。具体的,记录组织描述根据数据字典中对该表中各列信息的描述生成,是数据库中辅助组织和解析数据记录的内存结构。进一步的,本实施例中的记录组织描述根据数据字典中对表中各列信息的描述,获取表中原始列和添加列的个数,并根据原始列的个数与添加列之前其他添加列的个数,确定数据记录中扩展字段的物理标识。具体的,物理标识表示字段存储在数据记录中的实际顺序,优选的,物理标识可以为字段在数据记录中的物理ID,相应的,在数据记录所在表定义时该字段对应列的顺序为字段的逻辑标识,优选的,字段的逻辑标识可以为数据记录中该字段在表定义时对应的列的逻辑ID。例如,前文表TAB中C1列在数据记录中的对应字段的逻辑ID为0,物理ID为2。具体的,记录组织描述根据数据记录所在表中的列信息对数据记录中的每个字段信息进行描述,其中可以包括数据记录中的字段个数、各字段信息数组和记录物理格式中字段的逻辑ID数组。进一步的,记录组织描述根据数据字典中对数据记录所在表中各列的区分标识,获得其中原始列和添加列的个数,并通过调序组织方法生成对于原始列在数据记录中对应的原始字段的描述信息,确定添加列在数据记录中对应的扩展字段的物理标识,其中,扩展字段为数据记录所在表中的添加列在数据记录中对应的字段。具体的,各字段信息数组中各字段按照对应的逻辑ID排列,各个字段的信息数组中可以包括字段的物理ID、数据类型和加密压缩信息等内容;记录逻辑ID数组中登记了各个字段物理ID与逻辑ID的对应关系。进一步的,记录组织描述在对数据记录中的数据进行组织或解析的时候根据数据字典生成,当不需要对数据记录中的数据进行组织或解析时,可以相应删除对应的记录组织描述,节约资源。
进一步的,对数据记录中的字段数据进行组织或解析时,首先根据数据字典中对数据记录所在表中各个列信息的描述,根据区分标识区分出表中的原始列与添加列,并通过调序组织方法确定原始列的物理标识,根据原始列的个数与添加列之前其他添加列的个数,确定添加列的物理标识,记录各个字段物理ID与逻辑ID的对应关系,生成记录组织描述。在对数据记录中的字段数据进行组织或解析时,获取该数据记录对应生成的记录组织描述。
S120,获取数据记录中每个原始字段和扩展字段的数据长度,根据原始字段的数据长度之和与扩展字段之前其他扩展字段的数据长度之和,确定扩展字段的数据偏移。
具体的,对表中数据记录中的数据进行组织时,首先获取该数据记录对应的记录组织描述,获取到对应的记录组织描述时,也就确定了数据记录中各个字段的物理标识。在数据记录组织数据时,在保证大多数情况数据访问速度的前提下,为了添加列时不必重建数据,需要将扩展字段的数据组织到原始字段之后,为了确定各个扩展字段在数据记录中的位置,则需要获取数据记录中每个原始字段和每个扩展字段的数据长度,从而确定扩展字段在数据记录中的数据偏移。
进一步的,原始字段可以包括定长字段和变长字段,相应的,原始列可以包括定长列和变长列,具体的,定长字段为定义数据记录所在表时根据数据类型确定的固定数据长度的列在该数据记录中对应的字段,变长字段为定义数据记录所在表时可以自定义数据长度的列在该数据记录中对应的字段,例如,表TAB的定义为(C1 VARCHAR(10),C2 INT,C3VARBINARY(10),C4 INT),其中,C2列和C4列中的数据为整形数据,占有4个字节,是表TAB中的定长列,对应在数据记录中的字段为定长字段,C1列中的数据为字符数据,在数据记录中的对应字段可以存储可变长度的字符串,占有的字节数可以自定义改变,C3列中的数据为二进制数据,在数据记录中的对应字段可以存储可变长度的二进制数,占有的字节数可以自定义改变,C1列和C3列是表TAB中的变长列,对应在数据记录中的字段为变长字段。进一步的,记录组织描述还可以获取数据记录所在表定义时原始列中定长列的数据长度,由于数据记录中的原始字段通过调序组织方法根据先定长后变长的顺序来组织,所以可以根据定长列的数据长度之和确定表中第一个变长列的数据偏移,从而确定数据记录中第一个变长字段的数据偏移,其中,第一个变长字段为数据记录所在表中第一个变长列在该数据记录中对应的字段。进一步的,记录组织描述还可以包括数据记录中的原始字段个数、定长字段个数和第一个变长字段的数据偏移,各个字段的信息数组中还可以包括字段的数据偏移。其中,由于记录组织描述是根据数据字典生成的,并不涉及字段数据,因此字段信息数组中的数据偏移只对原始字段中的定长字段有效,是该字段在数据记录中的位置。
进一步的,在对数据记录中的字段数据进行组织时,首先获取该数据记录对应的记录组织描述中字段的物理标识,通过调序组织方法对数据记录中原始字段的数据进行组织,为了确定扩展字段在数据记录中的位置,获取数据记录中每个原始字段和每个扩展字段的数据长度,并根据原始字段的数据长度之和与扩展字段之前其他扩展字段的数据长度之和,确定每个扩展字段在数据记录中的数据偏移。
S130,根据每个扩展字段的物理标识和数据偏移,将每个扩展字段的数据顺序组织到数据记录中。
具体的,对数据记录中的原始字段的数据通过调序组织方法进行组织,对于扩展字段,在确定了每个扩展字段的物理标识和数据偏移后,获取扩展字段中最后一个非NULL数据的物理ID,从第一个扩展字段的物理ID开始,将扩展字段对应的字段值顺序添加到该扩展字段在数据记录中对应的数据偏移位置处,直到最后一个非NULL数据的物理ID为止。
进一步的,将每个扩展字段的数据顺序组织到数据记录中包括:依据记录格式将每个扩展字段的数据顺序组织到数据记录中的扩展字段区。
具体的,本实施例对数据记录中进行数据组织的记录格式进行定义,如表1所示,在数据库中,数据记录一般分为记录头、数据部分和记录尾三部分。
表1
其中,记录头中登记了记录的长度、各个字段的控制信息以及其他信息;数据部分在调序组织方法的定长字段区和变长字段区的基础上,添加了扩展字段区;记录尾登记一些校验或附加信息。
本发明实施例中具体关注记录头中的记录长度、控制信息和数据部分,不关注记录头中的其他内容和记录尾。
具体的,记录头中的记录长度是整个记录的总长度;控制信息包括各个字段是否为NULL、是否压缩等信息,因此字段的控制信息并不多,几个比特(bit)就可以表示完毕,所有字段的控制信息集中在一起可以将其集中在少数几个字节中,减少使用的空间。其中,记录头中的控制信息只包括数据部分中原始字段的控制信息,并不包括扩展字段区中各扩展字段的控制信息。本实施例中,关注的字段信息为是否为NULL和是否压缩,因此每个字段用2bit进行控制,示例性的,控制信息通过00、01、10来表示,其中,00表示为NULL,01表示非NULL,10表示非NULL压缩。
进一步的,数据部分是各字段数据的字段值,具体的,定长字段区包括定长字段值;变长字段区包括变长字段的数据长度和字段值;扩展字段区包括扩展字段的控制信息、数据长度和字段值。其中,原始字段的控制信息在记录头中,在数据部分的定长字段区登记定长字段值,定长字段的数据长度不需要登记,变长字段区登记变长字段的数据长度和字段值。进一步的,定长字段区不管其值是否为NULL,在数据部分都有其值空间,空间的长度为该定长字段的数据类型的长度,而如果变长字段区的变长字段值为NULL,在数据部分没有其值空间。进一步的,扩展字段区中,若某个扩展字段及其之后所有的字段都为NULL,则这些字段不必写入记录中,如果中间扩展字段为NULL,则不管该扩展字段是否是定长的,都只有控制信息部分,没有后续的值空间。
进一步的,根据记录组织描述获取扩展字段中最后一个非NULL数据的物理ID,从第一个扩展字段的物理ID开始,将扩展字段对应的字段值根据定义的记录格式顺序组织到数据记录的扩展字段区中对应的数据偏移位置处,直到最后一个非NULL数据的物理ID为止。
本实施例的技术方案,通过设定记录组织描述中对应扩展字段的物理标识,并根据数据记录中扩展字段的数据偏移,在原始字段之后顺序组织所有扩展字段,原始字段仍采用调序方式组织数据,保证了大多数情况下数据访问的速度;而且添加列后,之前已经存在的数据记录可以将其扩展字段的值解析为NULL,所以在表添加列操作时,只对数据字典进行操作,不需要重建数据,提高了表添加列的效率。
实施例二
图2为本发明实施例二提供的方法中生成记录组织描述的方法流程图。本发明实施例二是在上述实施例的基础上,对根据数据字典生成的记录组织描述的流程作进一步示例性说明。
如图2所示,记录组织描述根据数据库的数据字典自动生成,生成步骤大致分为两步。
第一步,遍历添加扩展字段后的数据记录所在表中所有列的字段对象,填充各字段的信息。对于原始字段,统计该字段之前字段中定长字段的个数和数据长度之和。其中,若为定长字段,设置其物理ID为该字段之前定长字段的个数,数据偏移为该字段之前定长字段的数据长度之和;若为变长字段,暂设置其物理ID为-1,数据偏移不作计算。对于扩展字段,登记该字段在数据记录所在表中对应的列信息,其物理ID等于对应的逻辑ID,也就是在原始字段的个数的基础上根据该字段之前扩展字段的个数顺序增加;第二步,将数据记录所在表中所有的列都处理完毕后,再遍历字段信息数组中的原始字段,设置其中变长字段的物理ID。
具体的,生成的记录组织描述中可以包括数据记录中的字段个数、原始字段个数、定长字段个数、第一个变长字段数据偏移、各字段信息数组和记录物理格式中字段的逻辑ID数组。其中,第一个变长字段数据偏移为原始字段中定长字段的数据长度之和;记录逻辑ID数组表示各字段按照对应的物理ID排列后顺序对应的逻辑ID。
例如,表TAB定义为(C1VARCHAR(10),C2INT,C3VARBINARY(10),C4INT),在添加列C5INT,C6VARBINARY之后,对该表TAB中的数据记录进行组织时,生成的记录组织描述的内容如表2所示。
表2
本实施例的技术方案,通过设定记录组织描述中对应扩展字段的物理标识,并根据数据记录中扩展字段的数据偏移,在原始字段之后顺序组织所有扩展字段,原始字段仍采用调序方式组织数据,保证了大多数情况下数据访问的速度;而且添加列后,之前已经存在的数据记录可以将其扩展字段的值解析为NULL,所以在表添加列操作时,只对数据字典进行操作,不需要重建数据,提高了表添加列的效率。
实施例三
图3为本发明实施例三提供的一种数据记录的操作方法的流程图。本实施例是在上述实施例的基础上对数据记录中各字段数据的组织方法进行优化。参见图3,本实施例的方法具体包括:
S210,根据调序方式组织原始字段,并确定第一个扩展字段的数据偏移。
具体的,对数据记录中的各字段数据进行组织时,根据调序组织记录的方式,第一个变长字段的数据偏移不发生变化。进一步的,根据原始字段中每个变长字段的数据长度确定变长字段的数据长度之和,从第一个变长字段的数据偏移开始,顺序组织变长字段的数据,并根据记录组织描述中的第一个变长字段的数据偏移与变长字段的数据长度之和,确定第一个扩展字段的数据偏移。
S220,根据第一个扩展字段的数据偏移与扩展字段之前的其他扩展字段的数据长度之和,确定扩展字段的数据偏移。
具体的,确定第一个扩展字段的数据偏移后,对所有扩展字段的数据进行组织,首先根据每个扩展字段的数据长度确定该扩展字段之前的其他扩展字段的数据长度之和。进一步的,根据第一个扩展字段的数据偏移与该扩展字段之前的其他扩展字段的数据长度之和,确定该扩展字段的数据偏移,根据同样的方法依次确定所有扩展字段在数据记录中的数据偏移。
S230,根据每个扩展字段的物理标识和数据偏移,依据记录格式将每个扩展字段的数据顺序组织到数据记录中的扩展字段区。
本实施例的技术方案,根据数据记录中扩展字段的数据偏移,在原始字段之后顺序组织所有扩展字段,原始字段仍采用调序方式组织数据,保证了大多数情况下数据访问的速度,而且添加列后,之前已经存在的数据记录可以将其扩展字段的值解析为NULL,在表添加列操作时,只对数据字典进行操作,不需要重建数据,提高了表添加列的效率。
进一步的,对增加扩展字段后的数据记录中各字段数据的组织方法进行进一步示例性描述。对增加扩展字段后的数据记录中各字段数据进行组织,就是对数据记录所在表添加列后的数据记录重新组织。
具体的,本实施例中数据记录中各字段数据的组织方法是根据数据记录中各字段的物理顺序,即各字段的物理ID,按照记录格式中指定的方法组织数据记录中所有的字段数据,顺序按照对应的物理ID写入到数据记录中。如图4所示,数据记录组织的步骤大致如下:
第一步,根据物理ID组织原始字段数据,填写数据记录中数据部分的定长字段区和变长字段区的数据,并在记录头设置相应的控制信息;第二步,获取扩展字段中最后一个非NULL字段的物理ID,将其设置为记录中最后需要写入数据的物理ID;第三步,从第一个扩展字段的物理ID开始到最后需要写入数据的物理ID为止,根据记录组织描述中的字段信息逐次计算扩展字段的数据偏移,组织其间的数据,将对应的字段值顺序写入到数据记录中。
示例性的,表TAB定义为(C1 VARCHAR(10),C2 INT,C3 VARBINARY(10),C4 INT),其中未添加列时,表TAB的数据记录(‘c1_value’,2,‘c3_value’,4)的组织格式如表3所示。
表3
在表TAB添加列C5 INT,C6 VARBINARY之后,表TAB的数据记录(‘c1_value’,2,‘c3_value’,4,NULL,NULL)的组织格式仍如表3所示。表TAB的数据记录(NULL,NULL,‘c3_value’,4,NULL,0x1234)的组织格式如表4所示。
表4
实施例四
图5为本发明实施例四提供的一种数据记录的操作方法中解析数据记录的方法流程图。在上述实施例的基础上,本发明实施例还包括:根据记录组织描述中待解析数据记录中字段的物理标识解析待解析数据记录中的字段,获取字段的字段值。
具体的,当用户需要解析数据记录时,根据待解析数据记录对应的记录组织描述中各个字段的物理标识,也就是物理ID,解析待解析数据记录中的字段。其中该字段包括待解析数据记录中的每个字段或指定字段。具体的,根据数据记录解析后的使用情况,将解析待解析数据记录中的字段分为顺序解析待解析数据记录中的每个字段,获取每个字段的字段值,以及根据设定的列标识解析该列在待解析数据记录中对应的指定字段,获取该指定字段的字段值。进一步的,顺序解析待解析数据记录中的每个字段时,从起始字段开始,获取该字段的字段值,并将待解析数据指针逐次后移该字段的数据长度,获取下一字段的字段值,直到处理完待解析数据记录中的所有字段。
进一步的,顺序解析待解析数据记录中的每个字段,获取每个字段的字段值包括:将待解析数据指针设置为待解析数据记录中数据部分的起始位置,当前物理ID设置为0;根据当前物理ID获取当前逻辑ID,并根据逻辑ID在记录组织描述中获取对应的字段信息;根据字段信息解析对应字段的字段值,并根据当前字段的数据长度后移待解析数据指针;增加当前物理ID值,此时若所有字段都处理完毕,则结束;若待解析数据指针没有处理完毕,且没有移动到记录尾,则依次循环获取下一个字段的字段值,若待解析数据指针已经移动到记录尾,则后续物理ID对应的字段都设置为NULL后返回,从而获取待解析数据记录中各个字段的字段值。其中,待解析数据记录可以分为包含扩展字段和未包含扩展字段的数据记录。
进一步的,根据设定的列标识解析该列在待解析数据记录中对应的指定字段,获取该指定字段的字段值时,通过列标识确定该字段的物理标识,并根据该字段之前其他字段的数据长度之和,确定该字段的数据偏移,获取数据记录中的该数据偏移处获取该字段的字段值。
进一步的,在上述技术方案的基础上,对获取字段的字段值,根据数据记录中的字段类型进行进一步说明。数据记录中的字段可以分为原始字段中的定长字段和变长字段,以及扩展字段三种。具体参考图5,获取字段的字段值可以包括:
S310,根据字段的物理标识与原始字段的个数确定字段的字段类型。
具体的,字段的物理标识优选为物理ID,通过在数据记录中将扩展字段组织到原始字段之后,各字段的物理ID顺序设定。所以当字段的物理ID小于原始字段的个数时,该字段为原始字段;当字段的物理ID大于或等于原始字段的个数时,该字段为扩展字段。
S320,判断字段是否为原始字段。若是,执行S330;若否,执行S340。
S330,根据字段的数据偏移与记录头中的控制信息获取字段的字段值。
具体的,当字段为原始字段时,原始字段的控制信息在记录头中,根据对应的控制信息确定该字段是否为空,若为空则返回,字段值设为NULL;若不为空,在该字段确定的数据偏移处获取该字段对应的字段值。
S340,根据字段的数据偏移与扩展字段区中字段的控制信息获取字段的字段值。
具体的,当字段为扩展字段时,扩展字段的控制信息在扩展字段区中,在该字段确定的数据偏移处获取扩展字段区中对应的控制信息,并根据该控制信息确定该字段是否为空,若为空则返回,字段值设为NULL;若不为空,则在确定的数据偏移处获取该字段对应的字段值。进一步的,若该字段的数据偏移与该记录长度相等,则设定该字段的字段值为NULL。
本实施例的技术方案,通过设定记录格式解析对应数据偏移处的字段,并获取对应字段的字段值,表添加列后的数据记录中原始字段的数据能够正确解析,所以添加列时不必重建数据。
进一步的,对数据记录的操作方法中的获取指定字段的字段值方法进行示例性描述。如图6所示,获取指定字段的字段值的步骤大致如下:
第一步,根据该字段在数据记录所在表中的列标识,从对应的记录组织描述的字段信息数组中获取该字段的信息;第二步,根据字段信息中对应的物理ID与记录组织描述中的原始字段的个数,判断出该字段是否是原始字段,若是则执行第三步,若否则执行第七步;第三步,如果是原始字段,则获取记录头中的控制信息,判断该字段是否为NULL,为NULL则返回,若不为NULL,则执行第四步;第四步,比较物理ID和定长字段个数,判断该字段是否是定长字段,若是则执行第五步,若否则执行第六步;第五步,根据字段信息中对应的数据偏移,获取该数据偏移处的字段值后返回;第六步,从第一个变长字段的物理ID开始遍历各变长字段,从第一个变长字段的数据偏移开始,根据变长字段的数据长度定位到指定字段的数据偏移处,并获取该对应数据偏移处的字段值后返回;第七步,从第一个变长字段的物理ID开始遍历各变长字段,跳过所有原始字段,定位到第一个扩展字段的数据偏移位置处;第八步、如果当前数据偏移位置已经到记录结尾,则将该字段的字段值置为NULL后返回,否则执行第九步;第九步,若当前ID所属字段是指定字段的物理ID,则执行第十步,否则获取该字段的数据长度,将数据偏移位置后移该字段的数据长度后执行第八步;第十步,解析当前字段的字段值并返回。
实施例五
图7为本发明实施例五提供的一种数据记录的操作装置的结构示意图,如图7所示,该装置包括:
组织描述获取模块501,用于获取表的记录组织描述,记录组织描述获取表中原始各列的描述,同时获取原始列和添加列的个数,并根据原始列的个数与添加列之前其他添加列的个数,确定数据记录中扩展字段的物理标识,扩展字段为数据记录所在表中添加列对应的字段。
数据偏移确定模块502,用于获取数据记录中原始字段和扩展字段的数据长度,根据原始字段的数据长度之和与扩展字段之前其他扩展字段的数据长度之和,确定扩展字段的数据偏移,原始字段为数据记录所在表中原始列对应的字段。
数据组织模块503,用于根据每个扩展字段的物理标识和数据偏移,将每个扩展字段的数据顺序组织到数据记录中。
本实施例的技术方案,通过设定记录组织描述中对应扩展字段的物理标识,并根据数据记录中扩展字段的数据偏移,在原始字段之后顺序组织所有扩展字段,不影响数据记录中原始字段的数据,保证了大多数情况下数据访问的速度,而且在表添加列操作时,只对数据字典进行操作,不需要重建数据,提高了表添加列的效率。
进一步的,原始字段可以包括定长字段和变长字段。
进一步的,上述数据偏移确定模块502可以具体用于:根据记录组织描述中的第一个变长字段的数据偏移与变长字段的数据长度之和,确定第一个扩展字段的数据偏移;根据第一个扩展字段的数据偏移与扩展字段之前的其他扩展字段的数据长度之和,确定扩展字段的数据偏移。
进一步的,上述数据组织模块503可以具体用于:依据记录格式将每个扩展字段的数据顺序组织到数据记录中的扩展字段区。
进一步的,上述装置还可以包括:字段解析模块504,用于在确定扩展字段的数据偏移之后,根据记录组织描述中待解析数据记录中字段的物理标识与数据偏移解析待解析数据记录中的字段,获取字段的字段值;字段包括待解析数据记录中的每个字段或指定字段。
进一步的,上述字段解析模块504可以具体用于:根据字段的物理标识与原始字段的个数确定字段的字段类型;当字段为原始字段时,根据字段的数据偏移与记录头中的控制信息获取字段的字段值;当字段为扩展字段时,根据字段的数据偏移与扩展字段区中字段的控制信息获取字段的字段值。
本实施例提供的数据记录的操作装置适用于上述任意实施例提供的数据记录的操作方法,具备相应的功能和有益效果。
实施例六
图8为本发明实施例六提供的一种设备的结构示意图。如图8所示,该设备包括处理器60、存储装置61和通信装置62;设备中处理器60的数量可以是一个或多个,图8中以一个处理器60为例;设备的处理器60、存储装置61和通信装置62可以通过总线或其他方式连接,图8中以通过总线连接为例。
存储装置61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据记录的操作方法对应的模块(例如,用于数据记录的操作装置中的组织描述获取模块501、数据偏移确定模块502和数据组织模块503)。处理器60通过运行存储在存储装置61中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据记录的操作方法。
存储装置61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置62可用于实现网络连接或者移动数据连接。
本实施例提供的一种设备可用于执行上述任意实施例提供的数据记录的操作方法,具备相应的功能和有益效果。
实施例七
本发明实施例七还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述任意实施例中的数据记录的操作方法。该方法具体包括:
获取数据记录所在表的记录组织描述,所述记录组织描述获取表中原始列和添加列的个数,并根据原始列的个数与添加列之前其他添加列的个数,确定数据记录中扩展字段的物理标识,扩展字段为数据记录所在表中添加列对应的字段;
获取数据记录中每个原始字段和扩展字段的数据长度,根据原始字段的数据长度之和与扩展字段之前其他扩展字段的数据长度之和,确定扩展字段的数据偏移,原始字段为数据记录所在表中原始列对应的字段;
根据每个扩展字段的物理标识和数据偏移,将每个扩展字段的数据顺序组织到数据记录中。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据记录的操作方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据记录的操作方法,其特征在于,包括:
获取数据记录所在表的记录组织描述,所述记录组织描述获取所述表中原始列和添加列的个数,并根据所述原始列的个数与所述添加列之前其他添加列的个数,确定所述数据记录中扩展字段的物理标识,所述扩展字段为所述数据记录所在表中添加列对应的字段;
获取所述数据记录中每个原始字段和扩展字段的数据长度,根据所述原始字段的数据长度之和与所述扩展字段之前其他扩展字段的数据长度之和,确定所述扩展字段的数据偏移,所述原始字段为所述数据记录所在表中原始列对应的字段;
根据每个扩展字段的物理标识和数据偏移,将每个扩展字段的数据顺序组织到所述数据记录中。
2.根据权利要求1所述的方法,其特征在于,所述原始字段包括定长字段和变长字段;
相应的,所述原始列包括定长列和变长列,所述记录组织描述获取所述定长列的数据长度,根据所述定长列的数据长度之和确定所述数据记录中第一个变长字段的数据偏移,所述第一个变长字段为所述数据记录所在表中第一个变长列对应的字段。
3.根据权利要求2所述的方法,其特征在于,所述根据所述原始字段的数据长度之和与所述扩展字段之前其他扩展字段的数据长度之和,确定所述扩展字段的数据偏移包括:
根据所述记录组织描述中的第一个变长字段的数据偏移与所述变长字段的数据长度之和,确定第一个扩展字段的数据偏移;
根据所述第一个扩展字段的数据偏移与所述扩展字段之前的其他扩展字段的数据长度之和,确定所述扩展字段的数据偏移。
4.根据权利要求1所述的方法,其特征在于,所述将每个扩展字段的数据顺序组织到所述数据记录中包括:
依据记录格式将每个扩展字段的数据顺序组织到所述数据记录中的扩展字段区,所述记录格式包括记录头和数据部分,所述扩展字段区包括所述扩展字段的控制信息、数据长度和字段值。
5.根据权利要求1所述的方法,其特征在于,所述确定所述扩展字段的数据偏移之后,还包括:
根据所述记录组织描述中待解析数据记录中字段的物理标识与数据偏移解析所述待解析数据记录中的字段,获取所述字段的字段值,所述字段包括所述待解析数据记录中的每个字段或指定字段。
6.根据权利要求5所述的方法,其特征在于,所述获取所述字段的字段值包括:
根据所述字段的物理标识与所述原始字段的个数确定所述字段的字段类型;
当所述字段为原始字段时,根据所述字段的数据偏移与所述记录头中的控制信息获取所述字段的字段值;
当所述字段为扩展字段时,根据所述字段的数据偏移与所述扩展字段区中所述字段的控制信息获取所述字段的字段值。
7.一种数据记录的操作装置,其特征在于,包括:
组织描述获取模块,用于获取数据记录对应的记录组织描述,所述记录组织描述获取所述数据记录所在表中原始列和添加列的个数,并根据所述原始列的个数与所述添加列之前其他添加列的个数,确定所述数据记录中扩展字段的物理标识,所述扩展字段为所述数据记录所在表中添加列对应的字段;
数据偏移确定模块,用于获取所述数据记录中原始字段和扩展字段的数据长度,根据所述原始字段的数据长度之和与所述扩展字段之前其他扩展字段的数据长度之和,确定所述扩展字段的数据偏移,所述原始字段为所述数据记录所在表中原始列对应的字段;
数据组织模块,用于根据每个扩展字段的物理标识和数据偏移,将每个扩展字段的数据顺序组织到所述数据记录中。
8.根据权利要求7所述的装置,其特征在于,还包括:
数据解析模块,用于在确定所述扩展字段的数据偏移之后,根据所述记录组织描述中待解析数据记录中字段的物理标识与数据偏移解析所述待解析数据记录中的字段,获取所述字段的字段值,所述字段包括所述待解析数据记录中的每个字段或指定字段。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的数据记录的操作方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的数据记录的操作方法。
CN201711386517.9A 2017-12-20 2017-12-20 一种数据记录的操作方法、装置、设备和存储介质 Active CN108073709B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711386517.9A CN108073709B (zh) 2017-12-20 2017-12-20 一种数据记录的操作方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711386517.9A CN108073709B (zh) 2017-12-20 2017-12-20 一种数据记录的操作方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN108073709A true CN108073709A (zh) 2018-05-25
CN108073709B CN108073709B (zh) 2020-07-24

Family

ID=62159007

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711386517.9A Active CN108073709B (zh) 2017-12-20 2017-12-20 一种数据记录的操作方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN108073709B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107679245A (zh) * 2017-10-30 2018-02-09 山东浪潮通软信息科技有限公司 一种组织架构调整方法及装置
CN112835886A (zh) * 2019-11-25 2021-05-25 浙江大搜车软件技术有限公司 数据表字段添加方法和装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146816A (ja) * 1995-11-17 1997-06-06 Nec Corp テーブル展開方式
CN101105813A (zh) * 2007-09-11 2008-01-16 金蝶软件(中国)有限公司 一种数据库扩展方法及装置
CN103617284A (zh) * 2013-12-11 2014-03-05 北京金和软件股份有限公司 一种数据字段扩展方法
US20140164443A1 (en) * 2012-12-06 2014-06-12 Microsoft Corporation Database scale-out
CN104346466A (zh) * 2014-11-12 2015-02-11 中国建设银行股份有限公司 数据库中添加新属性数据的方法和装置
CN105808540A (zh) * 2014-12-29 2016-07-27 金蝶软件(中国)有限公司 配置数据存储方法和***
CN106469224A (zh) * 2016-09-26 2017-03-01 武汉工程大学 一种用于SaaS平台的可扩展数据模型

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146816A (ja) * 1995-11-17 1997-06-06 Nec Corp テーブル展開方式
CN101105813A (zh) * 2007-09-11 2008-01-16 金蝶软件(中国)有限公司 一种数据库扩展方法及装置
US20140164443A1 (en) * 2012-12-06 2014-06-12 Microsoft Corporation Database scale-out
CN103617284A (zh) * 2013-12-11 2014-03-05 北京金和软件股份有限公司 一种数据字段扩展方法
CN104346466A (zh) * 2014-11-12 2015-02-11 中国建设银行股份有限公司 数据库中添加新属性数据的方法和装置
CN105808540A (zh) * 2014-12-29 2016-07-27 金蝶软件(中国)有限公司 配置数据存储方法和***
CN106469224A (zh) * 2016-09-26 2017-03-01 武汉工程大学 一种用于SaaS平台的可扩展数据模型

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107679245A (zh) * 2017-10-30 2018-02-09 山东浪潮通软信息科技有限公司 一种组织架构调整方法及装置
CN112835886A (zh) * 2019-11-25 2021-05-25 浙江大搜车软件技术有限公司 数据表字段添加方法和装置

Also Published As

Publication number Publication date
CN108073709B (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
US10915450B2 (en) Methods and systems for padding data received by a state machine engine
US10372653B2 (en) Apparatuses for providing data received by a state machine engine
US9535861B2 (en) Methods and systems for routing in a state machine
US10671295B2 (en) Methods and systems for using state vector data in a state machine engine
CN105659274A (zh) 用于在可重构平台中解码数据流的方法和设备
EP0548094A1 (en) Active storage means in a reduction processor
CN115499312B (zh) 基于fpga后端p4多模态智能网卡的整合配置方法
CN108073709A (zh) 一种数据记录的操作方法、装置、设备和存储介质
CN108664546A (zh) Xml数据结构转换方法和装置
WO2021031110A1 (zh) 配置文件生成方法及装置、存储介质
CN116186045A (zh) 稀疏矩阵的调整方法、装置、电子设备及存储介质
CN111788552A (zh) 用于低等待时间硬件存储器的***和方法
Kuno The augmented predictive analyzer for context-free languages—its relative efficiency
CN114328486A (zh) 基于模型的数据质量核查方法及装置
CN101141438B (zh) 消息数据单元的分析方法
CN116126429B (zh) 一种非数据类型对象的引用持久化及其恢复的方法
CN107547648A (zh) 一种内部数据复制方法及装置
CN107221067A (zh) 一种流水号存取控制方法及***
CN113408245A (zh) 基于gep的区块链数据编解码方法、装置、设备及介质
Das et al. A survey on bit dimension optimization strategies of microprograms
JP2001092711A (ja) Edifactデータ及びユーザデータ間の変換方法およびこの方法をコンピュータに実行させるためのプログラムを記録した記録媒体
US20070255911A1 (en) Method of optimising writing by a master block into a fifo type interfacing device between this master block and a slave block, and the corresponding computer program product
JPH09185565A (ja) プログラム転送機能付ネットワークシステム
JPS62290937A (ja) プログラム変換方式

Legal Events

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