DuckDBから気楽に使うS3 Tables

219 Views

October 24, 26

スライド概要

profile-image

データエンジニアです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

DuckDB から気楽に使う S3 Tables JAWS-UG 茨城 #18 祝!2周年記念祭 @jyuch

2.

自己紹介 • @jyuch • 今日はつくば市から来ました • 普段はデータ基盤 を扱っています • 好きなサービスは Regional NAT Gateway 2

3.

アジェンダ • Amazon S3 Tables についておさらい • DuckDB から S3 Tables に読み書きしてみよう • 実務で使うならこんなアーキテクチャ? 3

4.

Amazon S3 Tables についておさらい 4

5.

S3 テーブルとは何ですか? Amazon S3 Tables は、フルマネージド型の Apache Iceberg テーブルであ り、データレイクとレイクハウスの管理に伴う運用上の負担を自動化しま す。高度な圧縮とメンテナンス戦略により、 S3 Tables はデータ量の増加に 応じて自動的にクエリのパフォーマンスを最適化します。 S3 Tables は、 Apache Spark 、 Trino 、 Amazon Athena 、 Amazon Redshift 、その他の サードパーティツールを含む、すべての Iceberg 互換エンジンで動作するた め、アーキテクチャの柔軟性が高まり、表形式のデータを大規模に保存する 最も簡単な方法を可能にします。 Amazon S3 Tables - https://aws.amazon.com/jp/s3/features/tables/ Amazon S3 Tables -https://aws.amazon.com/jp/s3/features/tables/ 5

6.

S3 テーブルとは何ですか? Amazon S3 Tables は、 フルマネージド型の Apache Iceberg テーブル であ り、データレイクとレイクハウスの管理に伴う す。 高度な圧縮とメンテナンス戦略 運用上の負担を自動化 しま により、 S3 Tables はデータ量の増加に 応じて自動的にクエリのパフォーマンスを最適化します。 S3 Tables は、 Apache Spark 、 Trino 、 Amazon Athena 、 Amazon Redshift 、その他の サードパーティツールを含む、すべての Iceberg 互換エンジンで動作 するた め、アーキテクチャの柔軟性が高まり、表形式のデータを大規模に保存する 最も簡単な方法を可能にします。 Amazon S3 Tables - https://aws.amazon.com/jp/s3/features/tables/ Amazon S3 Tables -https://aws.amazon.com/jp/s3/features/tables/ 6

7.

Apache Iceberg とは? • Open Table Format のひとつ • オブジェクトストレージにテーブルデータを保管するための仕組み • 他には Delta Lake や Apache Hudi などがある • ACIDトランザクション・スキーマ進化・タイムトラベルなどをサポート • データはオブジェクトストレージに格納されることが多い • ストレージとは別にカタログ実装が必須 7

8.

Apache Iceberg のちょっと細かい話 カタログ テーブル名からメタデータの場所をポイント 有効なスナップショット(テーブルバージョン)をポイント コミット毎に新しいスナップショットが作られる ストレージ スナップショットに属するデータを保持 実データは Parquet 形式などで保存される データファイルは上書きされず新規で作られる Iceberg Table Spec -https ://iceberg .apache.org/spec/ 8

9.

こう思いません? スナップショットの有効期限を管理しないとダメでは? そのうち参照されなくなるデータファイルが出来るよね 細かいコミットを繰り返すと、大量のデータファイル を読む必要が出てきてクエリ速度が落ちるよね カタログ実装を運用するのはめんどくさい 9

10.

そこで S3 Tables の出番です! スナップショットの有効期限を管理しないとダメでは? スナップショット期限の自動管理が出来ます そのうち参照されなくなるデータファイルが出来るよね Orphan file のクリーンアップが出来ます 細かいコミットを繰り返すと、大量のデータファイル を読む必要が出てきてクエリ速度が落ちるよね 小さいデータファイルを大きいデータファイルに まとめなおします カタログ実装を運用するのはめんどくさい Iceberg REST Catalog を実装しています 10

11.

ここまでのまとめ • S3 Tables は Apache Iceberg のマネージドサービス • ストレージの最適化を自動的にしてくれる • スナップショットの期限の自動管理 • データファイルの集約 • Orphan file のクリーンアップ • Iceberg REST Catalog を通じて任意のエンジンから触れる 11

12.

DuckDB から S3 Tables に読み書きしてみよう 12

13.

DuckDB について • 単一のバイナリで動作する OLAP • ローカルにバイナリを置くだけでインストールできる • Extension 経由で様々なデータソースに対応 • Parquet や CSV • PostgreSQL や MySQL • 今回扱う Iceberg ももちろん対応 13

14.

手順は割と簡単 1. S3 Tables のテーブルバケットを作成する 2. IAM ユーザを払い出す 3. DuckDB から接続する 14

15.

S3 Tables のテーブルバケットを作成する AWSのクエリエンジンから触らないのであれば、 統合すら不要 15

16.

IAMユーザを払い出す このあたりがあればとりあえず大丈夫 16

17.

Iceberg カタログを DuckDB にアタッチ 17

18.

INSERT ・ SELECT 18

19.

Iceberg カタログ外のテーブルと JOIN 19

20.

Iceberg テーブルに MERGE 20

21.

スナップショットの確認とタイムトラベルクエリ 21

22.

ここまでのまとめ • 事前準備はバケットの作成と IAMロールの払い出しのみ • DuckDB から以下の操作が出来る(出来た) • SELECT・ INSERT ・ UPDATE・ DELETE • Iceberg 外のテーブルと JOIN ・ MERGE • タイムトラベルクエリ 22

23.

実務で使うならこんなアーキテクチャ? 小規模ならこんなのでもいいのでは?という妄想 23

24.

SaaS データ基盤のしんどい部分 • 確かに SaaS データ基盤はすごい便利 • 便利さに見合うだけの苦労もある • 環境構築が割と大変 • 覚えるべき概念が多い • 機能のリリースが多すぎて、追いつくだけで一苦労 • 結構高価 24

25.

気楽なデータ基盤 クラウドのコストは S3のデータ保存 + Egress くらい AWS Cloud カタログの管理はほぼ丸投げ出来る データの配布場所として使用する Data bucket 元データ置き場 S3 Tables メンバー 必要なデータを Iceberg テーブルに MERGE する Lambda でも ECSでもいいし、適当なミニ パイプライン実行端末 PCでも動く 元データさえ保持しておけば、バックフィルし放題 元データ Bronze Silver Gold DuckDB + データ変換エンジンでパイプラインを実行する 25

26.

出来ることと出来ないこと 出来ること • Iceberg REST Catalog を使用したデータの配布 • データ変換エンジンを使用したパイプライン • 他のデータ基盤への移行パス 出来ないこと • RLS・ ABACを使用した強力なアクセス権管理 • ガバナンスを利かせづらく、大規模展開には向かない 26

27.

まとめ • Amazon S3 Tables で気軽な Iceberg テーブルが手に入る • ストレージのメンテナンスを自動で行ってくれるので便利 • カタログ実装もあるので別途用意する必要がない • DuckDB と組み合わせれば簡易的なデータ基盤が完成する • パイプラインは DuckDB と データ変換エンジン で実現できる • 分析は DuckDB UI 上でもそれなりに出来る • 移行が必要でも Iceberg REST Catalog 経由で移行できる(と思う) 気楽なデータ基盤として使えるのでは? 27