DuckDB 2.0 LTSがサーバーモード、トリガー、VARIANT型を追加
DuckDB 2.0.0は10月21日に公開された長期サポート(LTS)リリースで、サーバーモード、トリガー、VARIANT(バリアント)型を追加しました。2.0より前のバージョンは、2.0のファイルを読み込めません。
4 分で読めます

数字で見る
- commits since DuckDB 1.5, per the DuckDB team
- ~20,000
- earliest end of support for DuckDB 2.0
- Oct 2027
- extended end of support for DuckDB 1.5
- March 2027
DuckDBは2026年10月21日にバージョン2.0.0をリリースしました。長期サポート(LTS)リリースで、プロジェクトは少なくとも2027年10月までサポートします。組み込みのサーバーモード、SQLトリガー、新しいパーサーが加わりました。一方で、元に戻せない変更もあります。2.0で書き込んだデータベースファイルは、それより前のどのバージョンでも開けないため、アップグレードには計画が必要です。
DuckDBは、分析向けのオープンソースSQLデータベースです。SQLiteと同じく、独立したサーバーとしてではなく、プログラムの内部で動作します。SQLiteと違い、大きなテーブルや、ParquetやCSVなどのファイルに対する大規模な分析クエリ向けに作られています。
DuckDB 2.0で加わった機能
DuckDBの発表は、2.0をチームにとってこれまでで最大の機能リリースと呼んでいます。バージョン1.5以降の20,000件近いコミットから作られたものです。DuckDBチームは「DuckDB 2.0は、何よりもまず機能リリースです」と書いています。このリリースのコードネームは「Cinnamon Teal」で、カモの一種であるSpatula cyanopteraにちなんでいます。GitHubのリリースでは「Cyanoptera」という名前が使われています。
| 機能 | 内容 |
|---|---|
| Quackサーバーモード | DuckDBを、他のクライアントが接続するサーバーとして動かします |
| トリガー | CREATE TRIGGERは、テーブルへの変更の前または後に、SQLを自動的に実行します |
| VARIANT型 | JSONなどの半構造化データを保存し、共通の構造を切り出して、圧縮率と速度を高めます |
| 非同期I/O | クエリの実行中にParquetやCSVのファイルを読み込み、複数のリクエストを同時に処理します。主な目的は、Amazon S3などのクラウドストレージの高速化です |
| 新しいSQLパーサー | PEGベースのパーサーがデフォルトになりました。拡張機能は独自のSQL構文を追加でき、エラーは問題の場所を示します |
| タイムゾーンのネイティブ対応 | タイムゾーン、カレンダー、照合順序(collation)に、ICUライブラリが不要になりました |
トリガーは、データベースに保存されるルールです。行が変更されたら、このSQLも実行する、というものです。DuckDB 2.0は、行レベルまたはステートメントレベルでBEFOREトリガーとAFTERトリガーをサポートします。UPDATEに対するBEFORE ... FOR EACH ROWトリガーなど、一部の組み合わせはまだサポートされていません。
QuackでDuckDBがサーバーになる
これまでDuckDBは、一度に1つのプログラムにしか対応していませんでした。Quackでは、CALL quack_serve(...)でサーバーを起動し、クライアントはATTACH 'quack:...'で接続します。新しいCONNECT文は、セッション全体をリモートのデータベースに切り替えます。コマンドラインツールにも、対応する-serveと-connectのフラグが加わります。
サーバーは、デフォルトではローカルマシン上でのみ接続を待ち受けます。リモートアクセスについて、DuckDBチームは、TLS暗号化を処理するリバースプロキシの背後に置くことを推奨しています。InfoWorldが8月に報じたところによると、Quackによって、PostgreSQLやMySQLのデータベースにリモートからクエリを実行することも容易になります。
アップグレード前に確認すべき破壊的変更
リリース記事とGitHubのリリースノートによると、次の変更は既存のコードやビルドを壊す可能性があります。
- ファイルは一方通行です。 DuckDB 2.0は、既存のデータベースファイルを読み書きできます。チームは「DuckDB 2.0より前のバージョンは、DuckDB 2.0で作成されたデータベースファイルを読み込めません」と警告しています。
- 新しいパーサーがデフォルトです。
SET enable_legacy_parser = true;で古いパーサーに戻せます。 - 単一矢印のラムダは無効です。
x -> x + 1のような構文は無効化されました。SET lambda_syntax = 'enable_single_arrow';で、バージョン2.1で削除されるまでは再び有効にできます。 - 整数のゼロ除算は、NULLを返さずにエラーを出すようになりました。
- ビルドにはC++17が必要です。 以前はC++11でした。また、リリースビルドではClangコンパイラーを使うようになりました。アマルガメーション(amalgamation)ビルドは非推奨になりました。
- Intel Macは段階的にサポート対象から外れます。 x86_64のmacOS向けには、コミュニティ拡張機能がビルドされなくなりました。DuckDB 2.1では、サポートが打ち切られます。
情報源の間で、1点だけ食い違いがあります。InfoWorldのプレビュー記事は、拡張機能向けの安定したC APIについて説明していました。リリース記事は、刷新されたC API v2について「まだ安定版とはされていない」としています。チームがまず実際の現場で試したいためです。
サポート期間
| バージョン | サポート期限 |
|---|---|
| DuckDB 2.0(LTS) | 少なくとも2027年10月まで |
| DuckDB 1.5 | 2027年3月まで(延長) |
| DuckDB 1.4 | 2026年11月下旬まで |
開発者にとっての意味
今回は、いつものバージョンアップではなく、計画的な移行として扱ってください。
- 最初に開く前に、データベースファイルをコピーしてください。 DuckDB 2.0が一度ファイルに書き込むと、1.5を使う古いツールやチームメンバーは、そのファイルを読めなくなります。共有ファイルを読み込むものは、すべて一緒にアップグレードしてください。
- 本番環境のコピーでテストしてください。 DuckDBチームは、まずシャドーシステムで試すことを推奨しています。ミッションクリティカルな用途では、11月に予定されている最初のパッチリリースを待つよう勧めています。
- クライアントを確認してください。 コマンドラインツールとPythonクライアントは、すでに対応済みです。Go、R、Javaのクライアントと一部の拡張機能は「数日かかる場合があります」とチームは述べています。
- SQLで2つのパターンを検索してください。 単一矢印のラムダと、ゼロで割る可能性がある整数除算を探してください。どちらも、動作が変わりました。
- Quackサーバーを直接公開しないでください。 チームの助言どおり、localhostにとどめるか、前段にTLSリバースプロキシを置いてください。
- 1.4を使っているチームは、最初に動くべきです。 1.4のサポートは2026年11月下旬に終わります。2.0にアップグレードするか、より小さな一歩として1.5に移行してください。
出典
- Announcing DuckDB 2.0.0 - DuckDB
- DuckDB v2.0.0 release notes - GitHub
- DuckDB 2.0 coming this fall with client-server mode - InfoWorld
関連記事

TorchTPU:GoogleがTPU向けネイティブPyTorchをオープンソース化
TorchTPU(トーチTPU)は、GoogleのTPU上でPyTorchをネイティブに動かします。テストした4,917のHugging Faceモデルのうち98%が合格しました。PyTorch/XLAは非推奨となり、11月15日にアーカイブされます。
PyTorch 2.15、MacでのMoEデコードを最大6.5倍高速化
PyTorch(パイトーチ)2.15は、AppleのGPUでFP8テンソルに対応し、新しいMetalカーネルを追加します。M3 UltraでのQwen3.6-35B-A3Bのデコードは、毎秒9.4トークンから61.3トークンに跳ね上がります。

Tools This Week:2026年10月10日 - Python 3.15、Mold 3.0
今週の開発者ツール7本を紹介します。Python(パイソン)3.15.0と、Rustで書き直されたリンカーのMoldを筆頭に、それぞれの変更点と料金を示します。