“the year of DuckDB as a server”,DuckDB 正在从“嵌入应用里的分析引擎”,扩展成“可以嵌入、可以独立运行、可以连接远端数据源、可以直接查询 Lakehouse 的轻量数据 runtime”。

一、DuckDB 2.0 最大变化:Server 化

核心是两个东西:

Quack

DuckDB 原生远程协议。

任何 DuckDB Process 都可以:

DuckDB
  ↓
quack_serve()
  ↓
Network

成为 Server。

CONNECT

另外一个 DuckDB 可以:

DuckDB Client

CONNECT
   │
   ▼
DuckDB Server

甚至可以直接:

DuckDB
   │
   ├── CONNECT PostgreSQL
   ├── CONNECT MySQL
   └── CONNECT DuckDB

而且 Query 可以 Pushdown 到远端数据库执行。这会产生一个很有意思的产品形态:

                Application
                     │
                     ▼
               ┌──────────┐
               │  DuckDB  │
               └──────────┘
                 /   |   \
                /    |    \
               ▼     ▼     ▼
          DuckDB   PG    MySQL
          Server

                +
                
             S3 / Lake
          Parquet / Iceberg

此时 DuckDB 已经开始具备:Local Engine + Remote Query + Federation + Lake Query 四种能力。这让 DuckDB 从 Embedded Database 变成了 Data Runtime

这是我认为这次升级最值得关注的产品变化。

                    Application / Agent
                           │
                           ▼
                    ┌────────────┐
                    │   DuckDB   │
                    │ Data Runtime│
                    └────────────┘
                       │   │   │
             ┌─────────┘   │   └─────────┐
             ▼             ▼             ▼
          Local DB      Remote DB      Lakehouse
                         PG/MySQL       S3/Parquet

应用不需要关心:

数据究竟在本地 DuckDB、远端 DuckDB、PostgreSQL、MySQL,还是 S3 Parquet。DuckDB 开始承担一个新的角色:

把 Application 和底层异构数据系统隔开。已经具有比较明显的 Runtime 产品特征。

二、VARIANT 推进到完整的数据处理链路

DuckDB 1.5 已经引入 VARIANT,2.0 将它推进到完整的数据处理链路。

官方把它描述成:

JSON on steroids.

原因在于 JSON 通常是文本。

例如:

{
  "user": {
    "id": 42
  }
}

传统 JSON 数据库处理路径:

JSON Text
   ↓
Parse
   ↓
Extract
   ↓
Query

DuckDB VARIANT 会识别不同记录之间的共同结构,然后进行 shredding

Semi-structured Data

       ↓

┌───────────────────┐
│ VARIANT            │
│                    │
│ user.id → column   │
│ user.tag → column  │
│ ...                │
└───────────────────┘

       ↓

Columnar Execution

用户依然可以:

Schema-less 写入。

数据库内部则获得:

Schema-aware Execution。

v2.0 进一步支持 shredded execution、scan extraction pushdown、Parquet VARIANT 读写等。

这对于 AI / Agent 场景尤其重要。

因为 Agent 产生的数据天然高度半结构化:

Agent Event
Tool Call
Trace
Message
Observation
State
Context
JSON Log

这些数据 Schema 经常变化。

VARIANT 很适合成为:

Agent Event / Context
        ↓
     VARIANT
        ↓
Columnar Analytics

因此 DuckDB 可能逐渐成为 Agent 本地数据处理层 的候选组件。


三、DuckDB 开始具备“业务数据库”能力

一个容易被忽略的更新是:Triggers。

DuckDB 2.0 支持:

BEFORE
AFTER

FOR EACH ROW
FOR EACH STATEMENT

OLD TABLE
NEW TABLE

例如:

UPDATE order
      │
      ▼
   Trigger
      │
      ▼
Audit Table

这意味着 DuckDB 可以承担:

审计、CDC-like logic、状态变化处理、事件驱动逻辑。

官方也明确指出 Triggers 与 long-running DuckDB services 很自然地结合。

再加上 DuckDB 原本已经具备:

MVCC
Transaction Isolation
Multi-connection

Server Mode 出现以后,这些能力开始获得真正的产品价值。

DuckDB 官方甚至表示,在部分事务 workload 上已经可以与 PostgreSQL 竞争。

于是产品边界开始出现变化:

以前

DuckDB
≈ Analytical Engine


现在

