Cài đặt trình khách PostgreSQL (psql)
RisingWave sử dụng giao thức PostgreSQL, vì vậy bạn có thể dùng bất kỳ client nào hỗ trợ PostgreSQL để kết nối.
Chúng ta sẽ cài đặt công cụ dòng lệnh psql trực tiếp trên Ubuntu 24.04 để thực hiện các thao tác nhanh chóng.
Mở terminal và thực hiện lệnh cập nhật nguồn và cài đặt gói postgresql-client.
sudo apt update && sudo apt install -y postgresql-client
Hệ thống sẽ tự động giải quyết các phụ thuộc và cài đặt binary file psql.
Kiểm tra phiên bản đã cài để đảm bảo thành công.
psql --version
Kết quả mong đợi: Hiển thị dòng thông báo phiên bản PostgreSQL client, ví dụ: psql (PostgreSQL) 16.x (Ubuntu 16.x-...).
Cấu hình kết nối với RisingWave
Trước khi kết nối, bạn cần xác định thông tin kết nối (Connection String) từ cụm RisingWave đã chạy ở Phần 3.
RisingWave thường mặc định lắng nghe trên cổng 4567 cho giao thức PostgreSQL (Frontend).
Chúng ta sẽ thiết lập biến môi trường PGOPTIONS để psql tự động sử dụng thông tin này mà không cần gõ lại mỗi lần.
Thiết lập biến môi trường với thông tin mặc định (Host: localhost, Port: 4567, User: root, Database: dev).
export PGOPTIONS='-h localhost -p 4567 -U root -d dev'
Biến này sẽ được psql đọc tự động khi bạn chạy lệnh mà không có tham số.
Để kiểm tra xem biến đã được set chưa, hãy in nội dung của nó ra.
echo $PGOPTIONS
Kết quả mong đợi: Hiển thị chuỗi -h localhost -p 4567 -U root -d dev.
Kết nối và xác minh trạng thái
Bây giờ bạn đã có client và cấu hình, hãy thử kết nối vào RisingWave.
Chạy lệnh psql mà không cần tham số (do biến môi trường đã set ở trên).
psql
Hệ thống sẽ yêu cầu nhập mật khẩu (nếu bạn đã cấu hình auth trong phần Docker Compose).
Nhập mật khẩu mặc định (thường là root hoặc rỗng nếu bạn không cấu hình RW_PASSWORD).
Khi kết nối thành công, prompt dòng lệnh sẽ thay đổi từ user@host sang dev=# hoặc dev=>.
Thực thi lệnh SQL đơn giản để kiểm tra phiên bản server đang chạy.
SELECT version();
Kết quả mong đợi: Trả về một bảng có 1 dòng chứa chuỗi mô tả phiên bản RisingWave, ví dụ: RisingWave 1.x.x (compatible with PostgreSQL ...).
Nhấn Ctrl+D hoặc gõ lệnh \q để thoát khỏi shell psql.
Tạo bảng và chèn dữ liệu mẫu
Tiếp tục kết nối lại RisingWave để thực hiện các thao tác CRUD cơ bản.
psql
Chúng ta sẽ tạo một bảng đơn giản tên là sensor_readings để lưu dữ liệu cảm biến IoT.
Bảng này sẽ có 3 cột: id (chìa khóa chính), device_name (tên thiết bị), và temperature (nhiệt độ).
CREATE TABLE sensor_readings (
id SERIAL PRIMARY KEY,
device_name VARCHAR(50) NOT NULL,
temperature DECIMAL(5,2)
);
Kết quả mong đợi: Dòng thông báo CREATE TABLE.
Chèn 3 dòng dữ liệu mẫu vào bảng vừa tạo.
INSERT INTO sensor_readings (device_name, temperature) VALUES
('Sensor_A', 25.5),
('Sensor_B', 30.2),
('Sensor_C', 22.8);
Kết quả mong đợi: Dòng thông báo INSERT 0 3, nghĩa là đã chèn thành công 3 dòng.
Để xác minh dữ liệu đã vào bảng chưa, hãy thực hiện lệnh hiển thị bảng.
\d sensor_readings
Kết quả mong đợi: Hiển thị cấu trúc bảng (cột, kiểu dữ liệu, ràng buộc) tương tự như lệnh CREATE TABLE.
Thực thi các truy vấn SELECT cơ bản
Đến đây, bạn đã có dữ liệu trong RisingWave. Hãy thực hiện các truy vấn SELECT để đọc dữ liệu.
Truy vấn lấy tất cả các dòng dữ liệu trong bảng.
SELECT * FROM sensor_readings;
Kết quả mong đợi: Hiển thị bảng với 3 dòng dữ liệu đã chèn ở bước trước, bao gồm id tự tăng.
Thực hiện truy vấn có điều kiện lọc theo giá trị nhiệt độ lớn hơn 25.
SELECT device_name, temperature FROM sensor_readings WHERE temperature > 25.0;
Kết quả mong đợi: Chỉ hiển thị 1 hoặc 2 dòng (tùy vào dữ liệu), cụ thể là các thiết bị có nhiệt độ cao hơn 25 độ.
Sử dụng hàm tổng hợp để tính nhiệt độ trung bình của tất cả thiết bị.
SELECT AVG(temperature) as avg_temp FROM sensor_readings;
Kết quả mong đợi: Trả về 1 dòng duy nhất với giá trị trung bình của 3 nhiệt độ đã nhập.
Sắp xếp kết quả theo tên thiết bị giảm dần.
SELECT * FROM sensor_readings ORDER BY device_name DESC;
Kết quả mong đợi: Dữ liệu được hiển thị theo thứ tự từ Sensor_C, Sensor_B, Sensor_A.
Thoát khỏi shell psql sau khi đã kiểm tra xong các truy vấn.
\q
Hệ thống quay lại shell Linux thông thường, xác nhận bạn đã hoàn thành việc kết nối và truy vấn cơ bản.
Điều hướng series:
Mục lục: Series: Triển khai Database Serverless với RisingWave trên Ubuntu 24.04
« Phần 3: Khởi động cụm RisingWave và kiểm tra trạng thái các node
Phần 5: Xây dựng luồng dữ liệu thời gian thực với Source và Sink »