CN115905209A - 编码方法及装置 - Google Patents

编码方法及装置 Download PDF

Info

Publication number
CN115905209A
CN115905209A CN202111162443.7A CN202111162443A CN115905209A CN 115905209 A CN115905209 A CN 115905209A CN 202111162443 A CN202111162443 A CN 202111162443A CN 115905209 A CN115905209 A CN 115905209A
Authority
CN
China
Prior art keywords
character string
storage area
data
field
address storage
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.)
Pending
Application number
CN202111162443.7A
Other languages
English (en)
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.)
4Paradigm Beijing Technology Co Ltd
Original Assignee
4Paradigm Beijing Technology 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 4Paradigm Beijing Technology Co Ltd filed Critical 4Paradigm Beijing Technology Co Ltd
Priority to CN202111162443.7A priority Critical patent/CN115905209A/zh
Publication of CN115905209A publication Critical patent/CN115905209A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本公开提供了一种编码方法及装置。该方法包括:获取待编码数据;将待编码数据中每个基本类型字段按在待编码数据的顺序,连续存放在基础类型存储区域,其中,每个基础类型字段按各自类型的实际字节长度进行存放;针对待编码数据中每行,将当前行的每个字符串字段的字符串数据的地址按对应的字符串字段在当前行的顺序,连续存放在字符串地址存储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放,字符串地址存储区域位于基础类型存储区域之后;将重新存储后的待编码数据作为编码后的数据。

Description

