Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
5分でわかるDuckDB 合同勉強会 in ⼤都会岡⼭ -2024 Winter- chanyou
Slide 2
Slide 2 text
Yu Nakamura - chanyou ‧ 広島在住でリモートワークしてます ‧📊 普段は事業会社でデータ基盤を作っています ‧🐍 Python とか Google Cloud とかよく使っています ‧🍓 おうち Kubernetes クラスタ ‧📢 mutable.stream という Podcast を2年くらい?
Slide 3
Slide 3 text
DuckDB 使ったことあるよ 🙋
Slide 4
Slide 4 text
DuckDB 知らない! 聞いたことあるけどよくわからない 🙋
Slide 5
Slide 5 text
DuckDB とは?
Slide 6
Slide 6 text
‧OLAP(オンライン分析処理)特化のDB Engine ‧要はめっちゃ早い ‧SQLite のようなインプロセス型のデータベース ‧⾼いポータビリティが特徴 ‧MIT ライセンスで C++ 実装
Slide 7
Slide 7 text
DuckDB の特徴 ‧シングルバイナリでセットアップが容易 ‧充実したクライアントAPI ‧豊富な外部データソースの対応と拡張機能
Slide 8
Slide 8 text
シングルバイナリでセットアップが容易 https://duckdb.org/docs/installation/?version=stable&environment=cli&platform=linux&download_method=direct&architecture=arm64
Slide 9
Slide 9 text
シングルバイナリでセットアップが容易
Slide 10
Slide 10 text
充実したクライアントAPI 公式 CLI ODBC API C C++ Java Julia 公式 Python R Rust Swift WebAssembly (Wasm) Node.js コミュニティからも C# Dart Elixir Go Ruby
Slide 11
Slide 11 text
Pythonだと ‧Pandas, Polars などの DataFrame と相互変換が可能 ‧PySpark にも対応 https://duckdb.org/docs/installation/?version=stable&environment=cli&platform=linux&download_method=direct&architecture=arm64
Slide 12
Slide 12 text
豊富な外部データソースの読み書きに対応 ‧ SQLite, PostgreSQL, MySQL などの RDBMS ‧ CSV, JSON, Parquet といったファイル これらに直接クエリできる。 https://duckdb.org/docs/data/parquet/overview.html
Slide 13
Slide 13 text
豊富な拡張機能‧コミュニティ拡張機能 ‧S3, Azure Blob Storage, GCS などのオブジェクトスト レージ上のファイルの読み書き https://duckdb.org/docs/extensions/httpfs/s3api.html
Slide 14
Slide 14 text
豊富な拡張機能‧コミュニティ拡張機能 ‧BigQuery, Google Spreadsheet の読み書き ‧地理空間関数、H3関数
Slide 15
Slide 15 text
DuckDB を取り巻くツール‧サービス ‧dbt-duckdb ‧dbt の DuckDB アダプタ ‧MotherDuck ‧フルマネージド DuckDB ‧BemiDB ‧ PostgreSQL のデータを同期して S3 に書き出す ‧ 内部で DuckDB のクエリエンジンで⾼速にクエリできる
Slide 16
Slide 16 text
DuckDB のユースケース
Slide 17
Slide 17 text
オブジェクトストレージへのクエリエンジン ‧主要なオブジェクトストレージ‧ファイル形式に対応して いて、たいていのデータが読み込める
Slide 18
Slide 18 text
オブジェクトストレージへのクエリエンジン ‧今までも Pandas などで読み込めたが、シングルバイナリ でより⼿軽にデータアクセスできる ‧Athena や BigQuery Omni のようにロックインされない
Slide 19
Slide 19 text
分散したデータを横断した前処理‧分析 ‧S3, GCSを横断したマルチクラウドな分析も可能 ‧マルチプロダクト環境でスタックが異なっても、 ストレージへの認証さえ通せばほとんど同じクエリで動く ‧組織間のデータ連携でもオブジェクトストレージが使われがち ‧そういった場⾯でも恩恵を受ける
Slide 20
Slide 20 text
スクリプト内での利⽤(データ品質保証の事例)
Slide 21
Slide 21 text
スクリプト内での利⽤(データ品質保証の事例) ‧複雑なデータテストを⾏いたい場合やデータそのものを販売し ているケースにおいて、継続的なテストが軽量に実施できる ‧インメモリモードで揮発しても問題ない
Slide 22
Slide 22 text
セルフホスト型の BI ツールへの統合 ‧アプリケーションに SQLite を組み込むアーキテクチャ ‧同じように BI ツールに DuckDB を組み込むことで、⾼速化でき そう https://superset.apache.org/
Slide 23
Slide 23 text
DuckDB の苦⼿なシーン
Slide 24
Slide 24 text
きめ細かな権限管理への対応が難しい ‧データをオブジェクトストレージに配置して、DuckDB に設定す るシークレットで権限管理する? ‧それでも⾏レベル、列レベルのセキュリティは現時点では実施 できない
Slide 25
Slide 25 text
SSoT がやりにくい ‧複数のデバイスで DuckDB ファイルを同期できない ‧ちゃんと運⽤ルールを敷かないと、どの DuckDB ファイルが最 新なのか分からなくなる ‧オブジェクトストレージを SSoT として保持して、DuckDB はク エリエンジンとして割り切って使うのがよさそう
Slide 26
Slide 26 text
頻繁に更新されるデータの同期には⼯夫が必要 ‧RDB に直接接続するのはあまりやりたくない ‧RDB に SELECT * FROM users クエリ打った結果を DuckDB テー ブルとして保存してから重い処理をさせる、とかはできる ‧定期的に RDB から fetch するのも体験が悪い ‧デイリーで S3 書き出されるファイルや国勢調査の⼩地域ごとの 結果など、更新頻度の低いデータとの相性がよさそう
Slide 27
Slide 27 text
ところで なんでアヒル?
Slide 28
Slide 28 text
Why 🦆DB? DuckDB の FAQ によると… ‧⾶べて、歩けて、泳げる、どこへでも⾏ける! ‧そして雑⾷性で何でも⾷べて、環境変化への耐性が⾼い! そんなアヒルは多⽤途で⾼耐久性を求められる DBMS のマスコッ トとして完璧 💯
Slide 29
Slide 29 text
まとめ ‧DuckDB を使うとデータの置き場所や形式を問わず、あらゆる データをサクッとクエリできる ‧⼤規模組織でデータ分析⽤途で使おうとするとガバナンス周り が⼤変だけど、前処理に限定するなどして活⽤できそう ‧すぐ使い始められるので、ぜひ試して⼀緒に知⾒交換しましょう!
Slide 30
Slide 30 text
おわり 🦆