ለSQL ቅድሚያ የሚሰጥ ባክኤንድ አልፋ

ፈጣን የPostgreSQL APIዎች።
አነስተኛ የማህደረ ትውስታ አጠቃቀም።

የPostgreSQL ፋንክሽኖችን በHTTP የሚያቀርብ እና የለውጥ ማሳወቂያዎችን በWebSockets የሚያደርስ ለNginx የተዘጋጀ የRust ሞጁል።

GitHub

pgxio ተጨማሪ የሀብት ፍጆታን እንዴት እንደሚቀንስ

የNginx ክስተት ዑደት

HTTP፣ WebSockets እና ሌላ ሥራን የማያግድ የውሂብ ጎታ I/O የNginx ክስተት ዑደትን በጋራ ይጠቀማሉ።

እንደገና ጥቅም ላይ የሚውሉ የውሂብ ጎታ ግንኙነቶች

ቀድመው የተዘጋጁ መግለጫዎች እና ፓይፕላይኒንግ ተደጋጋሚ ሥራን እና ወደ ውሂብ ጎታው የሚደረጉ የጥያቄና ምላሽ ምልልሶችን ይቀንሳሉ።

JSONን እንደገና ሲሪያላይዝ ማድረግ የለም

የPostgreSQL JSONB ምላሽ ጽሑፍ ሳይቀየር ያልፋል። የውጤት ማረጋገጫን ማሰናከል የምላሹን JSON ፓርስ ማድረግም ያስቀራል።

ጥያቄዎችን ቅጂ ሳይሠሩ ማስተላለፍ የሙከራ ደረጃ

ፓች በተደረገበት libpq የተገነባው ስሪት፣ መስፈርቱን ለሚያሟሉ ጥያቄዎች የጥያቄውን አካል ወደ Rust እና libpq መቅዳትን ያስቀራል። በራስ-ሰር ማህደረ ትውስታን መዋስ (borrowing) የሚተገበረው መስፈርቱን በሚያሟሉ ትላልቅ ጥያቄዎች ላይ፣ የውሂብ ጎታ ግንኙነቶቹ ያልተመሰጠሩ (plaintext) ሲሆኑ ነው። መደበኛ ስሪቶች መቅዳትን ይቀጥላሉ።

ከላይ ያለው የአፈጻጸም ሙከራ የተቀዱ ባፈሮችን ተጠቅሟል። ምላሾች እና TLS አሁንም መቅዳትን ያካትታሉ።

እንዴት እንደሚሠራ

pgxio.confየውቅር ቅንጭብ
# 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

    የSQL ፋንክሽኖችን ይጻፉ

    የSQL ፋንክሽኖች JSON ይቀበላሉ፣ JSONም ይመልሳሉ። የውሂብ ጥያቄዎችን፣ የንግድ ደንቦችን እና የፈቃድ አሰጣጥን ያስተናግዳሉ።

  2. 02

    በግልጽ የተወሰኑ ኤንድፖይንቶችን ያቅርቡ

    የእርስዎ API የሚያቀርባቸውን ፋንክሽኖች ይግለጹ። pgxio የJWT ቶከኖችን ያረጋግጣል፣ እያንዳንዱን ፋንክሽንም በትራንዛክሽን ውስጥ ይጠራል።

  3. 03

    የለውጥ ማሳወቂያዎችን ለማግኘት ይመዝገቡ

    ፈቃድ የተሰጣቸው የWebSocket ምዝገባዎች ለውጦችን ያሳውቃሉ። የደንበኛ መተግበሪያዎ የአሁኑን የውሂብ ሁኔታ በHTTP እንደገና ያመጣል።

አሳሽ / የደንበኛ መተግበሪያHTTP + WebSocket
pgxio በNginx ውስጥRust + ሌላ ሥራን የማያግድ libpq
PostgreSQLፋንክሽኖች + ማሳወቂያዎች

ምዝገባዎች የለውጥ ምልክቶችን ያደርሳሉ፤ በዘላቂነት የሚቀመጥ የክስተቶች መዝገብ አያቀርቡም። ግንኙነቱ እንደገና ሲመለስ፣ የደንበኛ መተግበሪያዎች እንደገና ይመዘገባሉ፣ ወቅታዊውን የውሂብ ሁኔታም ያመጣሉ።

በራስዎ ማሽን ላይ ያሂዱ

እነዚህን ትዕዛዞች አስቀድሞ ባወረዱት የpgxio ኮድ ማውጫ ውስጥ ያሂዱ። Docker Compose እና Python 3.9 ወይም ከዚያ በላይ ስሪት ያስፈልጉዎታል።

አብሮ የቀረበው የልማት አካባቢ ከlocalhost ጋር ይተሳሰራል። pgxio በአልፋ ደረጃ ያለ ሶፍትዌር ነው፤ ይህ ውቅር በራስዎ ማሽን ላይ ለመሞከር የተዘጋጀ ነው።

ተርሚናል · ከእርስዎ የ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 '{}'