DuckDB 2.0 bổ sung chế độ server, I/O bất đồng bộ và hỗ trợ kiểu dữ liệu variant
DuckDB 2.0.0 LTS giới thiệu khả năng client-server thông qua giao thức Quack, I/O bất đồng bộ để đọc từ xa nhanh hơn và kiểu dữ liệu VARIANT hạng nhất cho dữ liệu bán cấu trúc.
Bài được dịch tự động từ bản gốc tiếng Anh.
Nhóm phát triển DuckDB đã ra mắt phiên bản 2.0.0 LTS, với tên mã “Cinnamon Teal”, đánh dấu sự chuyển dịch quan trọng từ việc tập trung vào ổn định sang mở rộng tính năng đáng kể. Bản cập nhật này, được công bố vào ngày 21 tháng 10 năm 2026, giới thiệu các khả năng máy chủ gốc, thao tác nhập/xuất (I/O) bất đồng bộ và xử lý nâng cao đối với dữ liệu bán cấu trúc. Đây là bản phát hành có nhiều tính năng mới nhất trong lịch sử dự án, dựa trên gần 20.000 commit kể từ phiên bản 1.5.
Điều gì đã xảy ra
DuckDB trước đây hoạt động như một cơ sở dữ liệu trong tiến trình (in-process), nghĩa là nó chạy trong cùng không gian bộ nhớ với ứng dụng sử dụng nó. Phiên bản 2.0 thay đổi kiến trúc này bằng cách hoàn thiện giao thức Quack, cho phép DuckDB hoạt động theo mô hình client-server truyền thống. Câu lệnh CONNECT mới cho phép người dùng kết nối và chuyển sang các cơ sở dữ liệu từ xa chỉ bằng một lệnh duy nhất, cải thiện trải nghiệm sử dụng cho các quy trình làm việc phân tán. Mặc dù máy chủ mặc định chỉ lắng nghe trên localhost để đảm bảo an toàn, nó có thể được đặt sau một reverse proxy kết thúc TLS để chấp nhận các kết nối bên ngoài một cách an toàn.
Cải thiện hiệu suất là trọng tâm của bản phát hành này, đặc biệt là nhờ việc giới thiệu I/O bất đồng bộ. Tính năng này cho phép lớp I/O mở rộng độc lập với quá trình xử lý truy vấn, thực hiện các thao tác đọc ở nền và giữ nhiều yêu cầu đang chờ xử lý. Thay đổi này tăng cường đáng kể mức độ song song cho các thao tác đọc từ xa, dẫn đến tốc độ truy vấn nhanh hơn rõ rệt khi truy cập các dịch vụ lưu trữ đối tượng như Amazon S3. Ngoài ra, kiểu dữ liệu VARIANT, được giới thiệu trong phiên bản 1.5, giờ đây đã được tích hợp đầy đủ như một công dân hạng nhất. Nó lưu trữ dữ liệu không schema (schema-less) như JSON trong khi vẫn duy trì hiệu suất thực thi dạng cột, tự động phát hiện các cấu trúc phổ biến để tối ưu hóa nén và tốc độ.
Bản phát hành cũng bao gồm các cập nhật đáng kể về khả năng mở rộng và tính năng SQL. Một parser mới dựa trên PEG thay thế parser cũ bắt nguồn từ PostgreSQL, cho phép các extension can thiệp vào chính ngữ pháp và cung cấp thông báo lỗi chính xác hơn. Triggers giờ đây đã được hỗ trợ, cho phép thực hiện các hành động tự động như ghi log kiểm toán hoặc duy trì các view vật hóa (materialized views) một cách gia tăng. Hơn nữa, người dùng hiện có thể tự host các kho lưu trữ extension tin cậy của riêng mình, cho phép các tổ chức ký và phân phối các extension tùy chỉnh một cách an toàn trong hạ tầng nội bộ.
Chi tiết chính
- Hỗ trợ dài hạn (LTS): DuckDB 2.0 là bản phát hành LTS được hỗ trợ ít nhất đến tháng 10 năm 2027, trong khi hỗ trợ cho phiên bản 1.5 đã được kéo dài đến tháng 3 năm 2027 để tạo điều kiện thuận lợi cho việc di chuyển.
- Chế độ Agent: CLI phát hiện các agent lập trình như Claude Code hoặc Cursor và chuyển sang chế độ đầu ra gọn nhẹ, giảm mức sử dụng token xuống 59% trong các bài kiểm tra.
- Async I/O: Việc đọc bất đồng bộ cho Parquet, CSV và các định dạng gốc cải thiện thông lượng cho các nguồn dữ liệu từ xa bằng cách tách biệt I/O khỏi quá trình thực thi truy vấn.
- Kiểu dữ liệu VARIANT: Hỗ trợ tích hợp đầy đủ cho dữ liệu bán cấu trúc cho phép lưu trữ và truy vấn hiệu quả các cấu trúc giống JSON mà không gặp phải chi phí phụ trội của định dạng văn bản.
- Kho lưu trữ tùy chỉnh: Các tổ chức có thể đăng ký và host các kho lưu trữ extension riêng với các gói được ký RSA để phân phối nội bộ an toàn.
- Thay đổi phá vỡ (Breaking Changes): Các tệp cơ sở dữ liệu được tạo bởi phiên bản 2.0 không thể được đọc bởi các phiên bản cũ hơn, mặc dù 2.0 vẫn có thể đọc các tệp từ các phiên bản trước đó.
Bối cảnh
Đối với các đội ngũ chưa quen với sự thay đổi này, việc chuyển từ cơ sở dữ liệu trong tiến trình sang mô hình client-server liên quan đến việc tách biệt engine cơ sở dữ liệu khỏi logic ứng dụng. Trong thiết lập in-process, thư viện cơ sở dữ liệu chạy trực tiếp bên trong bộ nhớ của ứng dụng, giúp đơn giản hóa việc triển khai nhưng hạn chế khả năng truy cập đồng thời. Giao thức Quack mới cho phép DuckDB lắng nghe các kết nối qua mạng, cho phép nhiều client truy vấn cùng một dữ liệu đồng thời. Điều này phản ánh kiến trúc của các hệ thống truyền thống như PostgreSQL nhưng vẫn giữ lại các đặc điểm hiệu suất phân tích của DuckDB.
I/O bất đồng bộ là kỹ thuật mà các thao tác đọc dữ liệu không chặn luồng xử lý chính. Thay vào đó, hệ thống gửi các yêu cầu đọc và tiếp tục các công việc khác trong khi chờ dữ liệu đến từ đĩa hoặc lưu trữ mạng. Điều này đặc biệt quan trọng đối với các môi trường cloud-native, nơi dữ liệu thường nằm trong lưu trữ đối tượng thay vì đĩa cục bộ. Bằng cách giữ nhiều yêu cầu đọc đang chờ xử lý, cơ sở dữ liệu có thể tận dụng băng thông khả dụng hiệu quả hơn, giảm thời gian chờ đợi truy xuất dữ liệu trong các truy vấn phân tích phức tạp.
Tại sao điều này quan trọng
Đối với các đội ngũ kỹ thuật vận hành các nền tảng phân tích tự host, khả năng triển khai DuckDB dưới dạng máy chủ mở ra những khả năng kiến trúc mới. Nó cho phép phục vụ dữ liệu tập trung mà không cần di chuyển sang các hệ thống cơ sở dữ liệu nặng nề và phức tạp hơn. Trải nghiệm sử dụng được cải thiện của câu lệnh CONNECT đơn giản hóa việc quản lý các nguồn dữ liệu từ xa, giúp dễ dàng xây dựng các hệ thống truy vấn liên bang (federated query systems) lấy dữ liệu từ PostgreSQL, MySQL hoặc các instance DuckDB khác. Điều này giảm bớt nhu cầu về các pipeline ETL phức tạp khi cần truy cập thời gian thực vào dữ liệu phân tán.
Những cải thiện về hiệu suất từ I/O bất đồng bộ ảnh hưởng trực tiếp đến chi phí và hiệu quả cho các công ty lưu trữ các tập dữ liệu lớn trong lưu trữ đối tượng đám mây. Thời gian truy vấn nhanh hơn có nghĩa là ít thời gian tính toán bị tiêu tốn cho mỗi lần phân tích, điều này có thể dẫn đến tiết kiệm đáng kể trong hóa đơn hạ tầng đám mây. Ngoài ra, hỗ trợ hạng nhất cho kiểu dữ liệu VARIANT giải quyết một điểm đau phổ biến trong kỹ thuật dữ liệu hiện đại: xử lý dữ liệu log bán cấu trúc hoặc phản hồi API. Bằng cách xử lý dữ liệu này hiệu quả trong cửa hàng dạng cột, các đội ngũ có thể tránh được hình phạt về hiệu suất do phân tích chuỗi JSON tại thời điểm truy vấn.
Bảo mật và kiểm soát vận hành được nâng cao nhờ khả năng host các kho lưu trữ extension riêng tư. Các tổ chức phát triển các công cụ nội bộ tùy chỉnh hoặc connector dữ liệu nhạy cảm giờ đây có thể phân phối chúng với sự dễ dàng và bảo mật tương đương như các extension chính thức. Điều này đảm bảo rằng chỉ code đã được xác minh mới chạy trong môi trường production, giảm thiểu rủi ro chuỗi cung ứng liên quan đến các plugin của bên thứ ba. Dòng thời gian hỗ trợ kéo dài cho phiên bản 1.5 cũng cung cấp một khoảng thời gian an toàn để các đội ngũ thử nghiệm và xác thực việc di chuyển của họ mà không chịu áp lực tức thì.
Bạn có thể làm gì
- Thử nghiệm phiên bản mới trong một hệ thống shadow trước khi nâng cấp các môi trường production để xác định bất kỳ vấn đề tương thích nào với các tệp cơ sở dữ liệu hiện có.
- Đánh giá giao thức Quack cho các trường hợp sử dụng yêu cầu truy cập đồng thời vào dữ liệu DuckDB từ nhiều ứng dụng hoặc dịch vụ.
- Benchmark hiệu suất truy vấn trên lưu trữ đối tượng từ xa để đo lường tác động của I/O bất đồng bộ lên các workload cụ thể của bạn.
- Tái cấu trúc logic xử lý JSON để tận dụng kiểu dữ liệu
VARIANTnhằm cải thiện nén và tốc độ truy vấn cho dữ liệu bán cấu trúc. - Thiết lập một kho lưu trữ extension riêng nếu đội ngũ của bạn duy trì các extension DuckDB tùy chỉnh, đảm bảo chúng được ký và xác minh.
- Xem xét hướng dẫn di chuyển cho các thay đổi phá vỡ, đặc biệt liên quan đến tương thích định dạng lưu trữ và sự khác biệt trong hành vi của parser.



