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
iWonder118
January 25, 2025
0
27
手軽に始めるDuckDB
funabashi.devにて飛び入りLT
https://funabashidev.connpass.com/event/334065/
iWonder118
January 25, 2025
Tweet
Share
More Decks by iWonder118
See All by iWonder118
Reactで見る!純粋関数で深ぼる副作用
iwonder118
0
40
花開くWebAssembly(Wasm)の可能性 in 2025/06/21 まさるの勉強会
iwonder118
0
3
SSG___CSRで乗り切るiframe内ルーティング_AIコーディング拡張版_in_Funabashi.dev.pdf
iwonder118
0
33
SSG + CSRで乗り切るiframe内ルーティング in React Tokyo LT 2025_05_17
iwonder118
0
3
React ToDoアプリをClineで作りながら考える フロントエンドエンジニアは AIによってなくなるのか?
iwonder118
1
1k
開発においての気配り
iwonder118
1
16
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
A Tale of Four Properties
chriscoyier
160
23k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
The Language of Interfaces
destraynor
158
25k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Code Review Best Practice
trishagee
69
19k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.3k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
282
13k
Transcript
⼿軽に始めるDuckDB in Funabashi.dev 2025/1/25
自己紹介 社内システムを改修したり、インフラを作ったり、APIを生やしたり...etc 趣味:トンチキ技術グッズを作ったり 河村 直樹(@iwonder118) かわむら なおき
グッズ①:Rustyなカニペンホルダー
グッズ②:Pug(Data dogの置物) ※余談:名前は「STRIKE JADE」Pug記法で JADE
DuckDBは組み込み可能で、サーバー不要な簡単導⼊のデータベース サーバー不要の利便性 DuckDBは独⽴したサーバープロセスを必 要とせず、単⼀のライブラリを⽤いること で素早く導⼊できます。シンプルな運⽤が 可能。 組み込み可能な設計 SQLiteのように、DuckDBはアプリケー ションに組み込み可能な設計です。サー バーの管理を不要にし、既存のシステムに
直接統合できる。 インプロセスデータベース
データを列単位で保持することで、 分析と集計の速度を⾶躍的に向上。 ⾼速な集計性能 列指向ストレージにより、特定の列の集計 やフィルタリングを⾼速に⾏うことができ るため、OLAPクエリのパフォーマンスが 劇的に改善。 列単位でのデータ保持 データを列単位で保存することで、特定の 列のデータだけを効率よく読み込むことが
できるため、分析と集計の処理速度が⼤幅 に向上。 列指向ストレージ
DuckDBのベクトル化エンジンとマルチスレッド実⾏が、 ⾼速で効率的なデータ処理を実現します。 ベクトル化エンジン DuckDBはベクトル化エンジンに より、データを効率的に処理しま す。ベクトル単位で連続したデー タを処理するため、CPUのキャッ シュ効率が向上し、クエリの実⾏ 速度が⼤幅に向上。 01
マルチスレッド並列実⾏ マルチスレッド設計により、 DuckDBは複数の処理を同時に実 ⾏できます。これは、データ量が 多く複雑なクエリを短時間で完了 させるのに⾮常に有効で、全体の 処理速度を⾼める。 02 ⾼いパフォーマンス
安全なデータ操作 トランザクション内での操作が完 全に実⾏されるか、まったく⾏わ れないかを保証します。これによ りデータの不整合を防ぎ、システ ムの整合性を確保するためアプリ ケーションの信頼性が増加。 柔軟な操作性 DuckDBはデータの更新や挿⼊が必 要な場⾯にも効率的に対応可能で
す。様々なスクリプトからの操作 に柔軟に対応でき、⽇常的なデー タ処理が容易。 ACID特性の重要性 ACID特性により、トランザクショ ンの⼀貫性が保証され、システム の信頼性が向上します。期待され たデータの正確性と完全性を保つ ことで、ビジネス状況における正 確なデータ判断を促進。 DuckDBはACID特性を備え、データの整合性を保ちながら 信頼性の⾼い処理を提供。 ACIDトランザクションサポート
DuckDBは多⾔語‧多ツール対応で、既存の分析基盤に容易に統合が可能。 分析基盤との連携 pandasやSparkなど、⼈気の分析ツールと も連携しやすく、SQLベースでのクエリ実 ⾏をスムーズに⾏います。業務の効率を⾼ める。 幅広い⾔語サポート Python、Rだけでなく、C++、Java、 Node.jsなど多種多様な⾔語に対応してい ます。これにより、既存の開発環境と容易
に統合。 複数⾔語‧ツールとの統合
DuckDBはライブラリ形式で簡単に導⼊でき、外部依存が少ない軽量な設計。 外部依存が少ない設計 DuckDBは外部ライブラリへの依存性が低 く、シンプルな環境構築で利⽤可能です。 ユーザーは⼿軽にシステムをセットアッ プ。 ライブラリ形式の利点 DuckDBはライブラリ形式で提供されてお り、アプリケーションに直接組み込むこと ができます。これにより、導⼊⼯程が簡素
化。 シンプルな導⼊
DuckDBはオープンソースで活発に開発が進⾏し、 迅速な改善と機能の追加が⾏われている。 開発の活発さ DuckDBはGitHubで開発が進⾏中 で、多くの開発者が参加し、⽇々 コードや機能の改善が⾏われてい ます。このことにより最新技術が 取り⼊れられ、⾼品質なソフト ウェアが提供。 01
頻繁なアップデート 新機能や最適化が頻繁に更新さ れ、ユーザーは常に最新のパ フォーマンスと機能を利⽤できま す。この頻度の⾼いアップデート はユーザーの多様なニーズに迅速 に応えることに貢献。 02 オープンソースプロジェクト
ローカルでの⼤きなCSV加⼯ これまで ⾃由にプログラミングができる。 ⼀⽅でpandasとしての操作で直感的かと ⾔われると疑問 No.01 PythonのpandasでCSVを加⼯ テーブルっぽい形でみやすい。 ⼀⽅で1万⾏ぐらいで応答性が怪しくなる No.02
スプシで加⼯ ⾃分が使っている⽅法
select * from "/Users/iwonder/Downloads/140007_public_facility_library.csv"; 神奈川県公⽴図書館等データ⼀覧https://catalog.opendata.pref.kanagawa.jp/dataset/7762fb99daa687050cd86e85403dc81e 型定義⼀切不要(⾃動でやってくれる)でCSVをSQL操作ができる
select * from '/Users/iwonder/Downloads/140007_public_facility_library.csv' as t1 where t1."多⽬的トイレ(1=有、0=無)" = 1;
神奈川県公⽴図書館等データ⼀覧https://catalog.opendata.pref.kanagawa.jp/dataset/7762fb99daa687050cd86e85403dc81e 型定義⼀切不要(⾃動でやってくれる)でCSVをSQL操作ができる
DuckDB-wasmをフロントエンドで使ってみたい とはいえ、データを引き抜かれる可能性があるのでどんなデータを使うか悩み中 サーバサイドに負荷をかけずにできる フロントでSQL分析のできるUIを作ってみたい やってみたいこと1
(おそらく)DuckDBのアイコンは上からアヒルを⾒たもの DuckDBのラバーダックを作る やってみたいこと2 調べる限り黒ラバーのラバーダックがドイツにしかない