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
9
3k
データエンジニアリング領域における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
3.8k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
1.3k
データの信頼性を支える仕組みと技術
chanyou0311
6
2.1k
Pulumi に入門してみた
chanyou0311
1
250
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
1k
release-please で実現する手軽で不変な Docker イメージタグ付け方法
chanyou0311
0
360
データ基盤を支える技術
chanyou0311
9
4.2k
おうちk8s入門 - すごい広島 IT初心者の会 [84]
chanyou0311
1
340
オンラインコミュニケーションの課題と、その乗り越え方
chanyou0311
0
510
Other Decks in Technology
See All in Technology
Symfony in 2025: Scaling to 0
fabpot
2
170
移行できそうでやりきれなかった 10年超えのシステムを葬るための戦略 / phper-kaigi-2025-ryu
carta_engineering
0
680
Agile TPIを活用した品質改善事例
tomasagi
0
290
チームの性質によって変わる ADR との向き合い方と、生成 AI 時代のこれから / How to deal with ADR depends on the characteristics of the team
mh4gf
4
330
どっちの API SHOW?SharePoint 開発における SharePoint REST API Microsoft Graph API の違い / Which API show? Differences between Microsoft Graph API and SharePoint REST API
karamem0
0
100
PHPStan をできる限り高速化してみる
colopl
0
250
グループポリシー再確認
murachiakira
0
160
Proxmox VE超入門 〜 無料で作れるご自宅仮想化プラットフォームブックマークする
devops_vtj
0
120
Cline、めっちゃ便利、お金が飛ぶ💸
iwamot
19
18k
Keynote - KCD Brazil - Platform Engineering on K8s (portuguese)
salaboy
0
120
OPENLOGI Company Profile for engineer
hr01
1
22k
大規模プロジェクトにおける 品質管理の要点と実践 / 20250327 Suguru Ishii
shift_evolve
0
280
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
48
7.6k
Writing Fast Ruby
sferik
628
61k
Building a Modern Day E-commerce SEO Strategy
aleyda
39
7.2k
Building Your Own Lightsaber
phodgson
104
6.3k
Thoughts on Productivity
jonyablonski
69
4.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
How to Think Like a Performance Engineer
csswizardry
22
1.5k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
KATA
mclloyd
29
14k
Become a Pro
speakerdeck
PRO
27
5.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
2k
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!