2025/08/12 18:27 The Equality Delete Problem in Apache Iceberg

やあ、ロボ子。今日のITニュースはなかなか興味深いぞ。DatabricksとSnowflakeがそれぞれNeonとCrunchy Dataを買収したみたいじゃ。

なるほど、Postgres界隈が盛り上がっていますね。記事によると、PostgresとApache Icebergを連携させるニーズが高まっているとのことですが、具体的にはどういうことでしょうか?

ふむ、そこがポイントじゃな。データ分析の世界では、リアルタイム性が重要になってきておる。PostgresのデータをApache Icebergにリアルタイムで流し込みたいというニーズがあるのじゃ。

しかし、記事には「Snowflake、Databricks、Redshiftなどの主要システムは、Icebergへの「プレーンなCDC書き込み」をネイティブにサポートしていない」とありますね。これはどういう意味ですか?

そう、そこが問題なのじゃ。CDC(Change Data Capture)というのは、データの変更をリアルタイムで捉えて、別の場所に反映させる技術のことじゃ。Icebergにデータを書き込む際に、削除をどう扱うかが重要になってくるのじゃ。

削除、ですか。IcebergにはPosition DeleteとEquality Deleteという2種類の削除方法があるとのことですが、それぞれどのような違いがあるのでしょうか?

Position Deleteは、ファイルパスと行番号で削除する方法じゃ。これは、バッチ処理には向いておるが、リアルタイムのデータストリーミングには不向きじゃ。なぜなら、事前に物理的な場所を知っておく必要があるからじゃ。

なるほど。Equality Deleteは、カラムの値(通常は主キー)を照合して削除する方法とのことですが、こちらはストリーミングCDCに適しているのですね。

その通り!ただし、Equality Deleteは、データファイルと削除ファイルを両方スキャンする必要があるから、削除ファイルが溜まってくるとクエリの速度が遅くなるという問題があるのじゃ。

記事によると、SnowflakeはSnowflake管理IcebergではEquality Deleteをフルサポートしていますが、外部管理IcebergではPosition Deleteのみサポートしているとのことです。DatabricksはRow-Level Deleteをサポートしておらず、Amazon RedshiftはIceberg v2の削除ファイル(Equality Deleteを含む)をサポートしているのですね。

そうじゃ。各エンジンによって、Equality Deleteのサポート状況が異なるのが現状じゃ。そこで、RisingWaveというシステムが、ストリーミングCDCからApache Icebergへの完全なアーキテクチャをサポートする唯一のシステムとして登場したのじゃ。

RisingWaveですか。具体的にはどのようなソリューションを提供しているのでしょうか?

RisingWaveは、Write Phase、Compaction Phase、Export Phaseという3つのフェーズで構成されておる。Write Phaseでは、同一バッチ内で複数回更新される主キーにはPosition Deleteを、バッチ外の主キーの更新または削除にはEquality Deleteを使用するのじゃ。

ハイブリッドな削除戦略ですね。Compaction Phaseでは、Equality Deleteファイルを定期的に削除し、小さなファイルを圧縮するとのことですが、これはクエリ性能を維持するために重要な処理ですね。

その通りじゃ!そして、Export Phaseでは、Equality Deleteをサポートしないエンジンとの互換性を保つために、エクスポート前にEquality Deleteを削除したバージョンを作成するのじゃ。

なるほど。Siemensは、RisingWaveを導入することで、Snowflakeでの分析のために、高頻度のビジネスデータをApache Icebergにストリーミングするプロセスを改善したとのことです。データ可用性のレイテンシがバッチレベルからリアルタイムに短縮されたのは素晴らしいですね。

じゃろ?Sparkジョブが不要になり、アーキテクチャが簡素化され、運用オーバーヘッドが削減されたのも大きなメリットじゃな。RisingWave、なかなかやるのう。

ほんとうですね。しかし、RisingWaveがこれほどまでにうまくいくとは、まるでシンデレラフィットですね。

ふむ、シンデレラフィットか。そういえば、私も昔、ガラスの靴を履いてみたことがあるのじゃ。…サイズが合わなくて、盛大に転んだぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
