Backend inayotanguliza SQL Alfa

API za PostgreSQL zenye kasi.
Matumizi madogo ya kumbukumbu.

Moduli ya Rust kwa Nginx inayowezesha kufikia vitendakazi vya PostgreSQL kupitia HTTP na kuwasilisha arifa za mabadiliko kupitia WebSockets.

GitHub

Jinsi pgxio inavyopunguza kazi ya ziada

Mzunguko wa matukio wa Nginx

HTTP, WebSockets, na I/O ya hifadhidata isiyozuia utekelezaji vinashiriki mzunguko wa matukio wa Nginx.

Miunganisho ya hifadhidata inayotumiwa tena

Amri zilizoandaliwa mapema na utumaji wa amri mfululizo bila kusubiri jibu la kila moja hupunguza kazi inayorudiwa na safari za kwenda na kurudi kwenye hifadhidata.

Bila kusimba upya JSON

Maandishi ya jibu la JSONB la PostgreSQL hupitishwa bila kubadilishwa. Kuzima uthibitishaji wa matokeo pia huepusha uchanganuzi wa JSON ya jibu.

Usambazaji wa maombi bila kunakili Ya majaribio

Toleo lililojengwa kwa libpq iliyofanyiwa marekebisho huondoa kunakili mwili wa ombi ndani ya Rust na libpq kwa maombi yanayokidhi masharti. Uazimaji wa kiotomatiki wa bafa hutumika kwa maombi makubwa yanayokidhi masharti kupitia miunganisho ya hifadhidata ya maandishi wazi yasiyosimbwa kwa usalama. Matoleo ya kawaida yanaendelea kunakili.

Kipimo cha utendaji hapo juu kilitumia bafa zilizonakiliwa. Majibu na TLS bado huhusisha kunakili.

Jinsi inavyofanya kazi

pgxio.confDondoo la usanidi
# 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

    Andika vitendakazi vya SQL

    Vitendakazi vya SQL hupokea na kurudisha JSON. Hushughulikia hoja, kanuni za biashara, na uidhinishaji.

  2. 02

    Chapisha sehemu za ufikiaji zilizobainishwa wazi

    Bainisha vitendakazi vinavyopatikana kupitia API yako. pgxio hukagua JWT na kuita kila kitendakazi ndani ya muamala.

  3. 03

    Jisajili kupokea arifa za mabadiliko

    Usajili wa WebSocket ulioidhinishwa hutoa ishara za mabadiliko. Programu yako ya mteja hupakua tena nakala ya hali ya sasa kupitia HTTP.

Kivinjari / programu ya mtejaHTTP + WebSocket
pgxio ndani ya NginxRust + libpq isiyozuia utekelezaji
PostgreSQLVitendakazi + arifa

Usajili huwasilisha ishara za mabadiliko, si kumbukumbu ya matukio inayohifadhiwa kwa kudumu. Baada ya kuunganishwa tena, programu za wateja hujisajili upya na kupakua nakala mpya ya hali ya sasa.

Endesha kwenye mashine yako

Endesha amri hizi kutoka kwenye nakala ya hazina ya pgxio iliyo tayari kwenye mashine yako. Utahitaji Docker Compose na Python 3.9 au toleo jipya zaidi.

Mkusanyiko wa huduma za uundaji programu uliotolewa husikiliza kwenye localhost. pgxio ni programu ya hatua ya alfa; usanidi huu ni wa kuijaribu kwenye mashine yako.

Terminali · kutoka kwenye nakala yako ya hazina ya 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 '{}'