PgQue – Bloat'suz Postgres kuyruğu
(github.com/NikolayS)- Tek bir SQL dosyasıyla kuruluyor ve yalnızca
pg_cronile çalışıyor (tick) - Skype döneminin PgQ mimarisini saf PL/pgSQL ile yeniden uygulayan, Postgres içine gömülü mesaj kuyruğu; C eklentileri veya harici daemon'lar olmadan managed Postgres üzerinde doğrudan kullanılabiliyor
- Geleneksel SKIP LOCKED kuyruklarının kronik sorunu olan dead tuple birikimi ve VACUUM yükünü, snapshot tabanlı batch + TRUNCATE tablo rotasyonu ile kökten ortadan kaldırarak aylarca çalışsa da performans düşüşü yaşamıyor
- Kafka topic'lerine benzer paylaşımlı olay günlüğü + tüketici başına bağımsız cursor yapısıyla yerel fan-out desteği sunuyor — veri kopyalamadan birden fazla abone tüm olayları bağımsız biçimde alabiliyor
- Uçtan uca teslim gecikmesi varsayılan ayarlarda ~1-2 saniye (tick aralığı + poll aralığı), tekil send/receive/ack çağrıları ise mikrosaniye düzeyinde
- Ön benchmark'a göre PL/pgSQL insert ~86k ev/s, tüketici okuma ~2.4M ev/s; 30 dakikalık sürekli testte dead tuple artışı sıfır
pgque.send(),pgque.receive(),pgque.ack()gibi SQL API tabanlı olduğu için Python, Go, TypeScript gibi dillerden bağımsız olarak tüm Postgres sürücülerinde çalışıyor- RDS, Aurora, Cloud SQL, AlloyDB, Supabase, Neon gibi başlıca managed Postgres sağlayıcılarının tamamıyla uyumlu; ayrı build veya sağlayıcı onayı gerekmiyor
- 3 rol (
pgque_reader,pgque_writer,pgque_admin) tabanlı yetki ayrımı yerleşik geliyor; uygulama kullanıcısı için superuser gerekmiyor - PgQ'nun kendisi Skype'ın yüz milyonlarca kullanıcı ölçeğinde 10 yıldan uzun süre prodüksiyonda doğrulanmış olsa da, PgQue ürün olarak henüz erken aşamada (v0.1)
- Apache-2.0 lisansı
Henüz yorum yok.