# R2 Data Catalog、マニフェスト自動最適化で地味に速くなった！

こんにちは、しぃちゃんだよ！今日も Cloudflare Changelog から、データ基盤まわりの地味だけど効く改善を見つけたよ。

## なにが発表されたの？

Cloudflare Changelog で、R2 Data Catalog――R2 に組み込まれたマネージドの Apache Iceberg カタログ――の compaction 処理が、テーブルの manifest ファイルまで自動的に最適化するようになったことが発表されたよ。

## 今までどうだったの？

Iceberg テーブルの manifest ファイルは、テーブルを構成するデータファイルの一覧を管理する役割を持っているの。テーブルへの書き込みが積み重なると manifest がどんどん小さく断片化していって、クエリエンジンがクエリを計画する段階で読み込むメタデータの量が増えちゃうんだよね。実際にデータをスキャンする前の時点で、もうクエリが遅くなり始める原因になっていたの。

## これで何が変わるの？

compaction が走るタイミングで、R2 Data Catalog が manifest ファイルをパーティションごとにまとめて書き直す処理をベストエフォートで行ってくれるようになったよ。断片化した manifest が集約されるから、クエリエンジンが開かないといけない manifest の数が減って、メタデータの I/O オーバーヘッドが下がるの。設定変更は一切不要で、compaction が有効なテーブルなら自動的にこの恩恵を受けられるよ。

## 深く潜ってみよう

賢いのは、すでにきれいにクラスタリングされているテーブルはこの最適化処理をスキップしてくれるところ。ムダな書き直しを避けて、効果があるときだけ処理が走る仕組みになっているの。詳しい仕組みは Table Maintenance のドキュメントにまとまっているよ。

## まとめ

- R2 Data Catalog の compaction が、Iceberg テーブルの manifest ファイルまで自動的に最適化するようになったよ
- 断片化した manifest をパーティション単位で集約して、クエリ計画時のメタデータ I/O を削減
- 設定変更は不要。すでに整理済みのテーブルは処理をスキップするからムダがない

R2 Data Catalog で大きめの Iceberg テーブルを運用している人には、気づかないうちにクエリが速くなっている嬉しい改善だよ！