编码方法及装置
技术领域
本申请涉及数据处理领域,以下描述涉及一种编码方法及装置。
背景技术
目前,在内存数据库或者其他对内存占用比较敏感的场景中,内存占用 和编解码效率以及能否高效做projection(一次读取部分列)是系统中很重要的 几个指标。相关技术如tidb编解码和spark编解码等占用内存均较大,无法 满足内存数据库的要求。如图1所示spark编解码,基本类型字段都是固定字 节长度,如基本类型字段都是占用8字节,当存在基本类型bool时,由于其 只需占用1字节,实际用8字节,则造成了内存浪费;而且基础类型与字符 串混合存放(如int\double为基础字段,string为字符串),也造成后续解码较复杂。
发明内容
本公开的示例性实施例可至少解决上述问题,也可不解决上述问题。
根据本公开的第一方面,提供了一种编码方法,该方法包括:获取待编 码数据;将待编码数据中每个基本类型字段按在待编码数据的顺序,连续存 放在基础类型存储区域,其中,每个基础类型字段按各自类型的实际字节长 度进行存放;针对待编码数据中每行,将当前行的每个字符串字段的字符串 数据的地址按对应的字符串字段在当前行的顺序,连续存放在字符串地址存 储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放, 字符串地址存储区域位于基础类型存储区域之后;将重新存储后的待编码数据作为编码后的数据。
可选地,将当前行的每个字符串字段的字符串数据的地址按对应的字符 串字段在当前行的顺序,连续存放在字符串地址存储区域,包括:将当前行 的每个字符串字段的字符串数据按在当前行的顺序,连续存放在字符串数据 存储区域;将字符串数据在字符串数据存储区域的地址按对应的字符串字段 在当前行的顺序,连续存放在字符串地址存储区域,其中,字符串地址存储 区域位于基础类型存储区域之后且位于字符串数据存储区域之前,字符串地 址存储区域的字节长度是固定的。
可选地,字符串地址存储区域的字节长度通过如下方式确定:确定字符 串地址存储区域之前所有区域的字节长度;对于待编码数据的每行,通过字 符串地址存储区域之前所有区域的字节长度、当前行的字段个数和当前行的 所有字符串字段的字符串数据的字节长度,确定字符串地址存储区域的字节 长度。
可选地,字符串地址存储区域之前所有区域包括:基础类型存储区域、 用于标识当前行的每个字段是否为NULL的区域和用于标识编码后的当前行 的总字节长度的区域。
可选地,用于标识当前行的每个字段是否为NULL的区域的字节长度通 过如下方式确定:获取当前行的字段个数;将当前行的字段个数加上7后再 除以8;将得到的整数作为用于标识当前行的每个字段是否为NULL的区域 的字节长度。
可选地,字符串地址存储区域之前所有区域还包括:用于标识编码后的 数据的编码方式的版本号的区域或用于标识待编码数据的版本号的区域。
根据本公开的第二方面,提供了一种编码装置,该装置包括:获取单元, 被配置为获取待编码数据;基本类型存放单元,被配置为将待编码数据中每 个基本类型字段按在待编码数据的顺序,连续存放在基础类型存储区域,其 中,每个基础类型字段按各自类型的实际字节长度进行存放;字符串存放单 元,被配置为针对待编码数据中每行,将当前行的每个字符串字段的字符串 数据的地址按对应的字符串字段在当前行的顺序,连续存放在字符串地址存 储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放, 字符串地址存储区域位于基础类型存储区域之后;确定单元,被配置为将重 新存储后的待编码数据作为编码后的数据。
可选地,字符串存放单元,还被配置为将当前行的每个字符串字段的字 符串数据按在当前行的顺序,连续存放在字符串数据存储区域;将字符串数 据在字符串数据存储区域的地址按对应的字符串字段在当前行的顺序,连续 存放在字符串地址存储区域,其中,字符串地址存储区域位于基础类型存储 区域之后且位于字符串数据存储区域之前,字符串地址存储区域的字节长度 是固定的。
可选地,字符串地址存储区域的字节长度通过如下方式确定:确定字符 串地址存储区域之前所有区域的字节长度;对于待编码数据的每行,通过字 符串地址存储区域之前所有区域的字节长度、当前行的字段个数和当前行的 所有字符串字段的字符串数据的字节长度,确定字符串地址存储区域的字节 长度。
可选地,字符串地址存储区域之前所有区域包括:基础类型存储区域、 用于标识当前行的每个字段是否为NULL的区域和用于标识编码后的当前行 的总字节长度的区域。
可选地,用于标识当前行的每个字段是否为NULL的区域的字节长度通 过如下方式确定:获取当前行的字段个数;将当前行的字段个数加上7后再 除以8;将得到的整数作为用于标识当前行的每个字段是否为NULL的区域 的字节长度。
可选地,字符串地址存储区域之前所有区域还包括:用于标识编码后的 数据的编码方式的版本号的区域或用于标识待编码数据的版本号的区域。
根据本公开的第三方面,提供一种存储指令的计算机可读存储介质,其 中,当指令被至少一个计算装置运行时,促使至少一个计算装置执行如上的 编码方法。
根据本公开的第四方面,提供一种包括至少一个计算装置和至少一个存 储指令的存储装置的系统,其中,指令在被至少一个计算装置运行时,促使 至少一个计算装置执行如上的编码方法。
根据本示例性实施例的编码方法及装置,将基本类型与字符串分开存放, 即分别设置了基础类型存储区域和字符串地址存储区域,以分别用来存储基 础类型数据和字符串数据的实际位置信息,可以降低后续解码的复杂度,且 每个基础类型字段均按各自类型的实际字节长度进行存放以及每个字符串数 据的地址也按各自实际字节长度进行存放,降低了内存的占用。
附图说明
通过结合附图,从实施例的下面描述中,本发明这些和/或其它方面及优 点将会变得清楚,并且更易于理解,其中:
图1示出相关技术中spark编解码示意图;
图2示出根据本公开示例性实施例的编码方法的流程图;
图3示出根据本公开示例性实施例的一种编码格式示意图;
图4示出根据本公开示例性实施例的数据查询装置的框图。
具体实施方式
提供参照附图的以下描述以帮助对由权利要求及其等同物限定的本发明 的实施例的全面理解。包括各种特定细节以帮助理解,但这些细节仅被视为 是示例性的。因此,本领域的普通技术人员将认识到在不脱离本发明的范围 和精神的情况下,可对描述于此的实施例进行各种改变和修改。此外,为了 清楚和简洁,省略对公知的功能和结构的描述。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表 示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若 干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包 括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例 如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1) 执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
以下将通过参照附图2至4来说明本公开的实施例,以便解释本公开。
图2示出根据本公开示例性实施例的编码方法的流程图。如图2所示, 该编码方法包括如下步骤:
在步骤S201中,获取待编码数据。该待编码数据可以如下表1所示:
表1待编码数据
id name1 age amt name2
1111 abc 12 1.3 ming
1112 aee 13 3.5 tian 
需要说明的是,表1只是待编码数据的一种可选表示形式,本公开并不 限定于此。
在步骤S202中,将待编码数据中每个基本类型字段按在待编码数据的顺 序,连续存放在基础类型存储区域,其中,每个基础类型字段按各自类型的 实际字节长度进行存放。上述基础类型可以包括但不限于bool、int8、int16、 int32、int64、float、double,其中,bool/int8占用1字节,int16占用2个字 节,int32/float占用4字节,int64/double占用8字节。如上表1中,id属于 基础类型int64,age属于基础类型int32,amt属于基础类型float。
具体地,基础类型存储区域按id、age、amt的顺序存放对应的数据,第 一行对应的基础类型存储区域存放的是1111、12、1.3,其中,1111占用8个 字节,12占用4个字节,1.3占用4个字节;第二行对应的基础类型存储区 域存放的是1112、13、3.5,其中,1112占用8个字节,13占用4个字节, 3.5占用4个字节。
在步骤S203中,针对待编码数据中每行,将当前行的每个字符串字段的 字符串数据的地址按对应的字符串字段在当前行的顺序,连续存放在字符串 地址存储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进 行存放,字符串地址存储区域位于基础类型存储区域之后。如上表1中,name 属于字符串string,不属于基础类型。
具体地,以第一行数据为例进行说明,假设name1下第一行的数据存放 的地址为XX,name2下第一行的数据存放的地址是YY,此时,字符串地址 存储区域按name1、name2的顺序存放XX、YY,且以XX的实际字节长度 存储XX,以YY的实际字节长度存储YY。
根据本公开的示例性实施例,将当前行的每个字符串字段的字符串数据 的地址按对应的字符串字段在当前行的顺序,连续存放在字符串地址存储区 域,包括:将当前行的每个字符串字段的字符串数据按在当前行的顺序,连 续存放在字符串数据存储区域;将字符串数据在字符串数据存储区域的地址 按对应的字符串字段在当前行的顺序,连续存放在字符串地址存储区域,其 中,字符串地址存储区域位于基础类型存储区域之后且位于字符串数据存储 区域之前,字符串地址存储区域的字节长度是固定的。根据本实施例,将字 符串数据存储区域放在字符串地址存储区域之后,可以降低解码的复杂度, 因为字符串数据存储区域字节长度不固定,而字符串地址存储区域的字节长 度是固定的。
具体地,字符串数据可以在上述字符串地址存储区域之后存储,也即字 符串数据存储区域放在字符串地址存储区域之后。如在字符串地址存储区域 之后,可以按name1、name2的顺序存放abc、ming。
根据本公开的示例性实施例,字符串地址存储区域的字节长度通过如下 方式确定:确定字符串地址存储区域之前所有区域的字节长度;对于待编码 数据的每行,通过字符串地址存储区域之前所有区域的字节长度、当前行的 字段个数和当前行的所有字符串字段的字符串数据的字节长度,确定字符串 地址存储区域的字节长度。根据本实施例,可以方便快速的确定出字符串地 址存储区域的字节长度,以方便后续解码。
具体地,为了方便后续解码,可以按一定规则设定字符串地址存储区域, 例如,假设有N个字符串字段,所有字符串的字节总长度为len1,字符串地 址存储区域前所有区域地字节总长度为size1,可以按如下方式得到字符串地 址存储区域的字节长度:
size1+(N*1)+len1<=2^8,那么字符串地址存储区域占用1字节,也即 字符串地址存储区域的字节长度1个字节;
size1+(N*2)+len1<=2^16,那么字符串地址存储区域占用2字节,也 即字符串地址存储区域的字节长度2个字节;
size1+(N*3)+len1<=2^24,那么字符串地址存储区域占用3字节,也 即字符串地址存储区域的字节长度3个字节;
size1+(N*4)+len1<=2^32,那么字符串地址存储区域占用4字节,也 即字符串地址存储区域的字节长度4个字节;
以此类推,size1+(N*X)+len1<=2^(X×8),其中,X即字符串地址存 储区域的字节长度。
根据本公开的示例性实施例,字符串地址存储区域之前所有区域包括: 基础类型存储区域、用于标识当前行的每个字段是否为NULL的区域和用于 标识编码后的当前行的总字节长度的区域。
根据本公开的示例性实施例,用于标识当前行的每个字段是否为NULL 的区域的字节长度通过如下方式确定:获取当前行的字段个数;将当前行的 字段个数加上7后再除以8;将得到的整数作为用于标识当前行的每个字段 是否为NULL的区域的字节长度。根据本实施例,将该字节长度调整为(字 段个数+7)/8,不再是8的整数倍,可以降低占用的内存,克服了相关技术 中用于标识NULL的字段nullbitset是8字节的整数倍导致占用内存的问题。
具体地,可以采用bitmap来标识字段是否为NULL,如表1所示,字段 个数为5,则用于标识当前行的每个字段是否为NULL的区域的字节长度可 以通过(5+7)/8计算得到,其计算结果为1.5,取整数为1,也即用于标识 当前行的每个字段是否为NULL的区域的字节长度为1。
根据本公开的示例性实施例,字符串地址存储区域之前所有区域还包括: 用于标识编码后的数据的编码方式的版本号的区域或用于标识待编码数据的 版本号的区域。根据本实施例,设置这两个区域,有助于后续解码,因为不 同编码方式可以对应不同的版本号,如采用不同于本公开的编码方式进行编 码后,可以更改用于标识编码后的数据的编码方式的版本号,而待编码数据 删除或者增加字段后,则更改用于标识待编码数据的版本号,后续解码可以 参考两个区域信息快速解码。
在步骤S204中,将重新存储后的待编码数据作为编码后的数据。
为了方便理解上述实施例,下面结合图3进行系统的说明,图3示出根 据本公开示例性实施例的一种编码格式示意图,如图3所示:
FVersion表示数据编码格式版本号,其所在区域即上述实施例中用于标 识编码后的数据的编码方式的版本号的区域,可以设置占用一个字节;如果 编码方式做修改,版本号可以加1,不同的版本号对应不同的编解码方案。
SVersion表示schema的版本号,其所在区域即上述实施例中用于标识待 编码数据的版本号的区域,可以设置占用一个字节,如果原始数据中增加和 删除字段,版本号可以加1。
Size表示整条数据大小,其所在区域即上述实施例中用于标识编码后的 当前行的总字节长度的区域,可以设置占用四个字节。
BitMap表示哪个字段为NULL,其所在区域即上述实施例中用于标识当 前行的每个字段是否为NULL的区域,如果schema字段数为N,则该区域占 用长度为:(N+7)/8。
基本类型存储区域存放bool/int8/int16/int32/int64/float/double等类型的字 段。
字符串地址存储区域存储字符串的实际位置,按地址信息的实际字节长 度存储。
字符串数据存储区域存储的是字符串实际内容。
根据本公开的示例性实施例,接收端接收到编码后的数据后,需要解码 该编码后的数据,首先,读取FVersion字段,确定编码后的数据所采用的编 码方式,在确定所采用的编码方式后,按该编码方式对应的格式,对编码后 的数据进行解码。如,在确定编码方式所对应的格式如图3所示,此时,可 以继续读取BitMap字段,解析出编码前的原始数据哪几个字段为NULL,再 从基本类型存储区域中解析出基础类型字段对应的数据,然后,从字符串地 址存储区域中解析出存储字符串数据的字符串地址,到对应的字符串地址中 获取相应的字符串数据。需要说明的是,本公开对解码顺序并不进行限定。
图4示出根据本公开示例性实施例的数据查询装置的框图。如图4所示, 该数据查询装置包括:获取单元40、基本类型存放单元42、字符串存放单元 44和确定单元46。
获取单元40,被配置为获取待编码数据;基本类型存放单元42,被配置 为将待编码数据中每个基本类型字段按在待编码数据的顺序,连续存放在基 础类型存储区域,其中,每个基础类型字段按各自类型的实际字节长度进行 存放;字符串存放单元44,被配置为针对待编码数据中每行,将当前行的每 个字符串字段的字符串数据的地址按对应的字符串字段在当前行的顺序,连 续存放在字符串地址存储区域,其中,每个字符串数据的地址按各自地址的 实际字节长度进行存放,字符串地址存储区域位于基础类型存储区域之后; 确定单元46,被配置为将重新存储后的待编码数据作为编码后的数据。
根据本公开的示例性实施例,字符串存放单元44,还被配置为将当前行 的每个字符串字段的字符串数据按在当前行的顺序,连续存放在字符串数据 存储区域;将字符串数据在字符串数据存储区域的地址按对应的字符串字段 在当前行的顺序,连续存放在字符串地址存储区域,其中,字符串地址存储 区域位于基础类型存储区域之后且位于字符串数据存储区域之前,字符串地 址存储区域的字节长度是固定的。
根据本公开的示例性实施例,字符串地址存储区域的字节长度通过如下 方式确定:确定字符串地址存储区域之前所有区域的字节长度;对于待编码 数据的每行,通过字符串地址存储区域之前所有区域的字节长度、当前行的 字段个数和当前行的所有字符串字段的字符串数据的字节长度,确定字符串 地址存储区域的字节长度。
根据本公开的示例性实施例,字符串地址存储区域之前所有区域包括: 基础类型存储区域、用于标识当前行的每个字段是否为NULL的区域和用于 标识编码后的当前行的总字节长度的区域。
根据本公开的示例性实施例,用于标识当前行的每个字段是否为NULL 的区域的字节长度通过如下方式确定:获取当前行的字段个数;将当前行的 字段个数加上7后再除以8;将得到的整数作为用于标识当前行的每个字段 是否为NULL的区域的字节长度。
根据本公开的示例性实施例,字符串地址存储区域之前所有区域还包括: 用于标识编码后的数据的编码方式的版本号的区域或用于标识待编码数据的 版本号的区域。
以上已参照图1至图4描述了根据本公开示例性实施例的编码方法及装 置。
图4所示出的数据查询装置中的各个单元可被配置为执行特定功能的软 件、硬件、固件或上述项的任意组合。例如,各个单元可对应于专用的集成 电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。 此外,各个单元所实现的一个或多个功能也可由物理实体设备(例如,处理 器、客户端或服务器等)中的组件来统一执行。
此外,参照图1所描述的编码方法可通过记录在计算机可读存储介质上 的程序(或指令)来实现。例如,根据本公开的示例性实施例,可提供存储 指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时, 促使所述至少一个计算装置执行根据本公开的编码方法。
上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理 装置、服务器等计算机设备中部署的环境中运行,应注意,计算机程序还可 用于执行除了上述步骤以外的附加步骤或者在执行上述步骤时执行更为具体 的处理,这些附加步骤和进一步处理的内容已经在参照图1进行相关方法的 描述过程中提及,因此这里为了避免重复将不再进行赘述。
应注意,根据本公开示例性实施例的数据查询装置中的各个单元可完全 依赖计算机程序的运行来实现相应的功能,即,各个单元在计算机程序的功 能架构中与各步骤相应,使得整个系统通过专门的软件包(例如,lib库)而 被调用,以实现相应的功能。
另一方面,图4所示的各个单元也可以通过硬件、软件、固件、中间件、 微代码或其任意组合来实现。当以软件、固件、中间件或微代码实现时,用 于执行相应操作的程序代码或者代码段可以存储在诸如存储介质的计算机可 读介质中,使得处理器可通过读取并运行相应的程序代码或者代码段来执行 相应的操作。
例如,本公开的示例性实施例还可以实现为计算装置,该计算装置包括 存储部件和处理器,存储部件中存储有计算机可执行指令集合,当计算机可 执行指令集合被处理器执行时,执行根据本公开的示例性实施例的编码方 法。
具体说来,计算装置可以部署在服务器或客户端中,也可以部署在分布 式网络环境中的节点装置上。此外,计算装置可以是PC计算机、平板装置、 个人数字助理、智能手机、web应用或其他能够执行上述指令集合的装置。
这里,计算装置并非必须是单个的计算装置,还可以是任何能够单独或 联合执行上述指令(或指令集)的装置或电路的集合体。计算装置还可以是 集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如, 经由无线传输)以接口互联的便携式电子装置。
在计算装置中,处理器可包括中央处理器(CPU)、图形处理器(GPU)、 可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限 制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处 理器阵列、网络处理器等。
根据本公开示例性实施例的编码方法中所描述的某些操作可通过软件方 式来实现,某些操作可通过硬件方式来实现,此外,还可通过软硬件结合的 方式来实现这些操作。
处理器可运行存储在存储部件之一中的指令或代码,其中,存储部件还 可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收, 其中,网络接口装置可采用任何已知的传输协议。
存储部件可与处理器集成为一体,例如,将RAM或闪存布置在集成电 路微处理器等之内。此外,存储部件可包括独立的装置,诸如,外部盘驱动、 存储阵列或任何数据库系统可使用的其他存储装置。存储部件和处理器可在 操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处 理器能够读取存储在存储部件中的文件。
此外,计算装置还可包括视频显示器(诸如,液晶显示器)和用户交互 接口(诸如,键盘、鼠标、触摸输入装置等)。计算装置的所有组件可经由总 线和/或网络而彼此连接。
根据本公开示例性实施例的编码方法可被描述为各种互联或耦合的功能 块或功能示图。然而,这些功能块或功能示图可被均等地集成为单个的逻辑 装置或按照非确切的边界进行操作。
因此,参照图1所描述的编码方法可通过包括至少一个计算装置和至少 一个存储指令的存储装置的系统来实现。
根据本公开的示例性实施例,至少一个计算装置是根据本公开示例性实 施例的用于编码方法的计算装置,存储装置中存储有计算机可执行指令集合, 当计算机可执行指令集合被至少一个计算装置执行时,执行参照图1所描述 的编码方法。
以上描述了本公开的各示例性实施例,应理解,上述描述仅是示例性的, 并非穷尽性的,本公开不限于所披露的各示例性实施例。在不偏离本公开的 范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更 都是显而易见的。因此,本公开的保护范围应该以权利要求的范围为准。

