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
5分でわかるDuckDB
Search
chanyou0311
December 14, 2024
Technology
3
410
5分でわかるDuckDB
「合同勉強会 in 大都会岡山 -2024 Winter-」の発表資料です。
https://gbdaitokai.connpass.com/event/330065/
chanyou0311
December 14, 2024
Tweet
Share
More Decks by chanyou0311
See All by chanyou0311
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
830
データの信頼性を支える仕組みと技術
chanyou0311
6
1.9k
Pulumi に入門してみた
chanyou0311
1
170
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
940
release-please で実現する手軽で不変な Docker イメージタグ付け方法
chanyou0311
0
290
データ基盤を支える技術
chanyou0311
8
3.9k
おうちk8s入門 - すごい広島 IT初心者の会 [84]
chanyou0311
1
270
オンラインコミュニケーションの課題と、その乗り越え方
chanyou0311
0
480
データ分析基盤のはじめかた
chanyou0311
1
1.3k
Other Decks in Technology
See All in Technology
新機能Amazon GuardDuty Extended Threat Detectionはネ申って話
cmusudakeisuke
0
350
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
110
Kubernetesトラフィックルーティング徹底解説/Kubernetes-traffic-deep-dive
oracle4engineer
PRO
5
940
スパイクアクセス対策としての pitchfork 導入
riseshia
0
210
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS 活用とプラットフォームエンジニアリング
recruitengineers
PRO
2
280
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
230
フロントエンド設計にモブ設計を導入してみた / 20241212_cloudsign_TechFrontMeetup
bengo4com
0
1.9k
Classmethod_regrowth_2024_tokyo_security_identity_governance_summary
hiashisan
0
850
テーブルが200以上あるSaaSでRSCとGraphQLを併用する理由
msickpaler
2
1k
知らない景色を見に行こう チャンスを掴んだら道が開けたマネジメントの旅 / Into the unknown~My management journey~
kakehashi
11
1.3k
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
0
15k
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
150
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
How STYLIGHT went responsive
nonsquared
95
5.2k
How to Think Like a Performance Engineer
csswizardry
21
1.2k
Navigating Team Friction
lara
183
15k
How to Ace a Technical Interview
jacobian
276
23k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
For a Future-Friendly Web
brad_frost
175
9.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
500
Transcript
5分でわかるDuckDB 合同勉強会 in ⼤都会岡⼭ -2024 Winter- chanyou
Yu Nakamura - chanyou ‧ 広島在住でリモートワークしてます ‧📊 普段は事業会社でデータ基盤を作っています ‧🐍 Python
とか Google Cloud とかよく使っています ‧🍓 おうち Kubernetes クラスタ ‧📢 mutable.stream という Podcast を2年くらい?
DuckDB 使ったことあるよ 🙋
DuckDB 知らない! 聞いたことあるけどよくわからない 🙋
DuckDB とは?
‧OLAP(オンライン分析処理)特化のDB Engine ‧要はめっちゃ早い ‧SQLite のようなインプロセス型のデータベース ‧⾼いポータビリティが特徴 ‧MIT ライセンスで C++ 実装
DuckDB の特徴 ‧シングルバイナリでセットアップが容易 ‧充実したクライアントAPI ‧豊富な外部データソースの対応と拡張機能
シングルバイナリでセットアップが容易 https://duckdb.org/docs/installation/?version=stable&environment=cli&platform=linux&download_method=direct&architecture=arm64
シングルバイナリでセットアップが容易
充実したクライアントAPI 公式 CLI ODBC API C C++ Java Julia 公式
Python R Rust Swift WebAssembly (Wasm) Node.js コミュニティからも C# Dart Elixir Go Ruby
Pythonだと ‧Pandas, Polars などの DataFrame と相互変換が可能 ‧PySpark にも対応 https://duckdb.org/docs/installation/?version=stable&environment=cli&platform=linux&download_method=direct&architecture=arm64
豊富な外部データソースの読み書きに対応 ‧ SQLite, PostgreSQL, MySQL などの RDBMS ‧ CSV, JSON,
Parquet といったファイル これらに直接クエリできる。 https://duckdb.org/docs/data/parquet/overview.html
豊富な拡張機能‧コミュニティ拡張機能 ‧S3, Azure Blob Storage, GCS などのオブジェクトスト レージ上のファイルの読み書き https://duckdb.org/docs/extensions/httpfs/s3api.html
豊富な拡張機能‧コミュニティ拡張機能 ‧BigQuery, Google Spreadsheet の読み書き ‧地理空間関数、H3関数
DuckDB を取り巻くツール‧サービス ‧dbt-duckdb ‧dbt の DuckDB アダプタ ‧MotherDuck ‧フルマネージド DuckDB
‧BemiDB ‧ PostgreSQL のデータを同期して S3 に書き出す ‧ 内部で DuckDB のクエリエンジンで⾼速にクエリできる
DuckDB のユースケース
オブジェクトストレージへのクエリエンジン ‧主要なオブジェクトストレージ‧ファイル形式に対応して いて、たいていのデータが読み込める
オブジェクトストレージへのクエリエンジン ‧今までも Pandas などで読み込めたが、シングルバイナリ でより⼿軽にデータアクセスできる ‧Athena や BigQuery Omni のようにロックインされない
分散したデータを横断した前処理‧分析 ‧S3, GCSを横断したマルチクラウドな分析も可能 ‧マルチプロダクト環境でスタックが異なっても、 ストレージへの認証さえ通せばほとんど同じクエリで動く ‧組織間のデータ連携でもオブジェクトストレージが使われがち ‧そういった場⾯でも恩恵を受ける
スクリプト内での利⽤(データ品質保証の事例)
スクリプト内での利⽤(データ品質保証の事例) ‧複雑なデータテストを⾏いたい場合やデータそのものを販売し ているケースにおいて、継続的なテストが軽量に実施できる ‧インメモリモードで揮発しても問題ない
セルフホスト型の BI ツールへの統合 ‧アプリケーションに SQLite を組み込むアーキテクチャ ‧同じように BI ツールに DuckDB
を組み込むことで、⾼速化でき そう https://superset.apache.org/
DuckDB の苦⼿なシーン
きめ細かな権限管理への対応が難しい ‧データをオブジェクトストレージに配置して、DuckDB に設定す るシークレットで権限管理する? ‧それでも⾏レベル、列レベルのセキュリティは現時点では実施 できない
SSoT がやりにくい ‧複数のデバイスで DuckDB ファイルを同期できない ‧ちゃんと運⽤ルールを敷かないと、どの DuckDB ファイルが最 新なのか分からなくなる ‧オブジェクトストレージを
SSoT として保持して、DuckDB はク エリエンジンとして割り切って使うのがよさそう
頻繁に更新されるデータの同期には⼯夫が必要 ‧RDB に直接接続するのはあまりやりたくない ‧RDB に SELECT * FROM users クエリ打った結果を
DuckDB テー ブルとして保存してから重い処理をさせる、とかはできる ‧定期的に RDB から fetch するのも体験が悪い ‧デイリーで S3 書き出されるファイルや国勢調査の⼩地域ごとの 結果など、更新頻度の低いデータとの相性がよさそう
ところで なんでアヒル?
Why 🦆DB? DuckDB の FAQ によると… ‧⾶べて、歩けて、泳げる、どこへでも⾏ける! ‧そして雑⾷性で何でも⾷べて、環境変化への耐性が⾼い! そんなアヒルは多⽤途で⾼耐久性を求められる DBMS
のマスコッ トとして完璧 💯
まとめ ‧DuckDB を使うとデータの置き場所や形式を問わず、あらゆる データをサクッとクエリできる ‧⼤規模組織でデータ分析⽤途で使おうとするとガバナンス周り が⼤変だけど、前処理に限定するなどして活⽤できそう ‧すぐ使い始められるので、ぜひ試して⼀緒に知⾒交換しましょう!
おわり 🦆