스크립트
00:00:00何年も前から、データがスプレッドシートに収まらなくなった時のアドバイスは常に決まっていました。
00:00:05SnowflakeやBigQueryといったクラウドのデータウェアハウスを立ち上げろ、というものです。
00:00:09ですが、ノートPCだけで動作する、この小さな無料のデータベースがあります。
00:00:13みんながクラウドばかりを見ている間に、それは静かに成長を遂げていたのです。
00:00:16今や本格的な暗号化、Git風のupsert、そして初の長期サポートリリースまで備えています。
00:00:22これがDuckDBです。2026年現在、どのような立ち位置にあるのか、
00:00:26そして多くの人が誤解している重要な点についても解説します。
00:00:35では、DuckDBとは何か。
00:00:36「分析のためのSQLite」と考えてください。
00:00:40ご存知、SQLiteです。
00:00:41単一ファイル、サーバー不要、アプリに組み込める。
00:00:45DuckDBも全く同じ考え方ですが、トランザクション用ではなく、
00:00:50数値計算用に作られています。
00:00:52何百万行ものデータを高速でスキャン・集計するために設計されました。
00:00:56最大の特徴のひとつは、Parquet、CSV、JSONファイルを直接読み込めることです。
00:01:02インポートの手順も、事前のデータ読み込みも不要。
00:01:05ファイルにSQLを向けるだけです。
00:01:08どんな感じかお見せしましょう。
00:01:09ワークフローを効率化するコーディングツールが好きなら、ぜひチャンネル登録を。
00:01:13新しい動画をどんどん投稿しています。
00:01:15では、端末でDuckDBと打てば、瞬時にSQLプロンプトが立ち上がります。
00:01:20これを見てください。
00:01:21インターネット上にあるParquetファイルを直接SELECTします。
00:01:27ダウンロードはしていません。
00:01:28定義もサーバーの起動もしていません。
00:01:30DuckDBがリモートファイルをストリーミングし、一行のSQLで実行したのです。
00:01:36わずか5秒、これが人々を惹きつけてやまない理由です。
00:01:40ですが、よく誤解されていることがあります。
00:01:43現在2つのリリースが混在しており、ネット上では情報が混同されがちです。
00:01:48誰もが話題にするエキサイティングな機能、つまりデータベースのフルAES-256暗号化や、
00:01:54Git風upsertsのためのMERGE INTOコマンド、Apache Icebergテーブルの書き込み機能など、
00:01:59これらは1.5には含まれていません。
00:02:02これらはすべて9月のDuckDB 1.4でリリースされたものです。これが初の長期サポートリリースでした。
00:02:08そして3月の1.5で、その更新版が登場しました。
00:02:09(解説を続けます)
00:02:14カラー表示とページャーを備えた新しいCLI、非定型データ向けの新しいVARIANT型、
00:02:20そしてコアに組み込まれたジオメトリ機能などです。
00:02:24簡単なクエリだけではなく、最新のDuckDBの使い心地をお見せしましょう。
00:02:301.4の機能に、1.5で追加された要素を加えてみます。
00:02:34先ほどのParquetクエリはそのまま使えます。
00:02:38これが1.5の新機能、VARIANT型です。
00:02:43テーブルを作成し、整数、文字列、配列、オブジェクトを混ぜて同じ列に挿入します。
00:02:50スキーマ定義も、JSON解析も不要で、そのまま動作します。
00:02:51(前述の続き)
00:02:54単なるJSONよりも圧縮効率が良く、クエリ性能にも優れたバイナリデータとして保存されます。
00:02:59これが新しいVARIANT機能です。
00:03:02次はDuckDBでの構築を変えた「MERGE INTO」です。1.4の機能ですよ。
00:03:08混同しないように。
00:03:09シンプルにSQL文ひとつで完結します。
00:03:10アプリ側の複雑なロジックは不要です。
00:03:12以前ならSparkやカスタムPythonが必要だったような処理です。
00:03:13(前述の続き)
00:03:17そして暗号化も見てみましょう。
00:03:21通常通りクエリを投げられますが、キーなしでセッションを開こうとすると、
00:03:27期待通りにエラーとなります。
00:03:30ページレベルでのAES-256暗号化。キーの管理は自分で行います。
00:03:33DuckDBはキーを保存も管理もしません。
00:03:36Iceberg書き込みやジオメトリも強力です。
00:03:41多くの方は「spatial」拡張を使うかもしれませんが。
00:03:431.4が大きなアップデートだったのはこのためです。
00:03:45単なるクエリエンジンから、単一マシンで実データを安心して扱えるものへと進化したのです。
00:03:50(補足終了)
00:03:51セキュアなファイル管理、信頼性の高いupsert、モダンなレイクハウス形式。
00:03:551.5はCLIの向上と新しいVARIANT型で体験をさらに洗練させました。
00:04:00では、手元の既存ツールと何が違うのでしょうか?
00:04:04まずはSQLite。
00:04:05同じく単一ファイルでサーバー不要の感覚です。
00:04:08しかし、SQLiteはトランザクション向けの行指向データベース。
00:04:12DuckDBは分析向けの列指向データベースです。
00:04:15次はPandasとの比較。
00:04:17DuckDBは強力なSQLオプティマイザとマルチスレッド結合を提供します。
00:04:21そのため、大きなグループ化クエリでは往々にしてDuckDBの方が高速です。
00:04:24SnowflakeやBigQueryは、チーム全体でペタバイト級データを扱うためのクラウドウェアハウスです。
00:04:30(解説を続けます)
00:04:32DuckDBは、あなたのPCで無料で動作する単一プロセスです。
00:04:35最大の不満点として繰り返されるのがメモリ問題です。
00:04:4010億行のデータを食わせるとメモリ不足でダウンすることがあります。
00:04:45プロダクション環境で使うには不安定かもしれません。
00:04:492点目は、これはトランザクションDBではないということです。
00:04:53単一ライター方式です。
00:04:54一度に一つのプロセスしか書き込めません。
00:04:57アプリのバックエンドやセッションストアに繋ぐものではありません。
00:05:01それはPostgresの役割であり、小さなMVPならSQLiteの仕事です。
00:05:05暗号化についても、徹底していますが「キー管理は自分で行う」必要があります。
00:05:10DuckDBはキーを保存しません。
00:05:12キーのローテーションもしません。
00:05:14監視もしません。
00:05:15キーを失くしたら、
00:05:16データは失われます。
00:05:17Iceberg書き込みは、まだ比較的新しい拡張機能です。
00:05:22データ分析、ParquetやCSVの処理、ELT変換、ノートブックでのデータ調査。
00:05:28数メガバイトからシングルマシン規模までの処理なら、DuckDBは最高のツールの一つです。
00:05:33MITライセンスの完全無料で、制限もありません。
00:05:35(解説を続けます)
00:05:39ですが、アプリのトランザクションバックエンドや、何十億行もの日常的な処理が必要で、
00:05:44メモリ管理を手動で行いたくない場合、これは間違った選択肢です。それも当然のことです。
00:05:50適材適所のデータベースということです。
00:05:52このようなコーディングのヒントをもっと知りたい方は、BetterStackをぜひ登録してください。
00:05:56次の動画でお会いしましょう。