Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データエンジニアリング領域におけるDuckDBのユースケース
Search
chanyou0311
February 26, 2025
Technology
10
3.7k
データエンジニアリング領域におけるDuckDBのユースケース
「DuckDBの魅力解剖!〜現場から見る活用術とその可能性〜」の登壇資料です。
https://findy.connpass.com/event/343059/
chanyou0311
February 26, 2025
Tweet
Share
More Decks by chanyou0311
See All by chanyou0311
5分でわかるDuckDB
chanyou0311
11
4.2k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
1.6k
データの信頼性を支える仕組みと技術
chanyou0311
6
2.3k
Pulumi に入門してみた
chanyou0311
1
340
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
1.2k
release-please で実現する手軽で不変な Docker イメージタグ付け方法
chanyou0311
0
470
データ基盤を支える技術
chanyou0311
9
4.4k
おうちk8s入門 - すごい広島 IT初心者の会 [84]
chanyou0311
1
410
オンラインコミュニケーションの課題と、その乗り越え方
chanyou0311
0
580
Other Decks in Technology
See All in Technology
NLPコロキウム20251022_超効率化への挑戦: LLM 1bit量子化のロードマップ
yumaichikawa
3
450
.NET 10のBlazorの期待の新機能
htkym
0
110
様々なファイルシステム
sat
PRO
0
240
ヘンリー会社紹介資料(エンジニア向け) / company deck for engineer
henryofficial
0
370
あなたの知らない Linuxカーネル脆弱性の世界
recruitengineers
PRO
3
150
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
3
1.4k
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
220
Databricks AI/BI Genie の「値ディクショナリー」をAmazonの奥地(S3)まで見に行く
kameitomohiro
1
410
AI駆動で進める依存ライブラリ更新 ─ Vue プロジェクトの品質向上と開発スピード改善の実践録
sayn0
1
300
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
170
HonoとJSXを使って管理画面をサクッと型安全に作ろう
diggymo
0
180
OSSで50の競合と戦うためにやったこと
yamadashy
3
980
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Gamification - CAS2011
davidbonilla
81
5.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
A designer walks into a library…
pauljervisheath
209
24k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Writing Fast Ruby
sferik
630
62k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
22k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Statistics for Hackers
jakevdp
799
220k
Transcript
2025/02/27 Yu Nakamura - chanyou データエンジニアリング領域における DuckDBのユースケース @chanyou0311
Yu Nakamura - chanyou • スタートアップでデータエンジニアとして交通データ分析基盤 の構築‧運⽤を経験 • その後、株式会社タイミーの DRE
チームにジョイン データ基盤の構築‧運⽤に注⼒ • 最近はデータ基盤における Platform Engineering に関⼼があり ます • 広島在住。趣味はおうち Kubernetes クラスタ • YAPC::Hiroshima 2024 のスタッフなど
タイミーとは 3 「働きたい時間」と「働いてほしい時間」を マッチングするスキマバイトサービス 従来の「求⼈サイト」でも「派遣」でもない
タイミーの実績 スキマ バイト No.1 ※1 ※2 [調査⽅法]インターネット調査 [調査期間]2025年1⽉31⽇〜2025年2⽉4⽇ [調査概要]スキマバイトアプリサービスの 実態調査
[調査委託先]株式会社マクロミル ※3 2024年12⽉時点 ※4 2024年12⽉時点 利⽤率 ‧リピート率 ※1 ※2 導⼊事業者数 159,000企業 ワーカー数 1,000万⼈ ※4 ※3
目次 • DuckDB の特徴 • データエンジニアリング領域における DuckDB の評価 • タイミーにおけるユースケース
• その他に想定されるユースケース
1 DuckDB の特徴
DuckDB とは? • OLAP 特化の DB Engine • SQLite のようなインプロセス型のデータベース
• MIT ライセンスで C++ 実装
DuckDB の特徴 • シングルバイナリでセットアップが容易 • クライアントAPIが充実 • 外部データソースの読み書きに対応
シングルバイナリでセットアップが容易 • セットアップスクリプトを実⾏するだけ • バイナリをダウンロードしてパスを通してもよい https://duckdb.org/docs/installation/index?version=stable&environment=cli&platform=linux&download_method=direct&architecture=x86_64
シングルバイナリでセットアップが容易 • duckdb <データベースファイルパス> で起動できる • ファイルパスを省略すると、インメモリモードで起動する
クライアントAPIが充実 • CLI • C • Java • Go •
Node.js • Python • R • WebAssembly 他にも Dart, Rust, Ruby などのクライアントAPIも公開されている
Python の場合 DataFrame と相互変換が可能 • クエリ結果を Pandas や Polars の
DataFrame に変換できる • DataFrame に対して DuckDB でクエリを実⾏することも可能 https://duckdb.org/docs/clients/python/overview
外部データソースの読み書きに対応 • PostgreSQL や MySQL といった RDBMS に直接クエリを実⾏できる • CSV,
Parquet, Delta, Iceberg といったファイルにクエリを実⾏できる https://duckdb.org/docs/data/parquet/overview.html https://duckdb.org/docs/extensions/postgres.html
外部データソースの読み書きに対応 • S3, GCS, Blob Storage などのオブジェクトストレージに直接クエリを 実⾏できる https://duckdb.org/docs/extensions/httpfs/s3api.html
DuckDB の特徴 • シングルバイナリでセットアップが容易 • クライアントAPIが充実 • 外部データソースの読み書きに対応
2 データエンジニアリング領域における DuckDB の評価
DuckDB の Good な点 • 🚀 ⼤量データでも⾼いパフォーマンスで実⾏できる • 🧰 幅広いデータ形式の読み込みに対応している
• 💰 データ量に依存したクエリ料⾦がかからない • 🤝 dbt アダプタなど、周辺エコシステムとの親和性が⾼い
DuckDB の More な点 • 👮 きめ細かなアクセス制御‧監査ログの取得が難しい • 💥 DuckDB
のデータベースファイルを SSoT として運⽤しようとすると、 途端に破綻する
👮 きめ細かなアクセス制御‧監査ログの取得が難しい • テーブルレベル、⾏レベル、列レベルのアクセス制御が DuckDB 単体では できない • 動的なマスキングも難しい •
監査ログの取得もクライアントの設定次第で、強制が難しい
💥 SSoT として運⽤しようとすると、途端に破綻する • ⽇々更新されるデータベースファイルをリモートで保持する必要がある ◦ クライアントでクエリを実⾏するには、ダウンロードが必要 ◦ 定期的に pull
しないとクエリ結果が変わってしまう
💥 SSoT として運⽤しようとすると、途端に破綻する • 分析結果を他⼈に共有しようとすると、さらに煩雑に… • やがて 20250227_最新版.duckdb といったファイルが⽣まれ、統制の効かないデータ基盤 に…😱
◦ 「爆速なExcel」といった位置付けになってしまう
データエンジニアリング領域における DuckDB の位置付けは?
データエンジニアリング領域における DuckDB • これまでの中央集権的なデータウェアハウスを完全に代替するものではない ◦ アクセス制御も監査ログも必要だし、容易なコラボレーションも推進し たい • 永続性を求めないケースでの相性がよい ◦
オブジェクトストレージへのクエリエンジン ◦ データの前処理や検証
オブジェクトストレージへのクエリエンジン • オブジェクトストレージに Parquet や Iceberg 形式でデータを保持しておい て、DuckDB でクエリを実⾏する •
必要に応じてクエリ結果をオブジェクトストレージに書き戻すこともできる
オブジェクトストレージへのクエリエンジン • 類似ソリューション ◦ AWS Athena や BigQuery Omni など
▪ 🦆 クラウドにロックインされず、どこでも実⾏できる ◦ Pandas などの DataFrame ▪ 🦆 Python 実⾏環境が不要で、⼿軽に実⾏できる
データの前処理や検証 • データの前処理 ◦ 複雑な結合‧重複排除 • データの検証 ◦ データの完全性‧⼀意性‧最新性の検証 •
スクリプト内部に閉じた利⽤が想定される • スクリプト実⾏後にデータが揮発しても問題ない
3 タイミーにおける ユースケース
シチュエーション • S3 に保存された Parquet ファイルを BigQuery にロードするケース • ロードする前後のデータが完全に⼀致することを保証したい
DuckDB を使って前後のデータの差分が1件もないことを検証した
データの⽐較⽅法 • S3 のファイルの読み込みは read_parquet() 関数ですぐ読み込める • BigQuery はロード後のテーブルを GCS
に Parquet 形式でエクスポートして から read_parquet() で読み込む ◦ DuckDB から BigQuery に直接クエリできる Community Extension もあるが、⼀部のフィールドでうまく クエリできない問題があって⾒送った • データの⽐較は EXCEPT 句で実⾏できる
実装イメージ 異なるデータソースでも1回のクエリで結合できて便利
4 その他に想定される ユースケース
データの検証‧スクリプト内での利⽤ • レコードの⼀意性のチェック • テーブルの鮮度のチェック(最新レコードの⽇時と現在時刻の⽐較) dbt でも実施できるが、 dbt に依存しない⼿軽な実⾏環境として採⽤できる
データの前処理による料⾦コストの削減 • ⽣データをDWHにロードしてからデータを加⼯する ELT パターンが主流 ◦ ⼤規模になるにつれて Transform のクエリコストがかさみがち
データの前処理による料⾦コストの削減 • DuckDB を使うと安価なコンピュータ上でデータの前処理や結合をしてから DWHにロードする構成が取れる ◦ 例)⼤量のログデータから分析対象だけWHEREで絞ってDWHにロードする ◦ 例)DWHはBI⽤のマート層だけ保持するようにして、それより前は全部DuckDB にやらせる
ひとりアナリストのデータ基盤として • データの管理と分析を1名で⾏っている場合は DuckDB の⼿軽さがフィットしそう ◦ 分析チームの⽴ち上げフェーズなど • データの管理者と分析者が分かれたり、複数⼈で分析を⾏うようになると コラボレーションのハードルが⼀気に⾼くなる
• この場合、DuckDB は「爆速なExcel」といった認識で使うのが良さそう ◦ その場限りのローカル分析環境として
5 まとめ
まとめ • DuckDB を使うと、データの置き場所や形式を問わずクエリできる ◦ 場所や形式を横断したクエリもサクッと実⾏できる • ガバナンスやコラボレーションを意識した使い⽅は現状難しい ◦ 分析⽬的で広く社内で使ってもらうのにはハードルがある
• 永続性を求めないケースでの相性がよい ◦ オブジェクトストレージへのクエリエンジン ◦ データの前処理や検証
https://hrmos.co/pages/timee/jobs/1682251404118319115 データ基盤を通して、プロダクトと組織の成⻑を⼀緒に⽀えましょう! We're hiring!