Yêu cầu phần cứng và chuẩn bị hệ thống Ubuntu 24.04
Trước khi cài đặt DuckDB, chúng ta cần đảm bảo máy chủ (Server) đáp ứng các thông số tối thiểu để tránh tình trạng OOM (Out of Memory) hoặc hiệu năng kém khi xử lý dữ liệu lớn.
DuckDB là một database dạng OLAP (Online Analytical Processing) chạy in-process, nghĩa là nó sử dụng bộ nhớ RAM để xử lý và caching dữ liệu. Do đó, RAM là yếu tố quan trọng nhất.
- CPU: Tối thiểu 2 Cores (khuyến nghị 4 Cores để tận dụng parallel execution của DuckDB).
- RAM: Tối thiểu 4GB RAM (khuyến nghị 8GB+ nếu dữ liệu > 1GB).
- Disk: SSD NVMe là bắt buộc để tối ưu tốc độ I/O. Dung lượng tối thiểu 20GB trống.
- Hệ điều hành: Ubuntu 24.04 LTS (Noble Numbat) với Kernel 6.8 trở lên.
Bước đầu tiên là cập nhật repository và nâng cấp các gói hệ thống cốt lõi để đảm bảo môi trường sạch và ổn định nhất.
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Hệ thống hiển thị danh sách các gói đã nâng cấp lên phiên bản mới nhất và không báo lỗi (Errors). Dòng cuối cùng là "0 upgraded, 0 newly installed" hoặc số lượng gói đã được nâng cấp.
Cài đặt Python và môi trường phát triển
DuckDB được viết bằng C++ nhưng giao diện Python là tiêu chuẩn để triển khai và quản lý. Ubuntu 24.04 mặc định đi kèm Python 3.12, nhưng chúng ta cần cài đặt thêm các gói phụ thuộc để biên dịch wheel hoặc cài đặt binary.
Chúng ta cần `build-essential` để biên dịch các thư viện C nếu cần, `python3-pip` để quản lý gói Python, và `python3-venv` để tạo môi trường ảo cách ly.
sudo apt install -y build-essential python3-pip python3-venv python3-dev
Kết quả mong đợi: Các gói được cài đặt thành công, không có cảnh báo về missing dependencies.
Cài đặt DuckDB thông qua Python Package Manager
Thay vì biên dịch từ source (mất nhiều thời gian và phức tạp), cách nhanh nhất và ổn định nhất trên Ubuntu 24.04 là sử dụng wheel binary có sẵn từ PyPI. Chúng ta sẽ tạo một môi trường ảo (virtual environment) để cách ly các thư viện DuckDB khỏi hệ thống chính.
Tạo và kích hoạt môi trường ảo Python
Tạo thư mục làm việc cho dự án và khởi tạo môi trường ảo. Điều này giúp tránh xung đột phiên bản Python với các service hệ thống khác của Ubuntu.
mkdir -p /opt/duckdb-env && cd /opt/duckdb-env && python3 -m venv venv && source venv/bin/activate
Kết quả mong đợi: Dòng prompt (command line) xuất hiện dấu `(venv)` ở đầu, ví dụ: `(venv) root@server:/opt/duckdb-env#`. Điều này xác nhận môi trường ảo đã được kích hoạt.
Nâng cấp pip và cài đặt DuckDB
Trước khi cài đặt, cần nâng cấp `pip` lên phiên bản mới nhất để hỗ trợ tốt hơn cho các wheel của Python 3.12. Sau đó, cài đặt gói `duckdb`.
pip install --upgrade pip && pip install duckdb
Kết quả mong đợi: Quá trình tải và cài đặt hoàn tất, hiển thị thông báo "Successfully installed duckdb-x.x.x". Không xuất hiện cảnh báo về "Failed to build wheel".
Kiểm tra phiên bản và chạy lệnh Hello World
Sau khi cài đặt xong, chúng ta cần xác minh rằng DuckDB đã hoạt động chính xác trong môi trường hiện tại và có thể thực thi các câu lệnh SQL cơ bản.
Kiểm tra phiên bản DuckDB
Sử dụng lệnh Python để in ra phiên bản hiện tại của thư viện DuckDB đã cài đặt.
python3 -c "import duckdb; print(duckdb.__version__)"
Kết quả mong đợi: Màn hình hiển thị số phiên bản cụ thể (ví dụ: `1.1.0` hoặc cao hơn), không báo lỗi `ModuleNotFoundError`.
Chạy câu lệnh Hello World đầu tiên
Khởi tạo một connection mới, tạo một bảng tạm thời, chèn dữ liệu và truy vấn để đảm bảo engine SQL hoạt động trơn tru.
python3 -c "
import duckdb
con = duckdb.connect()
con.execute('CREATE TABLE test_table (id INT, name VARCHAR)')
con.execute(\"INSERT INTO test_table VALUES (1, 'Ubuntu 24.04'), (2, 'DuckDB')\")
result = con.execute('SELECT * FROM test_table').fetchall()
print('Kết quả truy vấn:')
for row in result:
print(row)
con.close()
"
Kết quả mong đợi:
1. Không có lỗi cú pháp hay runtime error.
2. Màn hình hiển thị dòng "Kết quả truy vấn:".
3. In ra hai dòng dữ liệu: `(1, 'Ubuntu 24.04')` và `(2, 'DuckDB')`.
Verify kết quả cuối cùng của Phần 1
Để xác nhận toàn bộ môi trường đã sẵn sàng cho Phần 2, thực hiện kiểm tra nhanh trạng thái thư mục và phiên bản.
ls -la /opt/duckdb-env/venv/lib/python*/site-packages/ | grep duckdb && python3 -c "import duckdb; print('DuckDB Ready:', duckdb.__version__)"
Kết quả mong đợi:
1. Lệnh `ls` hiển thị thư mục `duckdb` và các file liên quan trong thư mục site-packages.
2. Lệnh `python` in ra dòng `DuckDB Ready: `.
Điều hướng series:
Mục lục: Series: Triển khai Database Serverless với DuckDB và Ubuntu 24.04
Phần 2: Cấu hình DuckDB để hoạt động như một Server độc lập »