DuckDB 2.0.0 LTS "Cinnamon Teal" ra mắt: hàng loạt tính năng lớn cho cơ sở dữ liệu phân tích

Công nghệ21 tháng 10, 2026·7 phút đọc

DuckDB vừa phát hành phiên bản 2.0.0 LTS mang tên "Cinnamon Teal" với gần 20.000 commit kể từ bản 1.5. Bản cập nhật bổ sung giao thức Quack hoàn thiện, I/O bất đồng bộ, kiểu dữ liệu VARIANT chính thức, chế độ agent cho CLI, trigger và bộ phân tích cú pháp SQL mới có thể mở rộng.

DuckDB 2.0.0 LTS "Cinnamon Teal" ra mắt: hàng loạt tính năng lớn cho cơ sở dữ liệu phân tích

DuckDB vừa chính thức phát hành phiên bản 2.0.0 LTS với mật danh "Cinnamon Teal" (đặt theo loài vịt Spatula cyanoptera có bộ lông nâu đỏ đặc trưng ở châu Mỹ). Đây là bản phát hành nhiều tính năng nhất từ trước đến nay của đội ngũ phát triển, được xây dựng từ gần 20.000 commit kể từ DuckDB 1.5.

Nếu như DuckDB 1.0 tập trung vào sự ổn định và tương thích ngược, thì DuckDB 2.0 lại là một bản phát hành thuần về tính năng. Bài viết này tổng hợp những điểm nổi bật nhất cùng hướng dẫn nâng cấp cho người dùng tại Việt Nam.

DuckDB 2.0.0 LTS Cinnamon TealDuckDB 2.0.0 LTS Cinnamon Teal

DuckDB giờ đây có thể chạy như một server

Từ trước đến nay, DuckDB vốn là cơ sở dữ liệu chạy trong tiến trình (in-process). Từ phiên bản 1.5.3 phát hành hồi tháng 5, đội ngũ đã giới thiệu giao thức Quack, cho phép chạy DuckDB theo mô hình client-server truyền thống. DuckDB 2.0.0 mang đến phiên bản Quack hoàn thiện hơn với cải thiện đáng kể về hiệu năng và độ ổn định.

Điểm mới đáng chú ý là câu lệnh CONNECT, cho phép gắn và chuyển sang một cơ sở dữ liệu từ xa chỉ trong một lệnh duy nhất. Câu lệnh này không giới hạn ở Quack mà còn hỗ trợ cả PostgreSQL và MySQL. Với các hệ quản trị này, optimizer remote pushdown mới sẽ đẩy truy vấn trực tiếp sang server từ xa thay vì kéo toàn bộ bảng về máy.

Giao diện dòng lệnh (CLI) cũng có thêm các tham số tiện lợi -serve và -connect để khởi tạo nhanh một cặp server-client Quack ngay từ terminal.

Lưu ý về bảo mật: mặc định server Quack chỉ lắng nghe trên localhost. Nếu cần nhận kết nối từ máy khác, nên đặt server sau một reverse proxy có TLS thay vì dùng tùy chọn allow_other_hostname (vốn chỉ dành cho mục đích kiểm thử).

I/O bất đồng bộ: truy vấn trên object storage nhanh hơn hẳn

DuckDB 2.0 giới thiệu cơ chế I/O bất đồng bộ khi đọc file Parquet và CSV. Tầng I/O giờ đây mở rộng độc lập với tầng xử lý truy vấn, phát yêu cầu đọc trong nền và duy trì nhiều request đồng thời. Điều này mang lại mức song song cao hơn nhiều cho các lần đọc từ xa, giúp tốc độ truy vấn trên các dịch vụ lưu trữ đối tượng như s3:// tăng vọt.

So sánh thông lượng mạng khi dùng I/O đồng bộ và bất đồng bộSo sánh thông lượng mạng khi dùng I/O đồng bộ và bất đồng bộ

Kiểu VARIANT trở thành công dân hạng nhất

Kiểu VARIANT lưu trữ dữ liệu bán cấu trúc, không schema như JSON, nhưng vẫn giữ được hiệu năng của mô hình thực thi dạng cột. Có thể hình dung VARIANT như "JSON phiên bản nâng cấp": mỗi dòng có thể chứa dữ liệu với cấu trúc khác nhau, nhưng không phải định dạng văn bản.

DuckDB 2.0 tự động phát hiện cấu trúc chung trong dữ liệu và "shred" (tách nhỏ) để nén tốt hơn và thực thi nhanh hơn. Toàn bộ pipeline hoạt động xuyên suốt, từ thực thi dạng shredded trực tiếp từ bộ nhớ lưu trữ cho đến đọc/ghi VARIANT dạng shredded cho Parquet, đi kèm một họ hàm variant_*.

Agent mode: tối ưu cho lập trình viên dùng AI

Các agent lập trình như Claude Code, Codex hay Cursor ngày càng được người dùng giao phó điều khiển DuckDB CLI. CLI của bản 2.0 phát hiện khi bị agent thực thi và tự động chuyển sang agent mode: in bảng Markdown gọn gàng thay vì khung có padding, báo rõ khi kết quả bị cắt cụt, dừng sớm các truy vấn chạy quá lâu và trả lỗi dưới dạng JSON.

