一种用于流式JSON数据的混合式无损压缩方法

摘要: 本发明属于数据处理,涉及数据压缩方法,具体提供一种用于流式json数据的混合式无损压缩方法。背景技术:1、随着大数据和实时通信技术的发展,流式json数据被广泛...
一种用于流式JSON数据的混合式无损压缩方法

本发明属于数据处理,涉及数据压缩方法,具体提供一种用于流式json数据的混合式无损压缩方法。

背景技术:

1、随着大数据和实时通信技术的发展,流式json数据被广泛应用于日志聚合、实时事件流等场景,特别是换行分隔的json数据(ndjson),具有结构清晰、支持流式处理等优异特性;然而,这些数据流通常包含大量重复的键名与短字符串值(如状态码、事件类型),导致其在网络传输和长期存储中占用巨大的带宽和空间,因此,需要通过压缩算法进行处理。目前,现有的通用压缩算法(如gzip、brotli)在流式json数据时效果欠佳,难以在保持流式特性的同时实现理想的压缩率和较低的计算开销。

技术实现思路

1、本发明的目的在于提供一种用于流式json数据的混合式无损压缩方法,用以解决现有技术中流式json数据存在的数据冗余问题;本发明通过预扫描识别字段的数据类型,并将该元信息编码在键名上,从而允许数据体以最原生的json类型进行存储,实现理论上最优的、完全符合json标准的压缩,能够在保持流式处理特性的同时以较低计算成本完成有效压缩,解决流式json数据存在的数据冗余问题。

2、为实现上述目的,本发明采用的技术方案为:

3、一种用于流式json数据的混合式无损压缩方法,包括以下步骤:

4、接收待压缩的流式json数据,对数据流进行预扫描,构建独立的键名数组与短值映射表,其中,键名数组包括标记键与非标记键,标记键对应纯数值型值;短值映射表为短字符串值与整数索引的双射;

5、根据键名数组与短值映射表对数据流中每一个json对象进行编码,生成压缩数组;

6、将键名数组与短值映射表作为头部字典,将所有json对象的压缩数组作为压缩数据体,形成压缩流。

7、进一步的,键名数组的构建过程为:

8、识别原始数据流中所有唯一键名,构成键名集合;基于键名集合构建有序数组,,m为键名数组的长度,表示第i个键名,;

9、针对有序数组中的每一个键,识别原始数据流中所有json对象的键对应的值,当所有值均为纯数值时,判定键的值为纯数值型字段,采用预设标记对原始键名进行标记,得到标记键,最终形成键名数组。

10、进一步的,短值映射表的构建过程为:

11、识别原始数据流中所有唯一字符串值,构成字符串值集合,并定义短字符串值子集:,其中,表示字符串值,表示字符串的长度,表示预设长度阈值;

12、构建短字符串值子集到整数索引集的双射作为短值映射表,表示为:,其中,n为短字符串值子集的长度。

13、进一步的,编码的具体过程为:

14、对于每一个json对象,根据键名数组的指引从原始数据流中提取json对象的所有键的原始值,生成原始值列表,m为键名数组的长度,表示第i个键的原始值,表示第j个json对象的原始值列表,;

15、对原始值列表中的每一个原始值,根据短值映射表进行索引转换,生成新值,,其中,表示短值子集,表示短值映射表,表示原始值通过短值映射表转换得到的整数索引,由此得到新值列表;

16、对新值列表进行紧凑化处理,得到压缩数组。

17、更进一步的,紧凑化处理的具体过程为:去除新值列表中所有空格、换行与缩进;

18、进一步的,所述压缩流的解码过程为:

19、对于压缩流中的每一个json对象,对所有键依据键名数组进行标记判别,对于标记键,保持压缩数据体中纯数值,作为解码后当前键对应的值;对于非标记键,将压缩数据体中纯数值按照短值映射表映射为对应字符串,作为解码后当前键对应的值。

20、基于上述技术方案,本发明的有益效果在于:

21、本发明提供一种用于流式json数据的混合式无损压缩方法,采用类型标记与原生存储相结合的混合式压缩机制,通过短值映射表将传统字符串值转换为整数索引,使得压缩表示中能够使用json原生的数字形式代替纯字符串,无需任何前缀或引号,从而达到json标准内的理论压缩极限;与此同时,通过键名数组简化解码过程,解码器一次性读取键名数组后预先获取值的类型,避免整数索引与纯数值型值的歧义,解码逻辑极为简单、高效,并具有优异的鲁棒性;此外,本发明能够完全保持流式处理特性,编码和解码过程均以独立的json数组为单位进行,与流式json模型完全兼容;综上,本发明能够在保持流式处理特性的同时以较低计算成本完成有效压缩,解决流式json数据存在的数据冗余问题。

1.一种用于流式json数据的混合式无损压缩方法,其特征在于,包括以下步骤:

2.根据权利要求1所述用于流式json数据的混合式无损压缩方法,其特征在于,键名数组的构建过程为:

3.根据权利要求1所述用于流式json数据的混合式无损压缩方法,其特征在于,短值映射表的构建过程为:

4.根据权利要求1所述用于流式json数据的混合式无损压缩方法,其特征在于,编码的具体过程为:

5.根据权利要求4所述用于流式json数据的混合式无损压缩方法,其特征在于,紧凑化处理的具体过程为:去除新值列表中所有空格、换行与缩进。

6.根据权利要求1所述用于流式json数据的混合式无损压缩方法,其特征在于,所述压缩流的解码过程为: