DuckDB 2.0 が速い理由とは

2026/10/11 3:08

DuckDB 2.0 が速い理由とは

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

DuckDB 2.0 alpha は、非同期 I/O、改良された再帰的 CTE エンジン、そして新しい VARIANT データ型の 3 つの中核的な進展を通じて、大幅なパフォーマンスと効率性の向上を達成しています。非同期 I/O は、ネットワーク処理と CPU タスクを同時に行うために別個のダウンロードスレッドプールを利用し、DuckDB 1.5.5 で必要だった AWS S3 クエリ時間の 18.8 秒から、2.0 alpha では 7.7 秒へ短縮しました。レガシーな動作が必要なユーザー向けに、

read_ahead_depth
を 0 に設定することでアイドル時のダウンロード/デコードを復元できます。再帰的 CTE エンジンでは、テーブルを一度だけ読み込みながら内部の親参照を検索するため、Git履歴のトラバースなど深い階層構造においては最大 40 倍のパフォーマンス向上(約 16 秒から 0.1 秒へ)を実現しますが、浅い構造においては改善は僅かです。新しい VARIANT タイプは、一貫した JSON フィールドを自動的に最適化された列に「shredding」し、ストレージ容量を 224 MB から 85 MB に削減するとともに、フィルタ処理時間を 366 ms から 63 ms に高速化します。VARIANT フィールドへのアクセスは、JSON 文字列の解析よりも約 6 倍速いです。ユーザーには現在の制限事項に注意する必要があります:高トラフィックなクエリで VARIANT リストを
VARCHAR[]
にキャストする場合、最大で約 2 秒かかるため、ホットパスではこうしたキャストを行わないことを推奨します。これらのハイライトに加え、リリースには履歴管理用の SQL トリガー、ネストされたスキーマ、CTE 内の DML、Spark SQL 互換性、そして外部ファイルキャッシングの改善が含まれています。CLI は、自動フォーマットされた SQL(duckdb -format)、クエリ可能な履歴、組み込みドキュメントを支援しており、「Quack」クライアントサーバープロトコルはバージョン 1.0 に到達しました。

本文

DuckDB 2.0:新機能とパフォーマンスの要点解説

今年秋にリリースされる予定の DuckDB 2.0 のアルファ版が公開されています。表やパイプライン構築の開発者向けの新機能を実際に検証しました。この記事では、特に重要だと考える 3 つの主要機能 と、コミット履歴で見つけた「隠れた宝石」を解説します。

注記: 以下の数値は、M5 ラップトップと自宅インターネット回線での測定結果です。引用前にはご自身の環境でのベンチマークを実行してください。


1. 非同期 I/O:AWS S3 からのクエリが大幅に高速化

クエリの変更を加えることなく、S3 からの読み込みが劇的に速くなりました。

ベンチマーク結果

2.2 GB の Parquet ファイル(Stack Overflow の投票データ)を読み込み、1 つの列を読み取る場合:

バージョン所要時間改善率
DuckDB 1.5.518.8 秒-
DuckDB 2.0 アルファ7.7 秒約 2.4 倍高速化
  • 環境:自宅インターネット回線(us-east-1 リージョン)
  • クラウド環境から実行する場合はさらに高速になる可能性があります。

仕組みの解説:なぜ速くなったのか?

ファイルは約 12 万行ごとのブロックに分割されており、ダウンロードと計算(CPU)という 2 つの処理を行います。

  • DuckDB 1.5.5: ワーカーが順番にダウンロード・待機・デコードを行うため、CPU がアイドル状態になる時間が発生し、並列数が最大 18 に制限されます。
  • DuckDB 2.0: ダウンロード専用のスレッドプールでデータを受信し、バッファリングします。ワーカーは常に次のデータのデコードに集中できるため、ネットワークと CPU が同時に稼働します。

制御設定:
read_ahead_depth

ダウンロードの先読み深度を制御する設定です。

設定値動作内容
-1
(デフォルト)
スレッド数に基づき自動決定。非同期 I/O がオン。
0
従来の DuckDB 1.5.x の動作へ戻す(同期処理)。

他のファイル形式・規模での比較

シナリオDuckDB 1.5.5DuckDB 2.0 アルファ備考
Parquet ファイル (1 個)18.8 秒7.7 秒列数:1 つ
Parquet ファイル群 (23 個)11.8 秒3.9 秒合計 13.6 GB
CSV ファイル (1 個)116 秒55 秒約 1.7 GB
チューファイファイル群 (30 個)3.7 秒3.3 秒小規模ファイルは改善効果が限定的

小規模ファイルの注意点: 1 MB 以下の多数の小規模ファイルを保存するのは本来推奨されるプラクティスではありません。ファイル単位の往復トラフィックによるオーバーヘッドを削減できないためです。

TL;DR

S3 への接続時、ワーカーより先に別プールでダウンロードを行うことで、2 倍〜3 倍高速化が実現しました。デフォルトでは有効 (

read_ahead_depth = -1
) です。


2. 再帰的 CTE:深い階層データのパフォーマンス向上

再帰的 CTE エンジンを見直し、グラフの到達可能性において 40 倍 の改善を達成しました。

仕組みの変化

再帰的 CTE は親子関係(例:組織図)を追跡するために使用されます。

  • DuckDB 1.5.5: 各階層(ループ)ごとにテーブル全体を読み込み直していました(8 階層あれば 8 回全スキャン)。
  • DuckDB 2.0: テーブルを1 回だけ読み込み、親列のルックアップインデックスも 1 回作成します。以降は必要な行数のみ照会するため、I/O コストが劇的に削減されます。

ベンチマーク:Git 履歴ウォーク

20,000 コミットを持つ Git リポジトリを階層構造として解析するケースです。

実行回数DuckDB 1.5.5DuckDB 2.0 アルファ
平均所要時間1.8 秒 〜 16 秒0.10 秒

黄金律: 深い親/子チェーン(Git 履歴、系譜樹など)を扱う場合、グラフデータベースへの依存なしで高速処理可能です。階層が浅い(組織図など)場合は効果は小さいですが、

USING KEY
を使用して深度やコストを持つデータを一貫した表として管理すると良いでしょう。


3. VARIANT:JSON より小さく高速

DuckDB のファーストクラスデータ型として「VARIANT」が確立されました。

シュレッディング(Shredding)の仕組み

DuckDB は JSON 列をディスクに書き込む際、同じ値を持つフィールドを発見し、内部実列として引き出します。

  • 共通フィールド:
    type
    ,
    user.id
    など → 専用実列として格納。
  • 多様フィールド: 型がバラバラな部分 → Blob (バイナリ) として格納。

これにより、JSON の構造を保ちつつ、テーブルのように高速にアクセスできるようになります。

ベンチマーク:JSON String vs. VARIANT

メトリックDuckDB 1.5.5 (JSON String)DuckDB 2.0 アルファ (VARIANT)
ストレージサイズ~224 MB85 MB (2.7 倍小容量)
フィルタクエリ366 ms63 ms (約 5.8 倍高速)
合計クエリ408 ms61 ms (約 6.7 倍高速)
  • ※1.5.5 の VARIANT(シュレッディング未適用)との比較では、フィールドアクセスが 78 倍高速です。
  • シュレッディングされた場合、フィルタや合計処理において型付き列の 20% 以内の性能を発揮します。

モデリングへの示唆

クエリで頻繁に使うフィールドは実列化(Explicit Column)すべきです。

-- VARIANT から実列へ昇格する手順
ALTER TABLE ev ADD COLUMN type VARCHAR;
UPDATE ev SET type = payload.type::VARCHAR;

TL;DR

共通かつ型が一貫したフィールドを持つ場合は、VARIANT を使用してください。ストレージは約 1/3 になり、クエリも実列のように高速に動作します。


リリースとコミット履歴からのお知らせ(Quick Hits)

その他の新機能や改善点です。

データベース機能

  • トリガー:
    CREATE TRIGGER
    で行変更時に自動で SQL を実行できます。外部ツールなしで履歴表の作成・更新が可能です。
  • ネステッドスキーマ: スキーマ内でのスキーマ作成(例:
    finance.reports
    )をサポート。
  • CTE 内での DML:
    WITH ... DELETE ... RETURNING
    を使用し、移行パターンのアトミック処理が可能に。

パフォーマンス・互換性

  • 外部ファイルキャッシュのスペール: メモリがいっぱいになった際(例:300 MB 制限)、キャッシュされたブロックをディスクへ転送(スペール)します。
    • 効果:854 MB Parquet の再読み込みが 23.9 秒 → 0.35 秒 へ改善。
  • Spark 互換モード: Spark SQL から移行する際に有用な設定が可能 (
    SET dialect_compatibility_mode = 'spark'
    )。

CLI 環境の改善

  • SQL フォーマッター:
    duckdb -format
    または
    .auto_format on
    でコード整形が可能。
  • クエリ履歴:
    .history
    や
    FROM shell_history()
    で過去の実行を検索可能。
  • ドキュメント:
    .about
    および
    .manual <function>
    コマンドで関数説明を参照可能。
  • JSON 処理:
    read_json
    が ISO-8601 タイムスタンプを自動検出し、正常に扱います。

インストール方法(アルファ版)

MotherDuck を通じても利用可能です。CLI のインストール例:

curl https://install.duckdb.org | DUCKDB_VERSION=alpha bash
~/\.duckdb/cli/latest/duckdb -c "SELECT version()"

同じ日のほかのニュース

一覧に戻る →

2026/10/11 7:50

独自の意思決定モデルを構築する

## Japanese Translation: 本研究の核心となる洞察は、言語モデルは単一パスの意思決定システムを模倣することは可能であるが、特定のカリブレーションが行われる限りでは、しばしば危険な過剰な自信を示すという点にある。標準的なモデルが複数のパスを通じて順次テキストを生成するのに対し、システムワンアプローチは制約付きデコーディング(例えば、選択肢 A〜E の語彙をマスキングする)を用いて、AI に固定されたオプションを 1 パスで選択させる。この手法は推論速度を向上させるが、信頼スコアの膨張というリスクをもたらす;具体的には、ネイティブ出力トークンの確率は次のトークンに対する自信を反映しており、正しい答えの真なる確率を反映していない。CommonsenseQA の保持サンプルでの評価では、ファインチューニングの後であっても未カリーブレーテッドなモデルは、明確な単一の答えが存在しない困難な Commonsense 問題に対して高い不確かさ(例:99.78%)を割り当てることができ、マクロ F1 精度は約 58%に留まり、高自信ビンに至っては単なる 70%に過ぎなかった。本研究では、LLM 模倣(Qwen/Qwen3-1.7B)における温度スケイリングを用いてこの問題を成功裏に解決し、モデルの報告された自信を実際の性能と数学的に整合させ、結果として適合温度が約 3.8 となった。したがって、制約付きデコーディングは標準化テストのような多選択タスクに対して効率的を提供するものの、その後のカリブレーションなしで展開することは、過剰な自信による誤りを招き、ユーザーを欺くことになる。今後、事前に定義された答えへの厳格な遵守が求められる適用においては、信頼性指標が真に信頼性を反映するように、事後処理ステップ(例えば温度スケイリング)の優先を確保する必要がある。

2026/10/07 21:30

2D 車両

## Japanese Translation: 「Motion Lab」は、1996 年に GFA BASIC で書かれた先駆的な物理エンジンが GTA の車体システムを動力源としていたのを記念し、同エンジンの 30 周年を祝うためのモダンな Web ベースの再現作品です。当時の一般的なシンプルな「ポインタ・フィジックス」と異なり、この JavaScript インプリメンテーションは、リアルなトルクおよび力の相互作用を含む高度な古典的な 2 次元剛体動力学を正確にシミュレートします。本プロジェクトは、教育的目的のためにレガシースタイルを維持しつつ、オリジナルのソフトウェアが後に摩擦に関する推測に基づいた近似的かつ技術的に不正確な車体シミュレーション層を追加したことを認める一方で、「リマスター」された、より美しいバージョンの元のワイヤフレーム美学を提供しています。ユーザーは「Car(カー)」「Spaceship(スペースシップ/通称:Ship)」「Brick(ブリック)」という 3 つの異なるモードを体験でき、これらのモードは歴史的に「Brick モデル」から始まり、「Ship 要素」を含むよう進化し、最終的に「Car 要素」を取り入れた経緯を持っています。体験には、重力やバリアーの有効/無効化に加え、キーボードまたはタッチ入力により制御される GTA スタイルのカメラズームが含まれています。重要なのは、この非公式なプロジェクトが Rockstar Games および Take-Two から独立しており、オフィシャル製品ではなくトリビュートであることです。2026 年の発表を予定している本再現作品は、ユーザーが外部プラグインに依存せず、数十年にわたる技術開発を直接体験することを呼びかけています。

2026/10/11 5:31

あなたは存在したくても、街自体がそれを好まない街建設ゲーム

## Japanese Translation: サンフランシスコ当局は、特定の住宅シミュレーターに関する自由裁量審査を正式に開始し、都市の規制環境におけるその影響を検討するための重要な手続き的段階を示しています。この措置は、政府機関が該ツールを積極的に調査していることを示しており、同時に具体的な欠陥や直ちに懸念すべき事項がまだ特定されていないことも指摘しています。当面の次の段階では、審査プロセスを継続してシミュレーターの法的地位および運用可能性を決定することとなり、これが将来的にサンフランシスコにおける同様の住宅シミュレーターの開発と規制方法に影響を与える可能性があります。