编码方法及装置制造方法及图纸

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

【技术实现步骤摘要】
编码方法及装置


[0001]本申请涉及数据处理领域,以下描述涉及一种编码方法及装置。

技术介绍

[0002]目前,在内存数据库或者其他对内存占用比较敏感的场景中,内存占用 和编解码效率以及能否高效做projection(一次读取部分列)是系统中很重要的 几个指标。相关技术如tidb编解码和spark编解码等占用内存均较大,无法 满足内存数据库的要求。如图1所示spark编解码,基本类型字段都是固定字 节长度,如基本类型字段都是占用8字节,当存在基本类型bool时,由于其 只需占用1字节,实际用8字节,则造成了内存浪费;而且基础类型与字符 串混合存放(如int\double为基础字段,string为字符串),也造成后续解码较 复杂。

技术实现思路

[0003]本公开的示例性实施例可至少解决上述问题,也可不解决上述问题。
[0004]根据本公开的第一方面,提供了一种编码方法,该方法包括:获取待编 码数据;将待编码数据中每个基本类型字段按在待编码数据的顺序,连续存 放在基础类型存储区域,其中,每个基础类型字段按各自类型的实际字节长 度进行存放;针对待编码数据中每行,将当前行的每个字符串字段的字符串 数据的地址按对应的字符串字段在当前行的顺序,连续存放在字符串地址存 储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放, 字符串地址存储区域位于基础类型存储区域之后;将重新存储后的待编码数 据作为编码后的数据。
[0005]可选地,将当前行的每个字符串字段的字符串数据的地址按对应的字符 串字段在当前行的顺序,连续存放在字符串地址存储区域,包括:将当前行 的每个字符串字段的字符串数据按在当前行的顺序,连续存放在字符串数据 存储区域;将字符串数据在字符串数据存储区域的地址按对应的字符串字段 在当前行的顺序,连续存放在字符串地址存储区域,其中,字符串地址存储 区域位于基础类型存储区域之后且位于字符串数据存储区域之前,字符串地 址存储区域的字节长度是固定的。
[0006]可选地,字符串地址存储区域的字节长度通过如下方式确定:确定字符 串地址存储区域之前所有区域的字节长度;对于待编码数据的每行,通过字 符串地址存储区域之前所有区域的字节长度、当前行的字段个数和当前行的 所有字符串字段的字符串数据的字节长度,确定字符串地址存储区域的字节 长度。
[0007]可选地,字符串地址存储区域之前所有区域包括:基础类型存储区域、 用于标识当前行的每个字段是否为NULL的区域和用于标识编码后的当前行 的总字节长度的区域。
[0008]可选地,用于标识当前行的每个字段是否为NULL的区域的字节长度通 过如下方式确定:获取当前行的字段个数;将当前行的字段个数加上7后再 除以8;将得到的整数作为用于标识当前行的每个字段是否为NULL的区域 的字节长度。
[0009]可选地,字符串地址存储区域之前所有区域还包括:用于标识编码后的 数据的编码方式的版本号的区域或用于标识待编码数据的版本号的区域。
[0010]根据本公开的第二方面,提供了一种编码装置,该装置包括:获取单元, 被配置为获取待编码数据;基本类型存放单元,被配置为将待编码数据中每 个基本类型字段按在待编码数据的顺序,连续存放在基础类型存储区域,其 中,每个基础类型字段按各自类型的实际字节长度进行存放;字符串存放单 元,被配置为针对待编码数据中每行,将当前行的每个字符串字段的字符串 数据的地址按对应的字符串字段在当前行的顺序,连续存放在字符串地址存 储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放, 字符串地址存储区域位于基础类型存储区域之后;确定单元,被配置为将重 新存储后的待编码数据作为编码后的数据。
[0011]可选地,字符串存放单元,还被配置为将当前行的每个字符串字段的字 符串数据按在当前行的顺序,连续存放在字符串数据存储区域;将字符串数 据在字符串数据存储区域的地址按对应的字符串字段在当前行的顺序,连续 存放在字符串地址存储区域,其中,字符串地址存储区域位于基础类型存储 区域之后且位于字符串数据存储区域之前,字符串地址存储区域的字节长度 是固定的。
[0012]可选地,字符串地址存储区域的字节长度通过如下方式确定:确定字符 串地址存储区域之前所有区域的字节长度;对于待编码数据的每行,通过字 符串地址存储区域之前所有区域的字节长度、当前行的字段个数和当前行的 所有字符串字段的字符串数据的字节长度,确定字符串地址存储区域的字节 长度。
[0013]可选地,字符串地址存储区域之前所有区域包括:基础类型存储区域、 用于标识当前行的每个字段是否为NULL的区域和用于标识编码后的当前行 的总字节长度的区域。
[0014]可选地,用于标识当前行的每个字段是否为NULL的区域的字节长度通 过如下方式确定:获取当前行的字段个数;将当前行的字段个数加上7后再 除以8;将得到的整数作为用于标识当前行的每个字段是否为NULL的区域 的字节长度。
[0015]可选地,字符串地址存储区域之前所有区域还包括:用于标识编码后的 数据的编码方式的版本号的区域或用于标识待编码数据的版本号的区域。
[0016]根据本公开的第三方面,提供一种存储指令的计算机可读存储介质,其 中,当指令被至少一个计算装置运行时,促使至少一个计算装置执行如上的 编码方法。
[0017]根据本公开的第四方面,提供一种包括至少一个计算装置和至少一个存 储指令的存储装置的系统,其中,指令在被至少一个计算装置运行时,促使 至少一个计算装置执行如上的编码方法。
[0018]根据本示例性实施例的编码方法及装置,将基本类型与字符串分开存放, 即分别设置了基础类型存储区域和字符串地址存储区域,以分别用来存储基 础类型数据和字符串数据的实际位置信息,可以降低后续解码的复杂度,且 每个基础类型字段均按各自类型的实际字节长度进行存放以及每个字符串数 据的地址也按各自实际字节长度进行存放,降低了内存的占用。
附图说明
[0019]通过结合附图,从实施例的下面描述中,本专利技术这些和/或其它方面及优 点将会
变得清楚,并且更易于理解,其中:
[0020]图1示出相关技术中spark编解码示意图;
[0021]图2示出根据本公开示例性实施例的编码方法的流程图;
[0022]图3示出根据本公开示例性实施例的一种编码格式示意图;
[0023]图4示出根据本公开示例性实施例的数据查询装置的框图。
具体实施方式
[0024]提供参照附图的以下描述以帮助对由权利要求及其等同物限定的本专利技术 的实施例的全面理解。包括各种特定细节以帮助理解,但这些细节仅被视为 是示例性的。因此,本领域的普通技术人员将认识到在不脱离本专利技术的范围 和精神的情况下,可对描述于此的实施例进行各种改变和修改。此外,为了 清楚和简洁,省略对公知的功能和结构的描述。
[0025]在此需要说明的是,在本公开中出现的“若本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种编码方法,其中,所述方法包括:获取待编码数据;将所述待编码数据中每个基本类型字段按在所述待编码数据的顺序,连续存放在基础类型存储区域,其中,所述每个基础类型字段按各自类型的实际字节长度进行存放;针对所述待编码数据中每行,将当前行的每个字符串字段的字符串数据的地址按对应的字符串字段在所述当前行的顺序,连续存放在字符串地址存储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放,所述字符串地址存储区域位于所述基础类型存储区域之后;将重新存储后的待编码数据作为编码后的数据。2.根据权利要求1中所述的编码方法,其中,所述将当前行的每个字符串字段的字符串数据的地址按对应的字符串字段在所述当前行的顺序,连续存放在字符串地址存储区域,包括:将当前行的每个字符串字段的字符串数据按在所述当前行的顺序,连续存放在字符串数据存储区域;将所述字符串数据在所述字符串数据存储区域的地址按对应的字符串字段在所述当前行的顺序,连续存放在所述字符串地址存储区域,其中,所述字符串地址存储区域位于所述基础类型存储区域之后且位于所述字符串数据存储区域之前,所述字符串地址存储区域的字节长度是固定的。3.根据权利要求2中所述的编码方法,其中,所述字符串地址存储区域的字节长度通过如下方式确定:确定所述字符串地址存储区域之前所有区域的字节长度;对于所述待编码数据的每行,通过所述字符串地址存储区域之前所有区域的字节长度、所述当前行的字段个数和所述当前行的所有字符串字段的字符串数据的字节长度,确定所述字符串地址存储区域的字节长度。4.根据权利要求3中所述的编码方法,其中,所述字符串地址存储区域之前所有区域包括:所述基础类型存储区域、用于标识所述当前行的每个字段是否为NULL的区域和用于标识编码后的当前行的总字节长度的区域。5.根据权利要求4中所述的编码方法,其中,所述用于标识所述当前行的每个字段是否为NULL的区域的字节长度通过如下方式确定:获取所述当前行的字段...

【专利技术属性】
技术研发人员:邓龙王太泽陈靓陈迪豪
申请(专利权)人:第四范式北京技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1