DuckDB
≈ Analytical Engine
+ Transaction
+ Trigger
+ Server
+ Federation

它正在靠近一个更完整的数据库 Runtime。


四、Lakehouse 性能进一步加强

DuckDB 原本最大的杀手级产品能力之一就是:

直接查询 S3 上的 Parquet。

不需要:

S3
 ↓
ETL
 ↓
Database
 ↓
Query

直接:

S3 / Parquet
      │
      ▼
    DuckDB
      │
      ▼
    Query

v2.0 增加了 Asynchronous I/O

以前:

Query Thread
    │
    ▼
Network I/O
    │
   wait

现在 I/O 和 Query Processing 可以独立扩展:

        Query Engine
       /    |     \
      /     |      \
Async IO Async IO Async IO
   │       │       │
   ▼       ▼       ▼
 S3       S3      S3

尤其针对:

S3、Parquet、DuckLake、Iceberg。

网络存储读取会明显受益。

这进一步强化了 DuckDB 的一个长期产品方向:

Compute 可以极轻,Data 可以留在 Object Storage。

五、SQL 正在变成数据计算 DSL

这部分对于 Agent 很值得关注。DuckDB 2.0 加入:

NEAREST JOIN

直接:

APPROX NEAREST 2
BY SIMILARITY ...

也就是把:

Vector Similarity Search

变成标准 SQL Join。


还有:

Recursive CTE USING KEY

可以执行 iterative algorithm。

官方给出的 benchmark 非常夸张:

版本100 万 edge 图递归查询
DuckDB 1.5.44.90s
DuckDB 2.0 Preview0.12s

40×。当然这是官方选择的 microbenchmark,不能直接外推到所有 workload。

再加上:

JSON
VARIANT
Vector
Recursive CTE
DML in CTE
Nested Schema

DuckDB 的 SQL 已经逐渐可以表达:

Relational
+
Semi-structured
+
Vector
+
Graph-like recursion
+
ETL pipeline

对于 AI 应用,这一点可能比单纯 benchmark 更重要。


六、从产品地图看 DuckDB 2.0

如果把数据基础设施简化成几个产品:

                         Data Infrastructure

        OLTP                 OLAP                Lake
         │                    │                   │
         ▼                    ▼                   ▼

    PostgreSQL           ClickHouse          Iceberg
         │                    │                   │
         └──────────┐         │        ┌──────────┘
                    │         │        │
                    ▼         ▼        ▼

                       DuckDB 2.0
                           
                 ┌──────────────────┐
                 │ Local Execution  │
                 │ Remote Execution │
                 │ Federation       │
                 │ Lake Query       │
                 │ Vector           │
                 │ Semi-structured  │
                 └──────────────────┘

                           │
                           ▼

                  Application / Agent

DuckDB 很有意思的一点是:

它没有强迫用户把 Data 搬进 DuckDB。和传统数据库形成明显区别。

七、对 AI / Agent Infra 来说,这次变化尤其值得关注

Agent 数据天然包括:

Business Data
Agent State
Tool Result
JSON Event
Vector
Context
Logs
History

DuckDB 2.0 已经开始同时处理:

                Agent
                  │
                  ▼
          ┌───────────────┐
          │    DuckDB     │
          │               │
          │ SQL           │
          │ VARIANT       │
          │ Vector        │
          │ Transaction   │
          │ Trigger       │
          │ Federation    │
          └───────────────┘
              │   │   │
              ▼   ▼   ▼
             PG  S3  Lake

所以从创业和投资视角看,我认为 DuckDB 2.0 最值得关注的信号并非某一个数据库功能。

它在验证一个越来越重要的产品范式:

数据库正在从“Data Destination”变成“Application Runtime Component”

以前:

Application
     │
     ▼
 Database Server
     │
     ▼
    Data

现在:

        Application / Agent
                │
        ┌───────┴───────┐
        │  Data Runtime │
        │    DuckDB     │
        └───────┬───────┘
                │
      ┌─────────┼─────────┐
      ▼         ▼         ▼
   Local      SaaS DB   Object Store
               PG        S3/Lake

计算越来越靠近 Application,数据可以留在原来的位置。DuckDB 当前主要解决的是 Query / Analytics Runtime。Agent 真正需要的 State Runtime 还涉及长期状态、多 Agent 并发、Context 生命周期、Fork / Merge / Rollback、语义对象以及 Agent execution consistency 等问题。

标签:无

你的评论