📜

Athena, ClickHouse, Iceberg - S3の使い方の違い

2025/01/04に公開

S3にデータを溜めるとき、やりかたが色々あるなと思ったのでメモ

TLDR

Athenaを使う場合、S3にあるデータを直接読めばいい。書き込みはどうやってもいい。

ClickHouseはDBMS。S3はストレージの一つ

Apach Icebergを使えば、ほぼS3だけで組める。ただしIcebergの作法に従う必要がある

Athena, Trino, Hive...

AthenaはS3上のデータにアクセスするもの。
Athenの中身はTrino。
Hadoopのエコシステムなど、S3をストレージとして利用する他のツールにも当てはまる使い方。

この構成の利点はシンプルさ。
S3にありさえすればいいので、FirehoseでもCloudTrailでも好きなもので書き込める。読み込みも権限があればいいだけ。

欠点はシンプルすぎること。
トランザクションなど便利なものが何もないので、「まとめて1ファイルに」のような操作でも気を使う必要がある。

ClickHouse

https://clickhouse.com/jp

いま列志向データベースをやるなら、ClickHouseが第一の選択肢かもしれない。
クラスタを作るDBMS。SQLで操作する。
S3は外部ソース扱い。「遅くてもいいから大容量を保存したい」ときにS3を使う。
S3のデータを直接読み書きすることもできるが、流石にS3だけで使うものではなさそう

ClickHouseの利点はインデックスやマテリアライズドビューなど、DBに期待するものが色々使えること。(列志向DBなので、行志向と勝手が違うことには注意)

欠点は運用の必要性。
S3に閉じたものではないから運用する必要がある。マネージドならお金でなんとかなるかもしれない。

Apach Iceberg

https://iceberg.apache.org/

「データレイクがシンプルすぎる」という問題を解決するのがIceberg。
いわゆるテーブルフォーマット
ACIDで動く、スキーマやパーティショニングを簡単に変えられる、指定時間時点のデータがわかる(タイムトラベル)、など欲しかった機能をS3上で作れるようになる。

IcebergはOSSのフォーマットなので、仕様に従っている多くのツールで使うことができる。
逆に、仕様に従わないといけないので既存の仕組みをIceberg用に作り変える必要があるのがデメリット。

ファイルの構成は下図のようになっている。
素直な構成なので、色々できる理由が透けて見えるはず。


https://iceberg.apache.org/spec/#overview

強力なので、データウェアハウスベンダからの熱もある。
Icebergを作ったTabular社はDatabricksに買収されたが、Snowflakeも買収したがっていたらしい。
この領域にはHudi, DelataLakeなどあるが、買収するほどの強い関心を両社が持ったのならIcebergが勝ちで決まりかもしれない。

終わり

S3を使う視点からの、それぞれの違いをかいた。

Discussion