Backend lấy SQL làm trọng tâm Alpha

API PostgreSQL nhanh.
Ít tốn bộ nhớ.

Mô-đun Rust cho Nginx cung cấp hàm PostgreSQL qua HTTP và thông báo thay đổi qua WebSocket.

GitHub

Cách pgxio giảm chi phí xử lý

Vòng lặp sự kiện Nginx

HTTP, WebSocket và I/O cơ sở dữ liệu không chặn dùng chung vòng lặp sự kiện của Nginx.

Tái sử dụng kết nối cơ sở dữ liệu

Câu lệnh chuẩn bị sẵn và xử lý theo đường ống giảm công việc lặp lại và số lượt trao đổi với cơ sở dữ liệu.

Không tuần tự hóa lại JSON

Văn bản phản hồi JSONB của PostgreSQL được chuyển nguyên vẹn. Tắt kiểm tra đầu ra cũng tránh việc phân tích JSON phản hồi.

Chuyển tiếp yêu cầu không sao chép Thử nghiệm

Bản dựng với libpq đã vá loại bỏ việc sao chép thân yêu cầu vào Rust và libpq cho yêu cầu đủ điều kiện. Tự động mượn bộ đệm áp dụng cho yêu cầu lớn phù hợp qua kết nối cơ sở dữ liệu không mã hóa. Bản dựng tiêu chuẩn vẫn sao chép.

Phép đo trên dùng bộ đệm được sao chép. Phản hồi và TLS vẫn cần sao chép.

Cách hoạt động

pgxio.confTrích đoạn cấu hình
# HTTP endpoints
pgxio_endpoint list_tasks
  web.list_tasks read_only;

pgxio_endpoint create_task
  web.create_task;

# WebSocket subscription authorization
pgxio_stream tasks
  web.authorize_tasks;
  1. 01

    Viết hàm SQL

    Hàm SQL nhận và trả về JSON. Chúng xử lý truy vấn, quy tắc nghiệp vụ và phân quyền.

  2. 02

    Công bố rõ các điểm cuối

    Khai báo các hàm mà API cung cấp. pgxio kiểm tra JWT và gọi từng hàm trong một giao dịch.

  3. 03

    Đăng ký thay đổi

    Đăng ký WebSocket được cấp quyền báo hiệu thay đổi. Máy khách lấy lại ảnh chụp trạng thái hiện tại qua HTTP.

Trình duyệt / máy kháchHTTP + WebSocket
pgxio trong NginxRust + libpq không chặn
PostgreSQLHàm + thông báo

Đăng ký gửi tín hiệu thay đổi, không phải nhật ký sự kiện bền vững. Khi kết nối lại, máy khách đăng ký lại và lấy ảnh chụp trạng thái mới.

Chạy cục bộ

Chạy các lệnh này từ bản mã nguồn pgxio hiện có. Cần Docker Compose và Python 3.9 trở lên.

Môi trường phát triển đi kèm lắng nghe trên localhost. pgxio là phần mềm alpha; cấu hình này dành cho việc tìm hiểu cục bộ.

Terminal · từ bản mã nguồn pgxio
bin/pgxio init
bin/pgxio up
TOKEN=$(bin/pgxio token alice)

curl http://localhost:8080/v1/create_task \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"title":"Hello from pgxio"}'

curl http://localhost:8080/v1/list_tasks \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{}'