የNginx ክስተት ዑደት
HTTP፣ WebSockets እና ሌላ ሥራን የማያግድ የውሂብ ጎታ I/O የNginx ክስተት ዑደትን በጋራ ይጠቀማሉ።
ለSQL ቅድሚያ የሚሰጥ ባክኤንድ አልፋ
የPostgreSQL ፋንክሽኖችን በHTTP የሚያቀርብ እና የለውጥ ማሳወቂያዎችን በWebSockets የሚያደርስ ለNginx የተዘጋጀ የRust ሞጁል።
GitHubHTTP፣ WebSockets እና ሌላ ሥራን የማያግድ የውሂብ ጎታ I/O የNginx ክስተት ዑደትን በጋራ ይጠቀማሉ።
ቀድመው የተዘጋጁ መግለጫዎች እና ፓይፕላይኒንግ ተደጋጋሚ ሥራን እና ወደ ውሂብ ጎታው የሚደረጉ የጥያቄና ምላሽ ምልልሶችን ይቀንሳሉ።
የPostgreSQL JSONB ምላሽ ጽሑፍ ሳይቀየር ያልፋል። የውጤት ማረጋገጫን ማሰናከል የምላሹን JSON ፓርስ ማድረግም ያስቀራል።
ፓች በተደረገበት libpq የተገነባው ስሪት፣ መስፈርቱን ለሚያሟሉ ጥያቄዎች የጥያቄውን አካል ወደ Rust እና libpq መቅዳትን ያስቀራል። በራስ-ሰር ማህደረ ትውስታን መዋስ (borrowing) የሚተገበረው መስፈርቱን በሚያሟሉ ትላልቅ ጥያቄዎች ላይ፣ የውሂብ ጎታ ግንኙነቶቹ ያልተመሰጠሩ (plaintext) ሲሆኑ ነው። መደበኛ ስሪቶች መቅዳትን ይቀጥላሉ።
ከላይ ያለው የአፈጻጸም ሙከራ የተቀዱ ባፈሮችን ተጠቅሟል። ምላሾች እና TLS አሁንም መቅዳትን ያካትታሉ።
# 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;የSQL ፋንክሽኖች JSON ይቀበላሉ፣ JSONም ይመልሳሉ። የውሂብ ጥያቄዎችን፣ የንግድ ደንቦችን እና የፈቃድ አሰጣጥን ያስተናግዳሉ።
የእርስዎ API የሚያቀርባቸውን ፋንክሽኖች ይግለጹ። pgxio የJWT ቶከኖችን ያረጋግጣል፣ እያንዳንዱን ፋንክሽንም በትራንዛክሽን ውስጥ ይጠራል።
ፈቃድ የተሰጣቸው የWebSocket ምዝገባዎች ለውጦችን ያሳውቃሉ። የደንበኛ መተግበሪያዎ የአሁኑን የውሂብ ሁኔታ በHTTP እንደገና ያመጣል።
ምዝገባዎች የለውጥ ምልክቶችን ያደርሳሉ፤ በዘላቂነት የሚቀመጥ የክስተቶች መዝገብ አያቀርቡም። ግንኙነቱ እንደገና ሲመለስ፣ የደንበኛ መተግበሪያዎች እንደገና ይመዘገባሉ፣ ወቅታዊውን የውሂብ ሁኔታም ያመጣሉ።
እነዚህን ትዕዛዞች አስቀድሞ ባወረዱት የpgxio ኮድ ማውጫ ውስጥ ያሂዱ። Docker Compose እና Python 3.9 ወይም ከዚያ በላይ ስሪት ያስፈልጉዎታል።
አብሮ የቀረበው የልማት አካባቢ ከlocalhost ጋር ይተሳሰራል። 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 '{}'