AWSは最近、Amazon S3がApache Icebergテーブルに対してソート圧縮とZオーダー圧縮をサポートすると発表した。この新機能はスキャン時間とエンジンコストを削減し、S3 TablesおよびAWS Glue Data Catalogの最適化を使用する従来S3バケットの両方で利用可能だ。
ソート圧縮はクエリエンジンがスキャンするデータファイル数を最小限に抑え、Zオーダー圧縮は複数列を同時にクエリする際に効率的ファイルプルーニングを通じて追加のパフォーマンスベネフィットを提供する。AWSプリンシパル・デベロッパーアドボケイト Sébastien Stormacq氏は説明する:
高頻度でデータを取り込むか頻繁に更新されるデータセットを扱う場合、データレイクは多くの小さなファイルを蓄積し、クエリのコストと性能に影響を与えることがあります。(中略) 管理された圧縮によるデフォルトのbinpack戦略も顕著なパフォーマンス向上をもたらしますが、S3およびS3 Tablesにソート圧縮とZオーダー圧縮オプションを導入することで、1つ以上の次元に跨るクエリでフィルタリングに対してさらに顕著な利益が得られます。
ソート圧縮はユーザー定義の列順に基づいてファイルを整理する。テーブルに定義されたソート順がある場合、S3 Tables圧縮はsortを使用して圧縮プロセス中に類似した値をクラスター化する。
Apache Icebergでは、圧縮は小さなファイルを大きなファイルに結合する(bin packing)、削除ファイルとデータファイルをマージ、クエリパターンに従ってデータをソート、または特定のクエリパターンに最適化(Zオーダーソート)するために空間充填曲線を使用してデータをクラスタリングすることができる。
S3 Tablesは、定義されたテーブルメタデータに基づいて圧縮中に自動的な階層的ソートを提供する管理されたエクスペリエンスを提供する。複数のクエリ述語を同等に優先する場合、メンテナンスAPIを介してZ-order圧縮を有効化できる。汎用S3バケット内のIcebergテーブルでは、Glue Data Catalogコンソールで圧縮方法を設定できる。Stormacq氏は付け加える:
私の経験では、データレイアウトとクエリパターンに応じてbinpackからソートもしくはZオーダーに切り替えることで、パフォーマンスが3倍以上向上することが観察されました。
BMWプロダクトマネージャー Ruben Simon氏はコメントした:
BMWの最大規模のビッグデータ分析プラットフォームでは、数千のS3バケットとIcebergテーブルを使用して、Zオーダリングによるクエリ性能の大幅な向上を確認しました。(中略) 次にブルームフィルターを導入すればさらに強力になるでしょう。
論文「S3 Managed Tables, Unmanaged Costs: The 20x Surprise with AWS S3 Tables」で、Onehouse.aiのソフトウェアエンジニア Vinish Reddy Pannala氏とOnehouse.aiのプロダクトVP Kyle Weller氏は圧縮設定オプションの欠如について疑問を呈している:
テーブルが作成されてから約3時間後、S3 Tablesはついに圧縮をトリガーし、10回の置換操作を実行し、1時間で約100GBのデータを圧縮しました。(中略)これはS3 TABLESのアプローチにおける深刻な欠陥を露呈しており、理想的な圧縮設定が異なる種類のリーダーとライターに特有であることを認識していないことを示しています。
既存の圧縮ファイルは変更されず、ソートまたはZオーダーを有効にした後に書き込まれた新しいデータのみが影響を受ける。ただし顧客が標準のIcebergツールを使用してデータを書き直すか、テーブルメンテナンス設定でターゲットファイルサイズを増やす場合は例外だ。AWSプリンシパル・アナリティクススペシャリスト Yonatan Dolan氏は警告する:
Apache Icebergのクエリパフォーマンスを調整する際、ソート、Zオーダー、BinPack圧縮については誰もが話します-そしてもちろん、ソートは役立ち(正しく行われた場合)、Zオーダーは適切なクエリではbin-packingを上回ることができます。しかし、TPC-H SF100 lineitem(~約600M行/17GB圧縮)を使用した私のベンチマークでは、さらに影響力のあるものを発見しました:圧縮前の初期ファイルサイズがコストに大きな影響を与えます。
出典:Yonatan Dolan氏の投稿
新しい圧縮オプションはS3 Tablesがサポートされているすべてのリージョン、およびGlue Data Catalogとの統合が利用可能な汎用S3バケットで利用可能だ。新機能に関連する特定のコストはない。