Page 376 - 《软件学报》2025年第9期
P. 376
王尚 等: 基于神经网络的分布式追踪数据压缩和查询方法 4287
数据集, 并在其上展开了一系列的实验研究. 结果显示, NCQT 达到了较好的压缩效果, 与现有的压缩方法相比,
NCQT 在压缩比上提升了 2.4–9.9 倍. 其次, NCQT 的压缩效率高于基于神经网络的压缩算法, 其压缩速度相较于
对比方法提高了 41.2–161.7 倍. 此外, NCQT 可以在压缩数据上实现较为高效的查询, 在最优情况下能快于目前主
流的追踪查询工具.
综上所述, 本文的主要贡献如下.
● 提出了一种通用的分布式追踪冗余抽取方法, 可以减少追踪数据中的模式冗余和结构冗余.
● 提出并实现了一种基于神经网络的分布式追踪压缩和搜索方法, 利用神经网络模型进一步捕获追踪数据中
的冗余, 并可以在压缩数据上进行有效的查询.
● 设计了一系列实验验证了方法的有效性和效率, 并研究了一些重要参数配置的影响.
本文第 1 节介绍压缩和查询的相关工作. 第 2 节介绍本文所需的基础知识, 包括分布式追踪背景知识和算术
编码. 第 3 节介绍本文提出的基于神经网络的分布式追踪压缩和查询方法. 第 4 节通过多组实验验证了所提方法
的有效性和效率. 第 5 节对本文内容进行总结, 并展望未来的工作.
1 相关工作
传统的文本压缩算法通常可以分为 3 类: 基于熵、基于字典以及基于预测. 基于熵的压缩方法首先收集文本
文件的统计信息, 然后为每一个字符设计变长编码. 例如, 霍夫曼编码 [20] 会为频繁出现的符号分配短编码, 而算术
编码 [23] 则为每个符号分配一个区间, 并根据输入持续更新数据的编码区间. 这些方法具有单一字符的编码机制,
而统计模型的构建方式决定了压缩的质量. 基于字典的压缩方法在压缩过程中搜索类似的标记, 并在处理输入流
时将他们存储在字典中. LZ77 [19] 算法使用三元组维护字典, 分别表示偏移量、重复长度以及偏差字符, 在压缩时
用三元组替代重复出现的子序列, 并根据滑动窗口动态更新字典. LZ77 的变体 LZMA [24] 和 DEFLATE [25] 是常用压
缩工具 lzma 和 gzip 的算法基础. 基于字典的方法通常假设输入文本中出现的模式紧密出现, 因此难以消除长距
离的冗余. 基于预测的压缩方法在读取输入流时基于当前上下文预测下一个字符, 并在预测成功时分配更短的编
码. PPM [26] 是该类算法的典型代表, 它利用几个固定顺序上下文模型预测输入序列的下一个字符, 并结合编码器生
成文本的最终表示. 基于预测的方法的压缩效果取决于方法的预测准确率, 变量的出现会降低预测精度.
神经网络在预测任务上表现出色, 因此基于神经网络的压缩方法受到了人们的广泛关注 [27−33] . 研究表明, 与传
统的有限上下文模型相比, 神经网络模型通常可以更好地学习复杂的数据模式, 从而降低预测误差 [27] , 预测精度
越高, 算术编码的压缩效果越好. Schmidhuber 等人 [28] 采用三层前馈神经网络替换 PPM 预测器的上下文匹配方法,
证明了神经网络模型在无损压缩上的潜力. Mahoney 等人 [29] 使用两层前馈神经网络, 并通过单次学习以预测下一
个字符, 使得神经网络压缩更加高效. 然而这两种方法都使用了前馈神经网络, 仅考虑了字符的前一个窗口, 无法
捕获长期依赖. Liu 等人 [30] 使用三层 LSTM 作为模型结构, 为了捕获更多上下文信息以进行更好的预测, 该方法引
入了循环连接以保留结束时的隐藏状态, 并将其复用为下一批的初始状态. Goyal 等人 [27] 基于 biGRU 实现了一个
自适应和半自适应训练的混合架构, 该方法无需额外的训练数据集, 且不限于特定的数据类型. Mao 等人 [33] 提出
了一种基于单层 Transformer 的无损压缩器, 方法通过字节分组和共享前馈神经网络的方式充分利用单层 Transformer
的容量, 实现了更高的压缩比和效率. 然而, 现有的基于神经网络的压缩方法主要关注压缩比, 而牺牲了压缩速度,
且大多数模型需要充分学习压缩数据的特征以达到较高的预测精度, 进一步增加了压缩的时间开销.
近年来, 许多研究提出了针对日志的压缩方法 [34−41] , 对同为运维数据的追踪数据压缩具有重要的指导意义. 现
有的日志压缩方法通常可以分为日志变换和文本替换两类 [35] . 日志变换主要通过变换现有的日志以提高文件压
缩效果. Christensen 等人 [36] 利用聚类算法将每行日志分配到不同的桶中, 并以桶为单位进行压缩. Lin 等人 [37] 将日
志条目按列分割, 并利用模型压缩每列, 在解压效率上优于现有方法. 文本替换的核心思想是用较短的表示替换日
志中的冗余内容. Liu 等人 [38] 利用快速迭代聚类, 将日志数据拆分为由模板组成的常量部分以及由参数组成的变
量部分, 进而生成适用于通用压缩算法的中间表示. Wei 等人 [34] 在模板提取的基础上增加了增量时间戳、相关识
别以及弹性编码这 3 种处理方法, 实现了更高的压缩性能. Rodrigues 等人 [39] 使用一组用户指定的匹配变量的规