Claims (10)

1.一种编码方法,其中,所述方法包括:
获取待编码数据;
将所述待编码数据中每个基本类型字段按在所述待编码数据的顺序,连续存放在基础类型存储区域,其中,所述每个基础类型字段按各自类型的实际字节长度进行存放;
针对所述待编码数据中每行,将当前行的每个字符串字段的字符串数据的地址按对应的字符串字段在所述当前行的顺序,连续存放在字符串地址存储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放,所述字符串地址存储区域位于所述基础类型存储区域之后;
将重新存储后的待编码数据作为编码后的数据。
2.根据权利要求1中所述的编码方法,其中,所述将当前行的每个字符串字段的字符串数据的地址按对应的字符串字段在所述当前行的顺序,连续存放在字符串地址存储区域,包括:
将当前行的每个字符串字段的字符串数据按在所述当前行的顺序,连续存放在字符串数据存储区域;
将所述字符串数据在所述字符串数据存储区域的地址按对应的字符串字段在所述当前行的顺序,连续存放在所述字符串地址存储区域,其中,所述字符串地址存储区域位于所述基础类型存储区域之后且位于所述字符串数据存储区域之前,所述字符串地址存储区域的字节长度是固定的。
3.根据权利要求2中所述的编码方法,其中,所述字符串地址存储区域的字节长度通过如下方式确定:
确定所述字符串地址存储区域之前所有区域的字节长度;
对于所述待编码数据的每行,通过所述字符串地址存储区域之前所有区域的字节长度、所述当前行的字段个数和所述当前行的所有字符串字段的字符串数据的字节长度,确定所述字符串地址存储区域的字节长度。
4.根据权利要求3中所述的编码方法,其中,所述字符串地址存储区域之前所有区域包括:所述基础类型存储区域、用于标识所述当前行的每个字段是否为NULL的区域和用于标识编码后的当前行的总字节长度的区域。
5.根据权利要求4中所述的编码方法,其中,所述用于标识所述当前行的每个字段是否为NULL的区域的字节长度通过如下方式确定:
获取所述当前行的字段个数;
将所述当前行的字段个数加上7后再除以8;
将得到的整数作为用于标识所述当前行的每个字段是否为NULL的区域的字节长度。
6.根据权利要求4中所述的编码方法,其中,所述字符串地址存储区域之前所有区域还包括:用于标识所述编码后的数据的编码方式的版本号的区域或用于标识所述待编码数据的版本号的区域。
7.一种编码装置,其中,所述编码装置包括:
获取单元,被配置为获取待编码数据;
基本类型存放单元,被配置为将所述待编码数据中每个基本类型字段按在所述待编码数据的顺序,连续存放在基础类型存储区域,其中,所述每个基础类型字段按各自类型的实际字节长度进行存放;
字符串存放单元,被配置为针对所述待编码数据中每行,将当前行的每个字符串字段的字符串数据的地址按对应的字符串字段在所述当前行的顺序,连续存放在字符串地址存储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放,所述字符串地址存储区域位于所述基础类型存储区域之后;
确定单元,被配置为将重新存储后的待编码数据作为编码后的数据。
8.根据权利要求7中所述的编码装置,其中,所述字符串存放单元,还被配置为将当前行的每个字符串字段的字符串数据按在所述当前行的顺序,连续存放在字符串数据存储区域;将所述字符串数据在所述字符串数据存储区域的地址按对应的字符串字段在所述当前行的顺序,连续存放在所述字符串地址存储区域,其中,所述字符串地址存储区域位于所述基础类型存储区域之后且位于所述字符串数据存储区域之前,所述字符串地址存储区域的字节长度是固定的。
9.一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1至6中的任一权利要求所述的编码方法。
10.一种包括至少一个计算装置和至少一个存储指令的存储装置的系统,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1至6中的任一权利要求所述的编码方法。
CN202111162443.7A 2021-09-30 2021-09-30 编码方法及装置 Pending CN115905209A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111162443.7A CN115905209A (zh) 2021-09-30 2021-09-30 编码方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111162443.7A CN115905209A (zh) 2021-09-30 2021-09-30 编码方法及装置

