SQL odaklı arka uç Alfa

Hızlı PostgreSQL API’leri.
Düşük bellek kullanımı.

PostgreSQL işlevlerini HTTP üzerinden sunan ve WebSocket üzerinden değişiklik bildirimleri ileten bir Rust Nginx modülü.

GitHub

pgxio ek yükü nasıl azaltır

Nginx olay döngüsü

HTTP, WebSocket ve engellemeyen veritabanı G/Ç işlemleri Nginx’in olay döngüsünü paylaşır.

Yeniden kullanılan veritabanı bağlantıları

Hazırlanmış ifadeler ve işlem hattı, yinelenen işi ve veritabanına gidiş dönüşleri azaltır.

JSON yeniden serileştirilmez

PostgreSQL’in JSONB yanıt metni değiştirilmeden aktarılır. Çıktı doğrulamasını kapatmak, yanıt JSON’unun ayrıştırılmasını da önler.

İstekleri kopyalamadan iletme Deneysel

Yamalı libpq derlemesi, uygun isteklerde gövdenin Rust ve libpq içine kopyalanmasını ortadan kaldırır. Otomatik tampon ödünç alma, şifrelenmemiş veritabanı bağlantılarındaki uygun büyük isteklere uygulanır. Standart derlemeler kopyalamaya devam eder.

Yukarıdaki test kopyalanan tamponlar kullandı. Yanıtlar ve TLS hâlâ kopyalama içerir.

Nasıl çalışır

pgxio.confYapılandırma örneği
# 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 işlevleri yazın

    SQL işlevleri JSON alır ve döndürür. Sorguları, iş kurallarını ve yetkilendirmeyi yönetir.

  2. 02

    Uç noktaları açıkça yayımlayın

    API’nizin sunduğu işlevleri tanımlayın. pgxio JWT’leri doğrular ve her işlevi bir işlem içinde çağırır.

  3. 03

    Değişikliklere abone olun

    Yetkilendirilmiş WebSocket abonelikleri değişiklikleri bildirir. İstemciniz güncel anlık görüntüyü HTTP üzerinden yeniden alır.

Tarayıcı / istemciHTTP + WebSocket
Nginx içinde pgxioRust + engellemeyen libpq
PostgreSQLİşlevler + bildirimler

Abonelikler kalıcı bir olay günlüğü değil, değişiklik sinyalleri iletir. Yeniden bağlanınca istemciler yeniden abone olur ve güncel bir anlık görüntü alır.

Yerel çalıştırın

Bu komutları mevcut bir pgxio kaynak kopyasından çalıştırın. Docker Compose ve Python 3.9 veya üzeri gerekir.

Dahil edilen geliştirme ortamı localhost üzerinde dinler. pgxio alfa yazılımıdır; bu yapılandırma yerel denemeler içindir.

Terminal · pgxio kaynak kopyanızdan
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 '{}'