Cài đặt thư viện client EdgeDB cho Python và Node.js
Chúng ta cần cài đặt driver chính thức của EdgeDB cho cả hai môi trường ngôn ngữ để ứng dụng có thể giao tiếp trực tiếp với database qua giao thức gRPC.
Đối với Python, thư viện edgedb được đóng gói trong edgedb. Đối với Node.js, chúng ta sử dụng @edgedb/sdk.
Tạo thư mục dự án riêng cho từng ngôn ngữ để tránh xung đột môi trường ảo.
mkdir -p /var/www/edge-apps/python-app
mkdir -p /var/www/edge-apps/node-app
cd /var/www/edge-apps/python-app
Kết quả mong đợi: Hai thư mục mới được tạo trong đường dẫn chỉ định.
Thiết lập môi trường Python
Tạo môi trường ảo Python độc lập để cài đặt thư viện client mà không ảnh hưởng đến hệ thống.
python3 -m venv venv
source venv/bin/activate
pip install edgedb
Kết quả mong đợi: Dòng lệnh báo Successfully installed edgedb và dấu nhắc lệnh thay đổi thành (venv).
Thiết lập môi trường Node.js
Chuyển sang thư mục Node.js để khởi tạo dự án và cài đặt SDK.
cd /var/www/edge-apps/node-app
npm init -y
npm install @edgedb/sdk
Kết quả mong đợi: File package.json được tạo và thư viện @edgedb/sdk xuất hiện trong thư mục node_modules.
Cấu hình chuỗi kết nối (Connection String) và biến môi trường
Không bao giờ hardcode thông tin kết nối trực tiếp vào code nguồn. Chúng ta sẽ sử dụng biến môi trường EDGEDB_DSN để quản lý chuỗi kết nối (Data Source Name).
Chuỗi kết nối chuẩn có định dạng: edgedb://user:password@host:port/dbname.
Tạo file cấu hình .env trong từng thư mục dự án để chứa thông tin nhạy cảm.
Cấu hình cho Python
Viết nội dung vào file .env trong thư mục Python. Thay thế YOUR_PASSWORD bằng mật khẩu real của user edgedb đã tạo ở Phần 1.
echo "EDGEDB_DSN=edgedb://edgedb:YOUR_PASSWORD@127.0.0.1:5656/default" > /var/www/edge-apps/python-app/.env
Kết quả mong đợi: File .env được tạo và chứa chuỗi kết nối.
Cài đặt thư viện python-dotenv để đọc file này.
cd /var/www/edge-apps/python-app
source venv/bin/activate
pip install python-dotenv
Kết quả mong đợi: Thư viện python-dotenv cài đặt thành công.
Cấu hình cho Node.js
Viết nội dung tương tự vào file .env trong thư mục Node.js.
echo "EDGEDB_DSN=edgedb://edgedb:YOUR_PASSWORD@127.0.0.1:5656/default" > /var/www/edge-apps/node-app/.env
Kết quả mong đợi: File .env được tạo trong thư mục Node.js.
Cài đặt thư viện dotenv để Node.js có thể đọc file này.
cd /var/www/edge-apps/node-app
npm install dotenv
Kết quả mong đợi: Thư viện dotenv được thêm vào dependencies trong package.json.
Viết mã nguồn kết nối và thực thi truy vấn
Bây giờ chúng ta viết code thực tế để khởi tạo client, thực thi một câu lệnh EdgeQL đơn giản và in kết quả ra console.
Triển khai cho Python
Tạo file main.py trong thư mục /var/www/edge-apps/python-app. Code này sẽ load biến môi trường, khởi tạo client và chạy query SELECT sys::version().
cat > /var/www/edge-apps/python-app/main.py
Kết quả mong đợi: File main.py được tạo với nội dung chính xác.
Chạy file để verify kết nối.
cd /var/www/edge-apps/python-app
source venv/bin/activate
python main.py
Kết quả mong đợi: Console in ra dòng Kết nối thành công! Phiên bản EdgeDB: [phiên bản thực tế] và Đã đóng kết nối..
Triển khai cho Node.js
Tạo file index.js trong thư mục /var/www/edge-apps/node-app. Code này sử dụng module @edgedb/sdk.
cat > /var/www/edge-apps/node-app/index.js {
console.error("Lỗi khởi tạo:", err);
process.exit(1);
});
EOF
Kết quả mong đợi: File index.js được tạo với nội dung chính xác.
Chạy file để verify kết nối.
cd /var/www/edge-apps/node-app
node index.js
Kết quả mong đợi: Console in ra dòng Kết nối thành công! Phiên bản EdgeDB: [phiên bản thực tế] và Đã đóng kết nối..
Xử lý lỗi kết nối và đóng connection đúng cách
Trong môi trường production, lỗi kết nối (network timeout, auth fail) là không thể tránh khỏi. Chúng ta cần cấu hình retry logic và đảm bảo connection pool được giải phóng đúng cách.
Cấu hình Retry Policy
EdgeDB client hỗ trợ cấu hình tự động retry khi gặp lỗi transient. Chúng ta sẽ cấu hình số lần retry và khoảng thời gian chờ.
Triển khai cho Python (Advanced)
Cập nhật file main.py để thêm cấu hình config vào create_client.
cat > /var/www/edge-apps/python-app/main_advanced.py
Kết quả mong đợi: File main_advanced.py được tạo.
Chạy thử để đảm bảo code compile và chạy đúng luồng logic.
cd /var/www/edge-apps/python-app
source venv/bin/activate
python main_advanced.py
Kết quả mong đợi: In ra Client đã khởi tạo với cấu hình Retry. và Kết nối đã được đóng sạch..
Triển khai cho Node.js (Advanced)
Cập nhật file index.js để thêm cấu hình config vào createClient.
cat > /var/www/edge-apps/node-app/index_advanced.js {
console.error("Lỗi khởi tạo:", err);
process.exit(1);
});
EOF
Kết quả mong đợi: File index_advanced.js được tạo.
Chạy thử để verify.
cd /var/www/edge-apps/node-app
node index_advanced.js
Kết quả mong đợi: In ra Client đã khởi tạo với cấu hình Retry. và Kết nối đã được đóng sạch..
Điều hướng series:
Mục lục: Series: Triển khai Database Edge-native với EdgeDB trên Ubuntu 24.04
« Phần 3: Thực thi truy vấn dữ liệu và tối ưu hóa hiệu năng
Phần 5: Cấu hình bảo mật, sao lưu và khắc phục sự cố »