Slide 1

Slide 1 text

#osc2 5hi OSC2025 Hiroshima PostgreSQLで手軽に DuckDBを使う! DuckDB & pg_duckdb入門

Slide 2

Slide 2 text

目次 01 自己紹介 02 DuckDBとは何か? 03 pg_duckdbの紹介 04 終わりに

Slide 3

Slide 3 text

自己紹介 高橋 一騎 (@ikkitang) 株式会社リンケージ Webアプリケーションエンジニア 日本PostgreSQLユーザー会 中国地方支部長 妻と息子と娘と岡山在住 AIデッキ TakahashiIkki TakahashiIkki ikkitang ikkitang Social

Slide 4

Slide 4 text

日本PostgreSQL ユーザー会 PostgreSQLの普及と発展を目的として 活動しているNPO法人 PostgreSQLの研究開発および普及促進 PostgreSQLに関する情報の公開 会員相互および外部との技術的・人間的交流

Slide 5

Slide 5 text

日本PostgreSQLユーザー会 中国地方支部の活動 各回ごとにテーマを決めてデータベースの勉強会を実施 例) PostgreSQL 最新情報 PostgreSQL、MySQLのバージョンアップ方法 AI × SQL https://dbstudychugoku.connpass.com/ Connpass で勉強会情報をお届けしてるので. ぜひフォローを! 中国地方DB勉強会

Slide 6

Slide 6 text

日本PostgreSQLユーザー会の活動 初心者による「使ってみた/動かしてみた」系 中級者による「こういうノウハウ使ってる」系 上級者(?)による「こういう拡張してみた」系 その他、PostgreSQLに関する話題であれば何でもOK! オンライン(Zoom)で開催したり、オフラインで開催したり。 多種多様なトピックで開催しているのでぜひフォローを https://pgunconf.connpass.com/ PostgreSQLアンカンファレンス

Slide 7

Slide 7 text

本セッションについて 資料は後日公開予定です 質問は #osc25hi 等でも投稿してもらえれば、後からでも拾います PostgreSQLユーザー会でブース出展もしていますので、ブースでお話等もできれば! 一応、注意事項として pg_duckdb入門 と言いつつ、DuckDB側にも比重を置いた発表です DuckDB知らない人もこの機会に知ってもらえれば!

Slide 8

Slide 8 text

2: DuckDBとは何か?

Slide 9

Slide 9 text

DuckDBはデータ分析を 再び高速で楽しいものにする DuckDBとは何か? DuckDB: 分析処理に特化した高速データベース OLAP(分析処理)に最適化 数百GBのデータセットを想定 データ準備を簡素化し、分析・実験に集中

Slide 10

Slide 10 text

DuckDBの何がうれしいか? 豊富なデータソースを処理することができる “慣れ親しんだ“SQLによりデータソースの情報を処理できる 依存関係を一切持たず、様々な言語から利用可能 豊富なデータフォーマットとして出力できる 既存のアプリケーションの裏側にシュッと組み込んで使うことができ データ分析の準備を簡素化できる点が嬉しい

Slide 11

Slide 11 text

DuckDBの事例 S3 + DuckDB(Lambda) の構築をしてAthenaの代替とする 75%のコスト削減の例も. https://qiita.com/shinonome_taku/items/cb9bfd7419a77a80e235 高速な jq 代替 シェルスクリプトの中でJSONを読み込んで変換し標準出力に出せる DuckDB-Wasmで軽量なBIツールの提供 ダッシュボードの提供 https://zenn.dev/shiguredo/articles/duckdb-wasm-s3-parquet-opfs GeoJSONのデータをブラウザで可視化するためのツール https://tech.newmo.me/entry/duckdb-wasm-typescript 今、自分もやってることがあって形にできれば....!!

Slide 12

Slide 12 text

DuckDBの入門本のご紹介 『DuckDB 実践入門』 DuckDB が登場した背景から始まり、使うべき、使うべきでないケ ースの紹介 DuckDBのインストール方法の紹介 基礎的なSQLクエリの実行方法、高度な分析手法  などなどがあります。 物理本をブースに持ってきているので興味ある方は 覗いていってください。 ※ 著者は自分じゃないです。

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Demo - CSVファイルへのQuery

Slide 15

Slide 15 text

Demo - Web上のCSVファイルへのQuery

Slide 16

Slide 16 text

Demo - SUMMARIZE句 SUMMARIZE句をSELECT句の前に 指定すると そのSELECT句の結果を統計的に解釈してデー タを得る事ができる ※ TABLE じゃなくて、SELECTクエリ WHERE とか SUM とか JOIN とかも考慮 してくれる

Slide 17

Slide 17 text

Demo - bar関数

Slide 18

Slide 18 text

DuckDB、激速じゃん!!! もう、全部これで良くない? “欲“

Slide 19

Slide 19 text

もちろん、DuckDBはすべてを解決するものではない DuckDBの特性を理解し、使い分けることによって 最大の効力を発揮することができる DuckDBは万能ツールではない OLAP (分析特化型) OLTP (トランザクション処理向け) DBMSの2つの型 DuckDB PostgreSQL, MySQL

Slide 20

Slide 20 text

OLTP vs OLAP の違い OLTP (PostgreSQL, MySQL) トランザクション処理に最適化 書き込み操作が主   更新に強い(ACID特性) 行指向(行単位)でデータを保存 確実にデータを保持する必要がある 業務アプリケーション 分析処理に最適化 読み込み操作が主   複雑なクエリを効率的に処理 列指向(列単位)でデータを保存 多数のデータを扱う必要のある 分析のワークロードに最適 OLAP (DuckDB)

