【技术实现步骤摘要】
编码方法及装置
[0001]本申请涉及数据处理领域,以下描述涉及一种编码方法及装置。
技术介绍
[0002]目前,在内存数据库或者其他对内存占用比较敏感的场景中,内存占用 和编解码效率以及能否高效做projection(一次读取部分列)是系统中很重要的 几个指标。相关技术如tidb编解码和spark编解码等占用内存均较大,无法 满足内存数据库的要求。如图1所示spark编解码,基本类型字段都是固定字 节长度,如基本类型字段都是占用8字节,当存在基本类型bool时,由于其 只需占用1字节,实际用8字节,则造成了内存浪费;而且基础类型与字符 串混合存放(如int\double为基础字段,string为字符串),也造成后续解码较 复杂。
技术实现思路
[0003]本公开的示例性实施例可至少解决上述问题,也可不解决上述问题。
[0004]根据本公开的第一方面,提供了一种编码方法,该方法包括:获取待编 码数据;将待编码数据中每个基本类型字段按在待编码数据的顺序,连续存 放在基础类型存储区域,其中,每个基础类型字 ...
【技术保护点】
【技术特征摘要】
1.一种编码方法,其中,所述方法包括:获取待编码数据;将所述待编码数据中每个基本类型字段按在所述待编码数据的顺序,连续存放在基础类型存储区域,其中,所述每个基础类型字段按各自类型的实际字节长度进行存放;针对所述待编码数据中每行,将当前行的每个字符串字段的字符串数据的地址按对应的字符串字段在所述当前行的顺序,连续存放在字符串地址存储区域,其中,每个字符串数据的地址按各自地址的实际字节长度进行存放,所述字符串地址存储区域位于所述基础类型存储区域之后;将重新存储后的待编码数据作为编码后的数据。2.根据权利要求1中所述的编码方法,其中,所述将当前行的每个字符串字段的字符串数据的地址按对应的字符串字段在所述当前行的顺序,连续存放在字符串地址存储区域,包括:将当前行的每个字符串字段的字符串数据按在所述当前行的顺序,连续存放在字符串数据存储区域;将所述字符串数据在所述字符串数据存储区域的地址按对应的字符串字段在所述当前行的顺序,连续存放在所述字符串地址存储区域,其中,所述字符串地址存储区域位于所述基础类型存储区域之后且位于所述字符串数据存储区域之前,所述字符串地址存储区域的字节长度是固定的。3.根据权利要求2中所述的编码方法,其中,所述字符串地址存储区域的字节长度通过如下方式确定:确定所述字符串地址存储区域之前所有区域的字节长度;对于所述待编码数据的每行,通过所述字符串地址存储区域之前所有区域的字节长度、所述当前行的字段个数和所述当前行的所有字符串字段的字符串数据的字节长度,确定所述字符串地址存储区域的字节长度。4.根据权利要求3中所述的编码方法,其中,所述字符串地址存储区域之前所有区域包括:所述基础类型存储区域、用于标识所述当前行的每个字段是否为NULL的区域和用于标识编码后的当前行的总字节长度的区域。5.根据权利要求4中所述的编码方法,其中,所述用于标识所述当前行的每个字段是否为NULL的区域的字节长度通过如下方式确定:获取所述当前行的字段...
【专利技术属性】
技术研发人员:邓龙,王太泽,陈靓,陈迪豪,
申请(专利权)人:第四范式北京技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。