写点什么

Meta 开源 OpenZL:一个通用的结构化数据压缩框架

  • 2025-11-05
    北京
  • 本文字数:1335 字

    阅读完需:约 4 分钟

大小:212.67K时长:01:12
Meta开源OpenZL:一个通用的结构化数据压缩框架

Meta 最近开源了OpenZL,这是一个新的针对高度结构化数据的数据压缩框架,它通过显式建模模式来实现比通用工具(如 Zstandard,简称 Zstd)更好的压缩比和更快的速度。该框架通过一个通用解压缩器来保持操作的简单性,该解压缩器执行嵌入的计划,消除了对外部元数据的需求,并允许从单一二进制文件进行全盘更新。

 

当 Meta 近十年前引入 Zstd 时,由于其速度和效率,它成为了大规模数据基础设施的基石。然而,随着工作负载的演变,特别是涉及结构化格式(如 Protocol Buffers、数据库表和 ML 张量)的工作负载,Meta 工程师发现通用压缩方法未能充分利用现代数据集的固有结构和模式。

 

OpenZL 采取了不同的方法,其通过显式建模数据结构,如列式布局、枚举和重复模式,而不是将所有内容视为未分化的“字节汤”。这种结构化压缩使 OpenZL 能够在相关数据集上超越标准 Zstd 等通用工具,无论指标是压缩比还是速度。OpenZL 的做法不是猜测最佳技术,而是应用一系列可配置的可逆变换来暴露数据中的潜在顺序,然后再进行最终的熵编码阶段。


OpenZL 的一个关键操作优势是其通用解压缩器。压缩计划由一个称为训练器的组件离线生成,该组件分析提供的数据模式并产生优化的计划。在编码过程中,这个计划被转换为具体的解码配方,并直接嵌入到压缩框架中。

 

这种模型意味着:

 

  • 每个 OpenZL 文件,无论其自定义变换序列如何,都可以使用相同的二进制文件进行解压缩。

  • 解码器不需要外部元数据——它执行嵌入的配方。

  • 重新训练或重新优化压缩计划可以提高性能,而无需更改通用解码器,确保向后兼容性。

 

Meta 工程师强调,这种操作的简单性对于数据中心部署至关重要:单一审核的解压缩表面,从单一二进制文件进行全盘更新,以及在大型基础设施中清晰的版本控制。

 

在内部基准测试中,针对结构化数据集(例如,Silesia压缩语料库的“sao star”记录),OpenZL 显示出了显著的增益。通过解析结构化记录,将它们分割成字段(数组的结构),并应用领域感知变换,如差分编码,它实现了:

关键在于,与 zstd -3 相比,OpenZL 在保持或提高压缩和解压缩速度的同时展示了更好的压缩比。

 

用户可以使用简单数据描述语言(SDDL)或自定义解析器函数来描述他们的数据结构。然后,离线训练器使用预算化的变换选择搜索来生成最优的压缩计划。

 

与一些嵌入通用代码的实验性格式不同,例如用于解压缩的 WebAssembly,OpenZL 的方法将执行限制在确定性图上。这确保了可重现的解码,这是长期数据存档的关键属性。正如一位 Hacker News 记者指出的,虽然对 WebAssembly 进行沙箱化很容易:

 

真正的问题是确定性——对这些 WebAssembly 模块进行的函数调用可能仍然是非确定性的!

 

相比之下,OpenZL 的固定执行图保证了确定性的解压缩行为。

 

OpenZL 在结构化数据上表现最佳,如时间序列数据集、ML 张量和数据库表。在结构最小(例如,纯文本)的地方,OpenZL 智能地回退到使用 Zstd。Quantls Infinity 的研究员 Abelardo Fukasawa 强调了这一点,他说

 

它不是像 gzip 或标准压缩器那样对待每种格式都用一样的办法,而是使用 SDDL 适应数据的特定结构——通常在结构化负载上获得更好的比率和吞吐量。

 

该框架在GitHub上公开可用,供开发人员进行实验和贡献。

 

原文链接:

Meta Open Sources OpenZL: a Universal Compression Framework for Structured Data

2025-11-05 08:005230

评论

发布
暂无评论

Redisson 分布式锁源码 05:公平锁加锁

程序员小航

redis 源码 分布式锁 redisson redisson 分布式锁

Rust从0到1-智能指针-Box<T>

rust 智能指针 smart pointer box

Android系统 Bitmap 内存分配原理与优化

vivo互联网技术

android BitMap 内存优化

架构实战营作业 M01

Shawn Liu

#架构实战营

模块一作业

俊杰

#架构实战营

实现「双碳」目标 高光谱来助力

云计算

Pandas高级教程之:plot画图详解

程序那些事

Python 数据分析 程序那些事;

架构实战:模块一学习任务

buoge

架构实战营

图的应用——最短路径

若尘

数据结构 最短路径

小萌猫短视频系统APP开发详情

你用哪些软件和方式来提高工作效率?

万事ONES

项目管理 ONES 敏捷管理

架构实战营 模块一

Cingk

#架构实战营

巧妙!如何检测一个链表是否有环?

实力程序员

Go 学习笔记之 常量数据类型

架构精进之路

Go 语言 7月日更

MindSpore模型精度调优实战:如何更快定位精度问题

华为云开发者联盟

模型 mindspore 精度 模型精度调优 静态特征

一亩金田APP开发|一亩金田软件系统开发

架构实战营模块一作业

maybe

成为全栈式数据管控平台,CloudQuery 1.4 概述

BinTools图尔兹

可视化 数据安全 OpenAPI 数据迁移 数据库管理

FIL币价格今日行情!FIL币价格最新消息!

区块链 IPFS fil

教你几招HASH表查找的方法

华为云开发者联盟

数据结构 哈希表 hash 哈希函数

基于标签的实时短视频推荐系统(三十)

Databri_AI

实时计算 推荐系统 标签

毕业设计-学生管理系统架构设计

sophiahuxh

爬虫入门到放弃01:一句话概括什么是爬虫

叫我阿柒啊

Python 爬虫

【Flutter 专题】94 初识 MediaQuery

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

vue必会面试题+答案

buchila11

Vue 3

天空秘境APP开发|天空秘境软件系统开发

架构训练营-模块一-作业

姑射仙人

#架构实战营

【LeetCode】大餐计数Java题解

Albert

算法 LeetCode 7月日更

MySQL的存储引擎

卢卡多多

MySQL 数据库 7月日更

中东矿业系统开发|中东矿业软件APP开发

金牛生态APP开发|金牛生态软件系统开发

Meta开源OpenZL:一个通用的结构化数据压缩框架_大数据_Steef-Jan Wiggers_InfoQ精选文章