Bahagian belakang berasaskan SQL Alfa

API PostgreSQL pantas.
Penggunaan memori rendah.

Modul Rust untuk Nginx yang menyediakan fungsi PostgreSQL melalui HTTP dan menghantar pemberitahuan perubahan melalui WebSocket.

GitHub

Cara pgxio mengurangkan overhed

Gelung peristiwa Nginx

HTTP, WebSocket dan I/O pangkalan data tanpa sekatan berkongsi gelung peristiwa Nginx.

Sambungan pangkalan data diguna semula

Pernyataan tersedia dan pemprosesan saluran paip mengurangkan kerja berulang serta perjalanan pergi balik ke pangkalan data.

Tiada pensirian semula JSON

Teks respons JSONB PostgreSQL diteruskan tanpa perubahan. Menyahaktifkan pengesahan output juga mengelakkan penghuraian JSON respons.

Pemajuan permintaan tanpa salinan Eksperimen

Binaan dengan libpq yang ditampal menghapuskan salinan badan permintaan ke Rust dan libpq bagi permintaan yang layak. Peminjaman penimbal automatik terpakai pada permintaan besar yang layak melalui sambungan pangkalan data tidak disulitkan. Binaan standard masih menyalin.

Penanda aras di atas menggunakan penimbal yang disalin. Respons dan TLS masih melibatkan salinan.

Cara berfungsi

pgxio.confPetikan konfigurasi
# 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

    Tulis fungsi SQL

    Fungsi SQL menerima dan mengembalikan JSON. Fungsi mengendalikan pertanyaan, peraturan perniagaan dan pemberian kuasa.

  2. 02

    Terbitkan titik akhir secara jelas

    Isytiharkan fungsi yang disediakan oleh API anda. pgxio memeriksa JWT dan memanggil setiap fungsi dalam transaksi.

  3. 03

    Langgan perubahan

    Langganan WebSocket yang diberi kuasa memberi isyarat perubahan. Klien mendapatkan semula petikan keadaan semasa melalui HTTP.

Pelayar / klienHTTP + WebSocket
pgxio dalam NginxRust + libpq tanpa sekatan
PostgreSQLFungsi + pemberitahuan

Langganan menyampaikan isyarat perubahan, bukan log peristiwa kekal. Apabila menyambung semula, klien melanggan semula dan mendapatkan petikan keadaan terkini.

Jalankan secara setempat

Jalankan arahan ini daripada salinan sumber pgxio sedia ada. Docker Compose dan Python 3.9 atau lebih baharu diperlukan.

Persekitaran pembangunan yang disertakan mendengar pada localhost. pgxio ialah perisian alfa; konfigurasi ini untuk penerokaan setempat.

Terminal · daripada salinan sumber pgxio anda
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 '{}'