SQL-gesentreerde agterkant Alfa

Vinnige PostgreSQL-API’s.
Min geheue.

’n Rust-module vir Nginx wat PostgreSQL-funksies oor HTTP beskikbaar stel en veranderingskennisgewings oor WebSockets stuur.

GitHub

Hoe pgxio ekstra werk verminder

Nginx-gebeurtenislus

HTTP, WebSockets en nieblokkerende databasis-I/O deel Nginx se gebeurtenislus.

Hergebruikte databasisverbindings

Voorbereide stellings en pyplynverwerking verminder herhaalde werk en heen-en-weer-kommunikasie met die databasis.

Geen herserialisering van JSON nie

PostgreSQL se JSONB-antwoordteks word onveranderd aangestuur. Deur uitvoervalidering af te skakel, vermy jy ook die ontleding van die antwoord se JSON.

Versoeke sonder kopiëring aanstuur Eksperimenteel

Die bouweergawe met gewysigde libpq verwyder kopieë van die versoekliggaam na Rust en libpq vir geskikte versoeke. Outomatiese bufferlening geld vir geskikte groot versoeke oor ongeënkripteerde databasisverbindings. Standaardbouweergawes bly kopieer.

Die maatstaftoets hierbo het gekopieerde buffers gebruik. Antwoorde en TLS behels steeds kopieë.

Hoe dit werk

pgxio.confKonfigurasie-uittreksel
# 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

    Skryf SQL-funksies

    SQL-funksies ontvang en lewer JSON. Hulle hanteer navrae, besigheidsreëls en magtiging.

  2. 02

    Publiseer eksplisiete eindpunte

    Verklaar die funksies wat jou API beskikbaar stel. pgxio kontroleer JWT’s en roep elke funksie binne ’n transaksie aan.

  3. 03

    Teken in op veranderings

    Gemagtigde WebSocket-intekeninge meld veranderings. Jou kliënt haal die huidige momentopname weer oor HTTP.

Blaaier / kliëntHTTP + WebSocket
pgxio binne NginxRust + nieblokkerende libpq
PostgreSQLFunksies + kennisgewings

Intekeninge lewer veranderingseine, nie ’n blywende gebeurtenislogboek nie. Wanneer kliënte herverbind, teken hulle weer in en haal ’n vars momentopname.

Loop plaaslik

Voer hierdie opdragte uit vanuit ’n bestaande plaaslike pgxio-kopie. Jy benodig Docker Compose en Python 3.9 of nuwer.

Die ingeslote ontwikkelingsomgewing luister op localhost. pgxio is alfasagteware; hierdie konfigurasie is vir plaaslike verkenning.

Terminaal · vanuit jou plaaslike pgxio-kopie
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 '{}'