DuckDB - Cơ sở dữ liệu OLAP nhúng mã nguồn mở
(duckdb.org)"SQLite for Analytics"
-
RDBMS nhúng được tối ưu cho các truy vấn phân tích phức tạp
-
Được viết bằng C++11, là một binary đơn không có phụ thuộc và chạy bên trong tiến trình máy chủ
-
Cung cấp API cho Python/R/Java/C/C++/Node.js
-
Lưu DB trong một tệp duy nhất như SQLite
-
Các trường hợp sử dụng phù hợp
→ Xử lý và lưu trữ dữ liệu dạng bảng như CSV/Parquet
→ Phân tích dữ liệu tương tác với việc Join & Aggregate nhiều bảng lớn
→ Khi cần thực hiện đồng thời các thay đổi lớn trên nhiều bảng lớn (thêm nhiều dòng hoặc thêm/xóa/thay đổi cột, v.v.)
6 bình luận
Có vẻ mục tiêu là chia mảng DB nhúng thành hai nhánh: OLTP là SQLite, còn OLAP là DuckDB.
Khác với SQLite đã ra mắt từ 20 năm trước và giờ gần như đã thống lĩnh mảng embedded, đây là một dự án mã nguồn mở tân binh khi mới chỉ khoảng 1 năm rưỡi kể từ lúc ra mắt bản 0.1. ^^
Vài ngày trước còn mới bổ sung API cho Node.js, nên có vẻ giờ đã thuận tiện hơn để dùng theo nhiều cách khác nhau.
Mỗi lần đọc về chủ đề này tôi lại thấy mình vẫn chưa thật sự hiểu rõ sự khác nhau giữa OLTP và OLAP. hu hu. Có vẻ cũng không có nhiều nội dung giải thích thật sự rõ ràng, dễ hiểu.
Đúng vậy, vì phần giải thích mà ta thường gặp thường là giao dịch và phân tích (đúng như tên gọi), nên các RDB nổi tiếng vừa nhanh trong việc thêm/xóa dữ liệu vừa nhanh cho cả tác vụ phân tích. Ví dụ như Oracle hay PostgreSQL thì cũng khó nói là bên nào được tối ưu đặc biệt cho một phía nào đó... Hơn nữa, mình có cảm giác rằng phân tích trong thời đại big data thì dù sao cũng đã rời rất xa khỏi những hệ như thế từ lâu rồi, nên ý mình là đến giờ việc vẫn phân biệt OLTP và OLAP còn có ý nghĩa gì không thì mình cũng không rõ nữa ^^;
OLTP chuyên cho việc thêm vào, lấy ra, xóa đi v.v.
Còn OLAP là để mổ xẻ, thao tác qua lại trên dữ liệu đã có sẵn để phân tích.
Hiểu ở mức đó thì có lẽ ổn nhỉ?
Ừm.. cách tôi giải thích là
OLTP là theo chiều ngang: thứ gì đó được thêm vào theo từng dòng (có đơn hàng mới được tạo)
OLAP là theo chiều dọc: đọc toàn bộ một cột cụ thể để tính toán hoặc thay đổi (tính doanh thu trung bình theo ngày)
OLTP là chiều ngang
OLAP là chiều dọc nhỉ