DuckDB 2.0.0 LTS Cinnamon Teal リリースノート

DuckDB 2.0.0 LTS 概要

DuckDB 2.0.0(コードネーム「Cinnamon Teal」)は、プロジェクトを長期サポート(LTS)フェーズに移行させる主要な機能リリースであり、少なくとも2027年10月までサポートが保証されています。バージョン1.5以降の約20,000件のコミットから構築されたこのリリースは、データベースの機能をインプロセスエンジンおよびサーバーサイドの分析プラットフォームとして拡張することに焦点を当てています。

Quackによるクライアント・サーバーアーキテクチャ

DuckDB 2.0.0は、Quackプロトコルを正式に採用し、ネイティブなクライアント・サーバーアーキテクチャを可能にします。ユーザーはCALL quack_serve()を使用してDuckDBサーバーを実行し、新しいCONNECTステートメントを使用してリモートクライアントから接続できるようになりました。この機能により、分散ワークフローが簡素化され、PostgreSQLやMySQLを含むリモートデータベースにアタッチでき、ネットワーク経由でデータを取得するのではなく、ソースサーバー上でクエリを実行するリモートプッシュダウンオプティマイザを利用できます。

パフォーマンスと非同期I/O

非同期I/Oが現在、ParquetおよびCSVファイルを読み取るためのデフォルトとなり、I/Oレイヤーがクエリ処理から分離されました。この改善により、データベースは複数の読み取りリクエストを同時に保持できるようになり、S3などのオブジェクトストレージのスループットが大幅に向上します。初期採用者は、この変更によりDuckDBが高コア数のクラウドインスタンスで効果的にスケーリングできるようになり、以前のバージョンでは64で頭打ちだったマシンでも、最大192 vCPUのマシンでパフォーマンスが向上したと報告しています。

SQL機能とデータ処理

トリガーとマテリアライズドビュー

DuckDB 2.0は、CREATE TRIGGERサポートを導入し、BEFOREおよびAFTERイベントをFOR EACH ROWおよびFOR EACH STATEMENT機能とともにサポートします。この追加により、監査ログと増分メンテナンスされるマテリアライズドビューの実装が可能になり、複雑なデータウェアハウジングタスクにおけるDuckDBの有用性の大きなギャップを埋めます。

VARIANT型

VARIANT型は、JSONのような半構造化データを保存しながら、カラムナ実行パフォーマンスを維持するために設計された第一級市民となりました。エンジンは、VARIANTデータ内の一般的な構造を自動的に「シュレッド」し、生のテキストベースのJSONと比較して、効率的な圧縮と高速なクエリを可能にします。

SQL方言の拡張

  • エージェントモード: CLIは、AIコーディングアシスタントによって駆動されていることを検出すると、出力をコンパクトなMarkdownテーブルとして自動的にフォーマットし、トークン使用量を削減するためにクエリコスト見積もりを提供します。
  • パーサー: 新しい拡張可能なPEGベースのパーサーがデフォルトになり、後方互換性を維持しながら将来の構文拡張が可能になりました。
  • 新しい構文: データ変更CTE、ベクトル類似性検索のためのNEAREST結合、およびネストされたスキーマ(例:finance.reports)のサポートが追加されました。

移行と内部構造

2.0にアップグレードするには、ストレージの互換性に注意が必要です。古いバージョンでは、2.0.0で作成されたデータベースファイルを読み取ることができません。主な内部変更点は以下のとおりです。

  • コンパイラ要件: プロジェクトでは現在、C++17コンパイラが必要です。
  • ICUの削除: ICUライブラリは、タイムゾーンおよび照合サポートのためのネイティブな軽量実装に置き換えられました。
  • 非推奨化: 古い単一アローラムダ構文とアマルガメーションビルドは非推奨となり、macOS x86_64のサポートは段階的に廃止されています。

コミュニティの洞察

ユーザーは、本番環境でのDuckDB 2.0の多様性を強調しています。あるユーザーは、このエンジンを使用して7テラバイトのログを2時間以内にParquet形式に圧縮し、署名付きURLを介してアクセス可能な「フローズン」データレイクを作成したと述べています。別の開発者は、新しいクライアント・サーバー機能の価値を強調し、従来のリソースを大量に消費するデータスタックに代わる軽量な代替手段を提供すると示唆しました。Quackプロトコルはネイティブな選択肢ですが、一部のコミュニティメンバーは、より広範なエコシステム互換性のために、PostgresワイヤプロトコルまたはArrow FlightとDuckDBをブリッジするカスタム拡張機能も活用しています。

Sources

関連