Slide 21

Slide 21 text

2: DuckDBとは何か まとめ DuckDBはOLAP処理に特化したデータベース 大量のデータをSQLによって効率的に処理することができる 様々なデータソースの入出力に対応していること、また依存性の少なさから 様々な環境で利用できる データ準備が簡素化され、データの分析・実験に集中できる ただ、DuckDBはすべてを解決するものではない 分析特化型のOLAP, トランザクション処理向けのOLTP といった DBMSの 型、特性を理解し、使い分けることにより最大限の効果を発揮する

Slide 22

Slide 22 text

3: pg_duckdbの紹介

Slide 23

Slide 23 text

なんとか...DuckDBを... “DuckDBは銀の弾丸ではない” とはいえ気持ちはわかる アプリケーション提供の中で運用するために必要なコンポーネントは 少ない方が良い → そこで pg_duckdb という選択肢の紹介

Slide 24

Slide 24 text

PostgreSQLの pg_duckdb Extension PostgreSQLのプロセス内に. DuckDBエンジンを組み込む拡張機能 DuckDBのクエリエンジンの使用を指定し SQLを実行することで PostgreSQLのプロセス上で DuckDBエンジンがクエリを実行し結果を 返す 2025年9月にv1.0がリリース

Slide 25

Slide 25 text

pg_duckdb の使い方(例 DuckDB同様 クラウド上のストレージの分析ができる → CSVのデータをPostgreSQLに Import/Export できる

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

pg_duckdb DEMO https://github.com/duckdb/pg_duckdbを cloneすることで試せます

Slide 28

Slide 28 text

pg_duckdb 注意事項 https://github.com/duckdb/pg_duckdb の docsを読んでおくべし transaction の話 PostgreSQLとDuckDBでトランザクションをまたぐことはできない 型互換の話 MotherDuck(クラウド) を有効化しないと永続化テーブルが作成できない MotherDuckが無効の場合は一時テーブルの作成のみサポート DuckDBは単一プロセスでしか書き込めないので

Slide 29

Slide 29 text

PostgreSQL × DuckDB ところで PostgreSQL × DuckDB というと... DuckDB PostgreSQL 拡張機能がある

Slide 30

Slide 30 text

DuckDBのPostgreSQL Extension DuckDBの拡張機能として提供 DuckDBの関数や演算子を使用して PostgreSQLのデータを分析できる DuckDBがPostgreSQLからデータを取得する際 に、バイナリでやり取りする仕組みになっている ので不要な処理がスキップされ高速にデータを 取得できる

Slide 31

Slide 31 text

pg_duckdbとDuckDB PostgreSQL Extensionの違い

Slide 32

Slide 32 text

PostgreSQL + DuckDB統合のアプローチ 劇的な性能向上 (特定ベンチマークで1500倍高速化) PostgreSQL(物理)テーブルへの直接アクセス メリット デメリット PostgreSQLサーバーへの拡張インストールが必要 マネージドサービスの多くでは 現状利用不可 → 自前でのPostgreSQL運用が必要 分析専用のPostgreSQLを立てる ことが推奨されている pg_duckdb

Slide 33

Slide 33 text

PostgreSQL + DuckDB統合のアプローチ 既存のPostgreSQLサーバーに変更不要 マネージドサービス(RDS、Cloud SQL)でも利用可能 メリット デメリット (高速化されてるとはいえ)ネットワーク経由でのデータ転送が必要 大きなテーブルでは性能上限がある DuckDB Server の運用が必要 (“デメリット”といえるか?) DuckDB PostgreSQL Extension

Slide 34

Slide 34 text

pg_duckdb (再掲) もし、気になった方は https://github.com/duckdb/pg_duckdb をcloneしてもらって 触ってみてください!! PostgreSQLのテーブルとDuckDBのテーブルがJOINできるぐらいで キモ..すご..ってなるはず!w

Slide 35

Slide 35 text

4: 終わりに

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

BIG DATA IS DEAD Google BigQuery のプロダクトリーダーのブログ 「ビッグデータ」のための分析基盤を!という流れがあったが 実際にビッグデータを使ってたのは一部の企業だった データストレージの総容量は1TB以下 データ保存サイズの中央値は100GB ほとんどの会社は大量のデータを必要とするのではなく、 信頼できるデータを収集して分析できれば十分である。

Slide 38

Slide 38 text

改めて DuckDBのユースケースって? 扱えるデータ量は数百GBを想定してチューニングされている 「DuckDBはデータ分析を再び高速で楽しいものにする」 データパイプラインとデータの準備が簡素化され、実際の分析、探 索、実験に多くの時間を割くことができるようになる 推測ではなく、計測によりチューニングラインが作られてきた

Slide 39

Slide 39 text

LLM全盛の時代 LLM全盛の時代にあって、我々技術者が求められる成果に対しての スピードの期待値はどんどん高まっていくはず!! 技術の特性を更に理解してトップスピードを高める工夫と トップスピードを保つデバフを起こさない工夫を絶えず やっていきましょう!

Slide 40

Slide 40 text

参考文献 公式ドキュメント:https://github.com/duckdb/pg_duckdb DuckDB公式: https://duckdb.org/ DuckDB実践入門: https://www.amazon.co.jp/dp/B0C5Y8X1ZK Big DATA is DEAD: https://motherduck.com/blog/big-data-is- dead/ 15分で学ぶDuckDBの可愛い使い方: https://speakerdeck.com/notrogue/15fen-dexue-buduckdbnoke-ai- ishi-ifang-duckdbnozui-jin-nogeng-xin

Slide 41

Slide 41 text

ご清聴ありがとうございました!