PgDog को फंडिंग मिल गई है और यह अब आपके नज़दीक किसी डेटाबेस में आने वाला है
PgDog क्या करता है
- एक PostgreSQL प्रॉक्सी के रूप में काम करता है, जो प्रदान करता है:
- कनेक्शन पूलिंग
- रीड लोड बैलेंसिंग
- शार्डिंग / कई Postgres इंस्टैंसों के बीच क्वेरी रूटिंग
- बिना बदले हुए Postgres सर्वरों के सामने बैठता है; यह न तो कोई extension है और न ही custom storage engine.
- Aurora/Vitess जैसा अनुभव देने का लक्ष्य रखता है, लेकिन पूरी तरह proxy layer पर.
प्रदर्शन और आर्किटेक्चर
- सुरक्षा और गति के लिए Rust में लिखा गया है, लेकिन मुख्य लाभ इनसे आते हैं:
- Postgres प्रक्रियाओं से connection cost हटाना
- replicas में reads वितरित करना
- sharding के ज़रिए writes वितरित करना ताकि single-node WAL / vacuum bottlenecks से बचा जा सके.
- production के लिए बताए गए आंकड़ों में ~2M QPS शामिल हैं; memory use मुख्यतः cached query ASTs से driven है.
- बड़े result sets से निपटने के दो तरीके जो proxy को OOM कर सकते हैं: crash करके RAM जोड़ना बनाम disk पर paging करना; दोनों को trade-offs के रूप में स्वीकार किया गया है.
Sharding Model और सीमाएँ
- वर्तमान मॉडल:
shard_number = hash(key) % num_shards; आलोचक बताते हैं कि यह virtual-shard / range-based schemes की तुलना में resharding को महँगा बनाता है. - cross-shard transactions 2PC के माध्यम से समर्थित हैं, लेकिन:
- महँगे हैं और failures के दौरान fragile हैं.
- केवल कम-throughput “metadata” tables के लिए recommended हैं.
- reads eventually consistent हो सकते हैं; shards के across strong ACID “single machine” से तेज़ नहीं है.
- कुछ automatic shard routing मौजूद है, लेकिन यह अच्छी तरह documented नहीं है; अक्सर आपको shards को explicitly target करना पड़ता है.
Deployment और Configuration
- config TOML files द्वारा driven है; कई users highly dynamic, multi-tenant Kubernetes setups में friction की रिपोर्ट करते हैं.
- workarounds में custom controllers/operators शामिल हैं जो config regenerate करते हैं और coordinated reloads trigger करते हैं.
- Enterprise edition (paid) इसमें जोड़ेगी:
- multi-node management / “just works” deployment के लिए एक control plane.
- bad queries को block करने के लिए QoS features.
- SLA-backed support.
- core sharding और scaling functionality open source ही रहने का वादा किया गया है; इसके आसपास की infra/UX commercial होगी.
High Availability और Upgrades
- PgDog health checks और failover routing के साथ load balancing देता है, लेकिन:
- यह replicas को promote नहीं करता; external HA tooling (Patroni, RDS, आदि) की अपेक्षा करता है.
- यह सीधे major Postgres version upgrades की समस्या हल नहीं करता; चर्चा में logical replication और pooler-based cutovers को मौजूदा norm बताया गया है.
अन्य सिस्टमों से तुलना
- PgBouncer/Pgpool-II के मुकाबले: अधिक features (sharding, smarter pooling, LISTEN/NOTIFY handling, per-connection settings), लेकिन अधिक complexity.
- Citus के मुकाबले: Citus का OLAP/query engine अधिक समृद्ध है; PgDog OLTP, proxy-based concurrency, और independent coordinator scaling पर केंद्रित है.
- Mongo/Dynamo/Cockroach/Yugabyte के मुकाबले:
- thread notes बताते हैं कि Postgres मूलतः प्रति-row single-writer ही रहता है.
- कुछ का तर्क है कि KV/NoSQL systems writes को अधिक स्वाभाविक रूप से scale करते हैं; अन्य Postgres + sharding को उसके ecosystem के लिए पसंद करते हैं.
स्वीकृति और चिंताएँ
- कई users production में सकारात्मक अनुभव और PgBouncer की तुलना में smoother migrations की रिपोर्ट करते हैं.
- अन्य लोग सवाल उठाते हैं:
- छोटी core team से QA और operational risk.
- supply-chain/security posture (maintainers की review practices से आश्वस्त किया गया).
- “you wouldn’t use anything else” जैसे marketing claims, जिन्हें कुछ लोग बढ़ा-चढ़ाकर बताया हुआ मानते हैं.
- कुल मिलाकर स्वर: Postgres scaling के लिए अधिक गंभीर विकल्पों को लेकर उत्साह, लेकिन sharding complexity और HA/upgrades के लिए अभी भी सावधानीपूर्वक design की ज़रूरत पर यथार्थवाद.