PostgreSQL ekosisteminde bağlantı havuzlama denilince akla ilk gelen araçlar PgBouncer, RDS Proxy, Pgpool-II ve Supavisor olsa da, PgDog bu alana yeni bir soluk getiriyor. PgDog, aslında bir Postgres proxy'si olarak tasarlanmış olsa da, sunduğu bağlantı havuzlama özelliğiyle dikkat çekiyor. Peki, neden bir bağlantı havuzlayıcı daha? Çünkü mevcut araçlar, kullanıcıları 'sızdıran soyutlamalar' ile karşı karşıya bırakıyor. PgBouncer gibi araçlar, UNIX felsefesine uygun olarak tek bir işi iyi yaparken, bu durum uygulama kodunda değişiklik yapmayı zorunlu kılıyor. Örneğin, SET komutları gibi temel Postgres özelliklerini kullanamaz hale geliyorsunuz. PgDog ise bu sorunu, yerleşik SQL ayrıştırıcısı sayesinde çözüyor.
PgDog'un en önemli özelliklerinden biri, SET komutlarını sorunsuz bir şekilde işlemesi. Geleneksel bağlantı havuzlayıcılar, bağlantı durumunu istemciler arasında paylaştığı için, bir istemcinin SET ile değiştirdiği oturum değişkenleri diğer istemcilere sızabiliyor. Bu durum, özellikle Satır Düzeyinde Güvenlik (RLS) gibi önemli özellikleri kullanırken büyük sorunlara yol açabiliyor. PgDog, her istemci için SET komutlarını ayrı ayrı saklayarak ve sorgu öncesi gerekli durum güncellemelerini yaparak, bu sorunu ortadan kaldırıyor. Böylece uygulama kodunuzda hiçbir değişiklik yapmadan bağlantı havuzlamayı kullanmaya devam edebiliyorsunuz.
Bir diğer kritik özellik ise LISTEN/NOTIFY desteği. Postgres'in yayınla/abone ol modelini uygulayan bu komutlar, genellikle bağlantı havuzlayıcılarda çalışmaz. PgDog, bu komutları dahili olarak işleyerek ve Postgres üzerinden özel bir bağlantı ile tüm PgDog süreçleri arasında mesaj taşıyarak, bu özelliği de kullanılabilir hale getiriyor. Böylece, uygulamalarınızda SQS veya Redis gibi ek hizmetlere ihtiyaç duymadan, Postgres'in yerleşik pub/sub özelliğini kullanmaya devam edebilirsiniz. PgDog, NOTIFY'in tüm işlemsel anlamlarını koruyarak, veri bütünlüğünü de garanti altına alıyor.
PgDog'un çoklu iş parçacığı desteği de önemli bir avantaj. Tokio async runtime'ı üzerine inşa edilen PgDog, birden fazla CPU'dan yararlanarak daha fazla istemci ve sorguya hizmet verebiliyor. Bu sayede, bağlantı havuzlarını parçalamak zorunda kalmıyorsunuz; tek bir PgDog süreci, yüksek trafik altında bile verimli çalışabiliyor. Ayrıca, ani trafik patlamalarında otomatik ölçeklendirme beklemeden hızlı yanıt verebiliyor. Üstelik PgDog tamamen açık kaynak ve ücretsiz. Bir yılı aşkın süredir üretimde kullanılan PgDog, saniyede 2 milyon sorguyu başarıyla havuzluyor. Postgres ölçeklendirme ihtiyaçlarınız için PgDog, mevcut çözümlerden farklılaşarak, uygulama kodunuzu değiştirmeden yüksek performans sunuyor.