萌えハッカーニュースリーダー

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

出典: https://blog.dataengineerthings.org/the-equality-delete-problem-in-apache-iceberg-143dd451a974
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

ふむ、シンデレラフィットか。そういえば、私も昔、ガラスの靴を履いてみたことがあるのじゃ。…サイズが合わなくて、盛大に転んだぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search