PgQue – Bloat’suz Postgres kuyruğu
(github.com/NikolayS)- Tek bir SQL dosyasıyla kurulur ve yalnızca pg_cron ile çalıştırılır (tick)
- Skype döneminin PgQ mimarisini saf PL/pgSQL ile yeniden uygulayan, Postgres içine gömülü bir mesaj kuyruğu; C eklentisi veya harici daemon olmadan managed Postgres üzerinde doğrudan kullanılabilir
- Mevcut 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ırır; bu sayede aylarca çalışsa da performans düşmez
- Kafka topic’ine benzer paylaşılan event log + tüketici başına bağımsız cursor yapısıyla doğal fan-out desteği sunar — veri kopyalamadan birden çok abone tüm event’leri bağımsız olarak alabilir
- Uçtan uca iletim gecikmesi varsayılan ayarlarda ~1-2 saniye (tick aralığı + poll aralığı); tekil send/receive/ack çağrıları ise mikrosaniye düzeyindedir
- Ön benchmark sonuçlarına göre PL/pgSQL insert ~86k ev/s, tüketici okuması ~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 vb. fark etmeksizin tüm Postgres sürücülerinde çalışır- 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ı gerekmez
- 3 rol (pgque_reader, pgque_writer, pgque_admin) tabanlı yetki ayrımı yerleşik gelir; uygulama kullanıcısı için superuser gerekmez
- 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ı
1 yorum
Gerçek anlamda hepsi bir arada bir veritabanı