概要
- OpenZL は構造化データ向けの 新しいオープンソースロスレス圧縮フレームワーク。
- フォーマット固有の圧縮性能と 単一バイナリによる運用の容易さ を両立。
- データ構造を明示的に指定し、変換グラフで圧縮最適化 を実現。
- ユニバーサルデコーダ により、すべてのOpenZLファイルを単一バイナリで復号可能。
- 柔軟なトレーニングと運用管理で 継続的な最適化と後方互換性 を確保。
OpenZL:構造化データのための次世代圧縮フレームワーク
- OpenZL は構造化データ向けに設計された ロスレス圧縮フレームワーク。
- フォーマット固有の圧縮性能 と 単一バイナリ運用 の両立。
- Quick Startガイド や GitHubリポジトリ で導入が容易。
- 圧縮理論の詳細は ホワイトペーパー で解説。
- 公開リリース により、誰でも利用・検証が可能。
Zstandardからの進化と課題意識
- Zstandard は高圧縮率とデータセンター向けの高速性で普及。
- しかし、 汎用手法 では構造化データの圧縮効率に限界。
- データ特有の構造(カラム、enum、範囲制約、繰り返し)を活かした 専用圧縮 が有利。
- 専用圧縮は 運用負荷 (複数バイナリ管理、監査、パッチ適用)を増大。
- OpenZL はこのトレードオフへの解答。
構造の明示と圧縮プロセス
- 一般的な圧縮器 は一律の処理または推測にリソースを消費。
- OpenZL は データ構造を明示的に指定 し、可逆変換のシーケンスでパターンを顕在化。
- ユーザーはプリセットまたは 薄いフォーマット記述 で形状を指定。
- トレーナー(オフライン最適化コンポーネント) が最適な圧縮設定を自動生成。
- エンコード時に設定が 具体的なデコードレシピ に解決され、フレームに埋め込まれる。
- ユニバーサルデコーダ はレシピを直接実行、追加情報不要。
圧縮例:Silesia Corpusのsaoファイル
- saoファイル は星のレコード配列という明確な構造。
- OpenZLは ヘッダとテーブル分離、各フィールドを独立ストリーム化。
- 各ストリームに最適な圧縮戦略を適用。
- SRA0(X軸位置) :インデックスがほぼソート→delta変換で範囲縮小。
- SDEC0(Y軸位置) :範囲制約を利用し、transposeで高効率化。
- IS, MAG, XRPM, XDPM :低カーディナリティ→tokenizeで辞書化。
- 各ストリームは 異なる圧縮グラフ に送信。
- 主な役割は同質データのストリーム分割、以降はOpenZLが自動処理。
ベンチマーク比較(M1 CPU, clang-17)
| Compressor | zstd -3 | xz -9 | OpenZL | |------------|---------|-------|--------| | Compressed Size | 5,531,935 B | 4,414,351 B | 3,516,649 B | | Compression Ratio | x1.31 | x1.64 | x2.06 | | Compression Speed | 220 MB/s | 3.5 MB/s | 340 MB/s | | Decompression Speed | 850 MB/s | 45 MB/s | 1200 MB/s |
- OpenZLは高圧縮率・高速処理を両立、データセンター用途に最適。
圧縮戦略の自動生成とSDDL
- Simple Data Description Language(SDDL) でデータ形状を簡潔に記述可能。
- 独自パーサ関数 もサポート、OpenZLに登録してロジック委譲可能。
- トレーナー がプリセット・パーサ・SDDLから最適なPlanを自動探索。
- クラスターファインダー で類似フィールドをグループ化。
- グラフエクスプローラー で候補グラフを検証・スコアリング。
- エンコード時にPlanが Resolved Graph に変換され、分岐選択も記録。
- 各フレームに 圧縮レシピ埋め込み、デコーダは分岐を順次実行。
- Plan更新時もデコーダはそのまま、旧データも新データも無停止対応。
ワークフロー
- describe(SDDL)→ train(Plan生成)→ compress(フレーム出力)→ decode(同一バイナリ)
継続的な最適化と運用管理
- データ構造や内容の変化 に柔軟対応可能。
- Managed Compression との連携で、サンプル収集・再トレーニング・新設定配布を自動化。
- デコーダ側は 一切変更不要、新旧データを同時サポート。
- 圧縮設定には 制御ポイント を設け、圧縮時の統計値で分岐選択。
- 例:文字列繰返し統計、ランレングス、ヒストグラム、デルタ分散など。
- 分岐結果はフレームに記録、デコーダは記録通りに処理。
- 圧縮時の動的最適化と デコーダのシンプル運用 を両立。
ユニバーサルデコーダの利点
- あらゆるデータ形式を単一デコーダで復号。
- 圧縮設定が変わってもデコーダは不変、運用・監査負担を大幅削減。
- セキュリティ・正当性監査 は単一バイナリで完結。
- デコーダ更新 (セキュリティ・性能向上)は全ファイルに即時適用。
- CLI・メトリクス・ダッシュボード統一、運用の一貫性。
- オフライントレーニングと段階的ロールアウト で継続的な改善と後方互換性。
OpenZLの実運用と結果
- ファイルフォーマットを理解・解析できれば、圧縮率・速度とも大幅向上。
- 未対応フォーマットは zstdにフォールバック。
- オフライントレーニング で多様な速度・圧縮率トレードオフを実現。
- 従来の圧縮器はレベル指定のみだが、OpenZLはグラフ記述で柔軟設定。
- 白書掲載のデータセット で検証、再現性あるスクリプト・データ公開。
- パレート最適な構成 を選択可能、用途に応じた最適化。