
DuckDB là gì?
DuckDB là một SQL database mã nguồn mở được thiết kế để chạy trong process (in-process), tương tự như SQLite nhưng tập trung vào phân tích dữ liệu (OLAP) thay vì giao dịch (OLTP). Nếu SQLite là “SQLite for analytics”, DuckDB chính là phiên bản nâng cấp dành riêng cho các tác vụ phân tích, xử lý khối lượng dữ liệu lớn ngay trên máy local mà không cần server riêng biệt.
DuckDB sử dụng cột lưu trữ (columnar storage), nghĩa là dữ liệu được tổ chức theo cột thay vì hàng. Điều này giúp truy vấn phân tích — như GROUP BY, JOIN, ORDER BY trên hàng triệu bản ghi — chạy nhanh hơn đáng kể so với SQLite có kiến trúc hàng (row-based).

Tại sao DuckDB nhanh hơn SQLite?
SQLite là “king” của các database nhúng, nhưng nó được tối ưu cho transactional workloads: INSERT/UPDATE/DELETE nhiều, đọc ghi ngẫu nhiên. DuckDB ngược lại, tối ưu cho analytical workloads: quét toàn bộ bảng, tổng hợp, join nhiều bảng lớn.
Ba yếu tố chính giúp DuckDB vượt trội:
- Columnar Vectorized Execution: DuckDB đọc và xử lý dữ liệu theo vector cột, tận dụng SIMD và cache CPU hiệu quả hơn.
- Spill-to-Disk: Khi bộ nhớ RAM không đủ, DuckDB tự động ghi phần dư xuống đĩa mà không giới hạn kích thước dataset. Bạn có thể chạy TPC-H SF100 (100GB) ngay trên laptop bình thường.
- Advanced Optimizer: Bộ tối ưu truy vấn thông minh hơn với predicate pushdown, late materialization, và parallel execution.
Theo các benchmark công bố, DuckDB có thể chạy TPC-H SF100 ngay cả trên điện thoại di động, điều mà SQLite khó lòng làm được.

DuckDB cho Big Data và Data Science
Trong thời đại Big Data, nhiều data scientist vẫn phụ thuộc vào việc xuất dữ liệu ra CSV hoặc chuyển sang cloud warehouse tốn kém. DuckDB thay đổi hoàn toàn workflow này. Bạn có thể:
- Truy vấn trực tiếp file Parquet, CSV, JSON hàng GB ngay trên laptop.
- Kết nối với Pandas, Polars, Arrow mà không copy dữ liệu tốn RAM.
- Đọc dữ liệu từ S3, GCS, Azure Blob thông qua extension
httpfs. - Dùng DuckDB như “SQL engine” cho dbt để chuyển đổi dữ liệu local.
Ví dụ, thay vì load 10GB CSV vào Pandas và chạy out-of-memory, bạn chỉ cần SELECT * FROM 'data.csv' WHERE ... trong DuckDB. Database tự động xử lý spill-to-disk và parallel query.
So sánh nhanh DuckDB vs SQLite
| Tiêu chí | SQLite | DuckDB |
|---|---|---|
| Workload | OLTP (transaction) | OLAP (analytics) |
| Storage | Row-based | Columnar |
| Concurrent writes | Rất tốt (MVCC) | Hạn chế (optimistic concurrency) |
| Big Data | Khó vượt RAM | Spill-to-disk không giới hạn |
| File formats | DB riêng | Parquet, CSV, JSON, Arrow |
| Cloud | Local only | S3, GCS, Azure, Iceberg |
| Client APIs | Nhất quán, đơn giản | Python, R, JS, Go, Java, Rust, CLI |
Lưu ý: SQLite vẫn thắng về transactional latency và concurrent writes. Nếu bạn cần đọc ghi đơn lẻ nhanh, SQLite là lựa chọn. Nếu cần phân tích tập trung, DuckDB nhỉnh hơn.

Cài đặt và bắt đầu nhanh
Cài DuckDB chỉ mất vài giây. Trên Python, bạn chỉ cần pip install duckdb:
import duckdb
con = duckdb.connect('analysis.duckdb')
con.execute("SELECT count(*) FROM 'big_file.parquet'")
print(con.fetchone())
DuckDB cũng cung cấp CLI độc lập (duckdb command), R package, Node.js binding, và JDBC/ODBC driver. Gần như mọi ngôn ngữ phổ biến đều có client.
Use case thực tế
- Data Science local: Thay thế việc đổ dữ liệu vào RDBMS nhỏ. Phân tích 50GB log ngay trên MacBook Air.
- Data Lakehouse: Query Parquet trên S3 như database, kết hợp với Iceberg/DuckLake.
- ETL/ELT nhỏ: Dùng DuckDB như “data transformation engine” cho dbt local.
- Embedded analytics: Nhúng vào ứng dụng desktop/web app mà không cần cấu hình server.
- Big Data prototyping: Chạy thử TPC-H, thử nghiệm thuật toán phân tích trước khi đưa lên Spark/Databricks.
Hạn chế và khi nào không nên dùng
DuckDB không phải “cốc vàng”. Bạn không nên dùng nó khi:
- Cần high-concurrency multi-user writes (như production web app có hàng ngàn user cùng ghi).
- Dữ liệu chủ yếu là OLTP với nhiều giao dịch nhỏ, latency-sensitive.
- Cần distributed cluster xử lý terabyte-scale trên nhiều node (Spark/Trino phù hợp hơn).
Kết luận
DuckDB đang định hình lại cách data team tương tác với dữ liệu. Thay vì phải chọn giữa “SQLite đơn giản nhưng chậm” và “Big Data warehouse phức tạp”, bạn có một công cụ trung gian đ đủ mạnh mà vẫn đơn giản. Với giấy phép MIT, cộng đồng 40.000+ sao GitHub và tích hợp gần như mọi ecosystem, DuckDB xứng đáng là công cụ mặc định cho phân tích dữ liệu năm 2025 trở đi.
Nếu bạn đang tốn thời gian chuyển đổi CSV sang SQL hay đau đầu với Spark cluster chỉ để chạy vài truy vấn, hãy thử DuckDB. Hiệu năng columnar + spill-to-disk + zero-config sẽ khiến bạn ngạc nhiên.
