Show HN: PgDog – Scale Postgres without changing the app
Hacker News
PgDog is a high-performance PostgreSQL proxy written in Rust that supports connection pooling, load balancing, and database sharding to help scale databases on commodity hardware.
Hacker News
PgDog is a high-performance PostgreSQL proxy written in Rust that supports connection pooling, load balancing, and database sharding to help scale databases on commodity hardware.
AI 生成摘要
PgDog 是一個用 Rust 編寫的高性能 PostgreSQL 代理伺服器,支援連線池、負載平衡和資料庫分片,旨在幫助您在通用硬體上擴展資料庫規模。
PgDog 是一款由 Rust 編寫的開源 PostgreSQL 代理工具,旨在提供連線池、負載平衡與資料庫分片功能。開發團隊 Lev 與 Justin 在 Hacker News 上分享了最新進展,強調該工具能讓開發者在不修改應用程式代碼或進行大規模遷移的情況下,實現資料庫的水平擴展與讀寫分離。
在 Hacker News 的討論中,社群對 PgDog 的實用性給予了正面評價,特別是其作為連線池工具的穩定性。已有使用者分享在生產環境中使用 PgDog 的經驗,認為其在管理連線池方面表現出色,並對即將導入的分片功能抱持樂觀態度。針對分片技術,開發者 Lev 坦言跨分片的兩階段提交(2PC)仍有改進空間,目前正致力於增加崩潰保護機制,以確保在代理伺服器發生故障時,能從持久化介質中恢復進行中的交易記錄。
關於效能開銷,社群成員對其跨分片聚合查詢的透明重寫功能表示好奇,特別是 PgDog 如何在不影響應用層的情況下,自動注入額外的統計指令(如為計算平均值而補上計數查詢)。Lev 回應指出,在同一可用區域(AZ)內,PgDog 帶來的延遲通常低於一毫秒。然而他也提醒,雖然這對於大規模應用是必要的權衡,但對於通訊頻繁(Chatty)的應用程式,額外的網路跳轉可能會放大 N+1 查詢問題,這並非完全「免費的午餐」。
在架構建議方面,開發團隊分享了擴展 PostgreSQL 的階段性準則:當資料庫連線數超過一百時應考慮加入連線池;當主庫 CPU 負載超過 30% 時應引入唯讀副本以隔離負載;而當硬體垂直擴展接近雲端服務商的極限時,才是考慮分片的時機。此外,針對讀寫分離可能產生的複製延遲問題,社群也提出了關於是否需要同步複製的疑問,這反映了開發者在追求自動化路由時,對資料一致性的普遍擔憂。整體而言,PgDog 被視為一個功能豐富且具潛力的中間層解決方案,特別是在處理複雜的 SQL 解析與狀態同步上,比傳統的 PgBouncer 提供了更多現代化的特性。