Publications (1)

Publication Number Publication Date
CN115905209A true CN115905209A (zh) 2023-04-04

Family

ID=86495322

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111162443.7A Pending CN115905209A (zh) 2021-09-30 2021-09-30 编码方法及装置

Country Status (1)

Country Link
CN (1) CN115905209A (zh)

Similar Documents

Publication Publication Date Title
US10778246B2 (en) Managing compression and storage of genomic data
US10318484B2 (en) Scan optimization using bloom filter synopsis
US11151126B2 (en) Hybrid column store providing both paged and memory-resident configurations
US10044370B1 (en) Lossless binary compression in a memory constrained environment
CN110879854B (zh) 使用超集树数据结构搜索数据
CN110879807B (zh) 用于快速地并且有效地访问数据的文件格式
RU2629440C2 (ru) Устройство и способ для ускорения операций сжатия и распаковки
EP3120266B1 (en) Ozip compression and decompression
US8847797B1 (en) Byte-aligned dictionary-based compression and decompression
US20190391961A1 (en) Storing Data Files in a File System
CN111857550A (zh) 用于数据去重的方法、设备以及计算机可读介质
CN114731162A (zh) 压缩数据的部分下载
US10757227B2 (en) Security-oriented compression
CN115699584A (zh) 使用将未压缩/已压缩内容相关的索引的压缩/解压缩
CN110874346B (zh) 浮点值的压缩方案
US10103747B1 (en) Lossless binary compression in a memory constrained environment
US7167115B1 (en) Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
US8463759B2 (en) Method and system for compressing data
CN115905209A (zh) 编码方法及装置
Batory Index coding: a compression technique for large statistical databases
US8010510B1 (en) Method and system for tokenized stream compression
CN109558387B (zh) 身份证号的处理方法、装置、存储介质及终端
US10168909B1 (en) Compression hardware acceleration
US20240202163A1 (en) System and method for random-access manipulation of compacted data files
US11928134B1 (en) Medoid-based data compression

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