- DuckDB là cơ sở dữ liệu SQL dạng tệp đơn, được tối ưu cho phân tích dữ liệu
- Phần lớn các đánh giá về DuckDB có xu hướng tập trung vào phân tích định lượng
- Đặc biệt ở khía cạnh tốc độ, DuckDB nhìn chung cho hiệu năng tốt
- Tuy nhiên từ góc nhìn người dùng, một khi hiệu năng đã đạt mức thỏa đáng thì việc tăng tốc thêm nữa không còn quá nhiều ý nghĩa
- Thay vào đó, tính dễ sử dụng quan trọng hơn, và DuckDB có ưu thế ở điểm này
- Các ưu điểm về tính dễ sử dụng của DuckDB:
- Trải nghiệm lập trình viên
- Có thể xử lý tập dữ liệu lớn hơn bộ nhớ
- Dễ cài đặt và chạy
Tính công thái học (Ergonomics)
- DuckDB được thiết kế để xử lý các tác vụ phổ biến một cách đơn giản
- Ví dụ, có thể tạo bảng trực tiếp từ tệp đầu vào và suy luận schema
- Với tệp Parquet, cũng có thể đọc cả các tệp trên web
- Có thể truy vấn dữ liệu mà không cần tạo bảng trước
- Hàm
read_parquet trả về relation nên có thể dùng như một truy vấn con
- DuckDB hỗ trợ hầu hết các tính năng SQL mà Postgres sử dụng
- Ví dụ, window function được hỗ trợ đầy đủ
Xử lý tập dữ liệu lớn hơn bộ nhớ
- Nhiều công cụ dữ liệu không hoạt động tốt khi tập dữ liệu lớn hơn bộ nhớ của máy tính
- Đây có thể là một nguồn gây khó chịu thường bị đánh giá thấp
- Ngược lại, DuckDB hỗ trợ đầy đủ các tập dữ liệu lớn hơn bộ nhớ
- Với Pandas, có thể phát sinh vấn đề khi dataframe vượt quá 50% bộ nhớ hệ thống
Cài đặt và chạy đơn giản
- DuckDB được biên dịch thành một tệp thực thi duy nhất là
duckdb
- Có thể trải nghiệm DuckDB trực tiếp trên trình duyệt thông qua WASM (shell.duckdb.org)
- Vì dựa trên WASM, mọi thứ chạy trong trình duyệt chứ không phải trên máy chủ
- Sử dụng DuckDB như một thư viện dataframe
- DuckDB tích hợp rất tốt với Python
- Có thể chạy truy vấn trong Python và sử dụng giá trị trả về
- Nhờ đó có thể xây dựng các phép xử lý dữ liệu lớn hơn theo từng bước
- Có thể tận dụng đồng thời lợi thế của SQL và của dataframe
Lưu trữ dữ liệu qua csvbase
- Thư viện client của csvbase có thể tích hợp với nhiều hệ thống qua API fsspec
- Tương tự, DuckDB cũng có thể dùng cùng csvbase
Khả năng mở rộng (Scalability)
- DuckDB không mở rộng theo kiểu chạy trên hàng nghìn máy
- Trong khi Apache Spark có thể làm được, nhưng đi kèm độ phức tạp đáng kể
- Khả năng scale down cũng quan trọng
- DuckDB hoạt động ở cấp độ người dùng cá nhân và không đòi hỏi nhiều yêu cầu
Tóm tắt
- DuckDB có thể là một lựa chọn hấp dẫn cho các nhà phân tích dữ liệu đã biết SQL
- Nó có thể xử lý dữ liệu lớn hơn bộ nhớ, dễ cài đặt, và trong nhiều trường hợp có thể là một lựa chọn thay thế tốt cho Spark
5 bình luận
ParadeDB gần đây đã bổ sung một lựa chọn thay thế tốt. https://blog.paradedb.com/pages/introducing_lakehouse
Đặc biệt, nó rất phù hợp khi tạo các dashboard tương tác đơn giản bằng streamlit chẳng hạn.
Có đáng để chuyển từ Huggingface Datasets sang không nhỉ?
Tôi đang thử nghiệm việc tạo một bảng tính dựa trên DuckDB. Tôi rất kỳ vọng vào DuckDB.
DuckDB - mã nguồn mở DB OLAP nhúng
DuckDB, một cơ sở dữ liệu ngay cả khi không có dữ liệu
DuckDB như một jq mới
Phát hành DuckDB 1.0.0