PgDog:一个PostgreSQL分布式集群中间件

PgDog 是一个实现了 PostgreSQL 分片、连接池以及负载均衡功能的中间。PgDog 使用 Rust 语言编写,支持跨平台(Linux、Mac OS、Windows),具有高性能和高可靠性,可以在不需要修改任何应用程序的前提下实现 PostgreSQL 数据库的水平扩展。

如果你使用过 PgCat 连接池,可以把 PgDog 看作它的新一代继承者。

以下是 PgDog 支持的主要功能特性。

分片功能

PgDog 分片(Sharding)可以将数据库和数据表等拆分到多个 PostgreSQL 服务器中,每个分片包含数据的一个子集,PgDog 负责解决查询路由、跨分片查询和数据移动。

每个分片可以包含多个数据库,其中一个是主节点(Primary),负责读写操作;其他节点是副本(Replica),只能执行查询操作。

负载均衡

PgDog 工作在 OSI 模型的应用层,支持多个 PostgreSQL 副本的负载均衡。

对于查询(SELECT)语句,PgDog 提供了三种可配置的策略:随机(默认)、最小连接、轮询。

对于修改(INSERT、UPDATE 等)操作,PgDog 指定了一个主节点(Primary),这类操作只会发送到主节点。

健康检查

PgDog 定期针对副本进行健康检查,确保数据库节点能够接受连接并执行查询。如果一个节点的健康检查失效,PgDog 会将其列入禁用主机列表,无法再接受客户端的请求。

主机禁用具有一定的时效性,如果被禁用的主机恢复了健康检查,可以自动加入负载均衡的目标中。

事务模式

事务模式使得 PgDog 通过共享少量 PostgreSQL 连接服务数千个客户端。这是默认的模式。

这种模式下 PgDog 提供了一个连接池,如果连接池建立的上百个 PostgreSQL 连接,那么它就可以支持数十万个客户端同时连接。

插件系统

PgDog 支持插件开发,用户可以开发自定义的插件,用于修改查询路由、重新查询或者返回定制结果。PgDog 插件可以使用任何语言进行开发,以共享代码库的形式提供,在应用启动时加载。

认证机制

PostgreSQL 支持各种认证方式,目前 PgDog 实现了其中一部分,例如常用的 SCRAM-SHA-256;PgDog 未来会实现全部认证方式。

会话模式

PgDog 会话模式为每一个客户端分配一个 PostgreSQL 连接,可以确保提供全部 PostgreSQL 功能,包括持久性会话变量、设置和基于进程的功能(例如 LISTEN/NOTIFY)。一些批处理的任务(例如导入大量数据)在会话模式下的性能会更好。

虽然会话模式不支持共享的服务器连接,但是 PgDog 连接池仍然可以保留一定数量的连接复用,可以减少 PostgreSQL 服务器的消耗。

官方网站:https://pgdog.dev/

相关推荐
wifi___1 小时前
Redis分布式锁
数据库·redis·分布式
geovindu3 小时前
Pivoting and Unpivoting Data in SQL using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
DeveloperHonor4 小时前
pg_walex让回滚如此丝滑:PostgreSQL WAL 日志解析与数据回滚实战
postgresql·数据恢复·wal日志
方方洛4 小时前
ray教程-15-RayServe与LLM服务
人工智能·分布式·机器学习
ss2735 小时前
PostgreSQL事务隔离级别与案例
数据库·postgresql
m0_639906945 小时前
MySQL 实现分布式锁:悲观锁、乐观锁、唯一索引锁
数据库·分布式·mysql
喵了几个咪5 小时前
GoWind ShortPlay 拆解:Ent privacy/viewer 多租户隔离——从中间件到 SQL 的零信任链
sql·中间件·信任链
严同学正在努力6 小时前
PostgreSQL 高可用教程(流复制 + Patroni 生产级实战)
运维·数据库·ai·postgresql·架构
wno7046 小时前
Spring Boot中JdbcTemplate与Mybatis使用PostgreSQL
spring boot·postgresql·mybatis
T量子永生6 小时前
Android SISO 分布式编译集群配置方案
android·分布式·云计算·源代码管理