Các truy vấn SQL kéo dài sẽ báo chi phí ước tính trước khi chạy để agent quyết định có nên chờ hay không. Theo thử nghiệm trên TPC-H, agent mode giúp giảm 59% lượng output mà mô hình phải đọc.

Bộ phân tích cú pháp SQL mới dựa trên PEG

Từ trước đến nay, DuckDB dùng bộ phân tích cú pháp phái sinh từ PostgreSQL. Ở bản 2.0, parser PEG hiện đại, có thể mở rộng của riêng đội ngũ (từng ra mắt dưới dạng tùy chọn ở bản 1.5) trở thành mặc định. Các extension giờ đây có thể can thiệp trực tiếp vào ngữ pháp, hứa hẹn mở ra những extension định nghĩa cú pháp SQL hoàn toàn mới.

Parser cũ được sinh bằng YACC/Bison theo kiểu LALR(1), nên khi DuckSQL phát triển, chỉ một thay đổi nhỏ cũng có thể gây xung đột shift/reduce hoặc reduce/reduce. Ngữ pháp PEG khắc phục điều này bằng cách thử các phương án theo thứ tự khai báo — giống như cách Python chuyển sang parser PEG từ phiên bản 3.9.

Extension tự lưu trữ và SQL nâng cao

Bản 2.0 mang đến C API v2 mạnh mẽ hơn hẳn, cho phép extension truy cập các thành phần như file system và table function. Người dùng cũng có thể đăng ký và tự lưu trữ kho extension tin cậy của riêng mình, phù hợp cho các doanh nghiệp muốn tự ký và phân phối extension nội bộ.

Về tính năng SQL, DuckDB 2.0 bổ sung:

  • Trigger với hỗ trợ BEFORE/AFTER, FOR EACH ROW và FOR EACH STATEMENT, cùng bảng chuyển tiếp qua REFERENCING OLD/NEW TABLE. Trigger có thể dùng để duy trì materialized view tăng dần.
  • Cú pháp viết tắt $variable thay cho getvariable('x').
  • CTE có thể sửa dữ liệu, cho phép dùng INSERT, UPDATE, DELETE, COPY như một bước trong pipeline.
  • NEAREST join, biến tìm kiếm tương đồng top-k thành một mệnh đề join — rất hữu ích cho workload vector và embedding.
  • Schema lồng nhau, ví dụ CREATE SCHEMA finance.reports.
  • Các hàm biến đổi JSON json_set, json_insert, json_replace, json_remove.

Gábor Szárnyas, thành viên đội ngũ DuckDBGábor Szárnyas, thành viên đội ngũ DuckDB

Lưu ý khi nâng cấp lên 2.0

DuckDB 2.0 có một số thay đổi phá vỡ tương thích, đáng chú ý nhất là định dạng lưu trữ: các phiên bản DuckDB trước 2.0 không thể đọc file database do DuckDB 2.0 tạo ra. Chiều ngược lại thì vẫn ổn — DuckDB 2.0 đọc và ghi được file của phiên bản cũ.

Những điểm cần lưu ý khác:

  • Yêu cầu trình biên dịch C++17 thay vì C++11, và chuyển sang Clang làm trình biên dịch mặc định cho bản release.
  • Thư viện ICU đã bị loại bỏ hoàn toàn — extension icu giờ tự triển khai timezone, lịch và collation, với dữ liệu timezone nén chỉ khoảng 45 kB.
  • Cú pháp lambda một mũi tên cũ (x -> x + 1) bị vô hiệu hóa mặc định; cần dùng cú pháp kiểu Python lambda x: x + 1.
  • Bản build amalgamation (gộp toàn bộ source vào một file header và một file source) chính thức bị khai tử.
  • Nền tảng macOS x86_64 đang dần bị loại bỏ; DuckDB 2.1 sẽ ngừng hỗ trợ hoàn toàn.

Đội ngũ khuyến nghị người dùng thử nghiệm 2.0.0 trên hệ thống shadow trước khi chuyển production. Với các workload quan trọng, nên chờ bản vá đầu tiên dự kiến ra mắt vào tháng 11.

Hỗ trợ dài hạn

DuckDB 2.0 là bản phát hành hỗ trợ dài hạn (LTS) với thời gian hỗ trợ đến ít nhất tháng 10/2027. Bản LTS trước đó là 1.4 vẫn được hỗ trợ đến cuối tháng 11/2026, còn bản 1.5 được gia hạn hỗ trợ đến tháng 3/2027 — trên thực tế cũng trở thành một bản LTS.

Với gần 20.000 commit cùng hàng loạt tính năng từ hiệu năng, khả năng mở rộng đến trải nghiệm dành cho AI agent, DuckDB 2.0.0 đánh dấu một bước tiến lớn của cơ sở dữ liệu phân tích mã nguồn mở này trong hệ sinh thái dữ liệu hiện đại.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