30 điểm bởi xguru 2024-06-13 | 5 bình luận | Chia sẻ qua WhatsApp
  • 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:
    1. Trải nghiệm lập trình viên
    2. Có thể xử lý tập dữ liệu lớn hơn bộ nhớ
    3. 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

 
cometkim 2024-06-13

ParadeDB gần đây đã bổ sung một lựa chọn thay thế tốt. https://blog.paradedb.com/pages/introducing_lakehouse

 
silveris23 2024-06-13

Đặ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.

 
brainer 2024-06-13

Có đáng để chuyển từ Huggingface Datasets sang không nhỉ?

 
hackerwins 2024-06-13

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.