حلقة أحداث Nginx
يشترك HTTP وWebSocket وإدخال وإخراج قاعدة البيانات غير الحاجب في حلقة أحداث Nginx.
خلفية تعتمد على SQL ألفا
وحدة Rust لـ Nginx تتيح دوال PostgreSQL عبر HTTP وترسل إشعارات التغيير عبر WebSocket.
GitHubيشترك HTTP وWebSocket وإدخال وإخراج قاعدة البيانات غير الحاجب في حلقة أحداث Nginx.
تقلل العبارات المحضّرة والمعالجة المتسلسلة في خط أنابيب العمل المتكرر ورحلات الاتصال بقاعدة البيانات.
يُمرّر نص استجابة JSONB من PostgreSQL دون تغيير. كما يؤدي تعطيل التحقق من المخرجات إلى تجنب تحليل 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 وتعيدها. وتتولى الاستعلامات وقواعد العمل والتحقق من الصلاحيات.
صرّح بالدوال التي تتيحها واجهتك. يتحقق 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 '{}'