Nginx इवेंट लूप
HTTP, WebSocket और नॉन-ब्लॉकिंग डेटाबेस I/O, Nginx का इवेंट लूप साझा करते हैं।
SQL पर केंद्रित बैकएंड अल्फ़ा
Nginx के लिए Rust मॉड्यूल, जो PostgreSQL फ़ंक्शन को HTTP पर उपलब्ध कराता है और WebSocket पर बदलाव की सूचनाएँ भेजता है।
GitHubHTTP, WebSocket और नॉन-ब्लॉकिंग डेटाबेस I/O, Nginx का इवेंट लूप साझा करते हैं।
तैयार स्टेटमेंट और पाइपलाइनिंग बार-बार होने वाला काम तथा डेटाबेस से आने-जाने वाले संचार को घटाते हैं।
PostgreSQL के JSONB उत्तर का टेक्स्ट बिना बदले आगे भेजा जाता है। आउटपुट की जाँच बंद करने से उत्तर के JSON को पार्स करना भी बचता है।
पैच किए गए libpq वाला बिल्ड योग्य अनुरोधों के बॉडी को Rust और libpq में कॉपी करना हटाता है। बफ़र अपने-आप उधार लेना उन बड़े योग्य अनुरोधों पर लागू होता है जो बिना एन्क्रिप्शन वाले डेटाबेस कनेक्शन से भेजे जाते हैं। मानक बिल्ड में कॉपी होती रहती है।
ऊपर के बेंचमार्क में कॉपी किए गए बफ़र इस्तेमाल हुए। उत्तर और 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 लेते और लौटाते हैं। वे क्वेरी, व्यावसायिक नियम और अनुमति की जाँच संभालते हैं।
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 '{}'