Repolode
pg-sharding

pg-sharding/spqr

无状态的 PostgreSQL 查询路由器,通过分片实现数据库的水平扩展。

Star
1,481
Fork
100
未关闭 Issue
102
最近提交
2小时前

这是什么?

SPQR 是一个无状态的查询路由器,位于应用与 PostgreSQL 之间,把数据分布到多个数据库分片上。它面向数据量达到 TB 级、查询吞吐很高、单个 PostgreSQL 实例已难以管理的场景。

项目使用 Go 编写,通过 spqr-router 启动路由进程,并使用 YAML 文件进行配置。其目标是让数据库从单机向分片架构的迁移过程更平滑,而许多现有分片方案主要面向分析型和混合型负载。

项目网站提供文档、功能列表以及基于 Docker 的快速示例。单元测试、回归测试和端到端测试均可通过 Docker Compose 与 make 命令运行。

核心功能

  • 01在一个统一入口后面将客户端查询路由到多个 PostgreSQL 分片。
  • 02以无状态路由进程运行,通过 YAML 文件进行配置。
  • 03可通过 make run 使用 Docker 快速体验。
  • 04包含单元测试、回归测试和端到端测试。

适用场景

  • 扩展已增长到 TB 级、查询量很高的单个 PostgreSQL 数据库。
  • 将单体 PostgreSQL 部署逐步迁移到分片架构。
  • 在多个实例之间做水平分区,承载 OLTP 类型的负载。

快速上手

  1. 1

    使用 Docker 运行快速示例

    make run
  2. 2

    从源码构建项目

    make build
  3. 3

    使用配置文件运行路由器

    spqr-router run --config path-to-router-config.yaml

使用前须知

  • 自动许可证识别失败,需在仓库中自行核对许可证;README 写明采用 PostgreSQL Global Development Group License。
  • 本地开发需要最新版本的 Go。

收录于专题

标签

常见问题

spqr 是什么?
无状态的 PostgreSQL 查询路由器,通过分片实现数据库的水平扩展。 SPQR 是一个无状态的查询路由器,位于应用与 PostgreSQL 之间,把数据分布到多个数据库分片上。它面向数据量达到 TB 级、查询吞吐很高、单个 PostgreSQL 实例已难以管理的场景。
spqr 可以免费使用吗?用的什么许可证?
spqr 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
spqr 还在维护吗?
活跃维护中。spqr 最近一次提交是在 2026年10月22日。
spqr 适合用来做什么?
扩展已增长到 TB 级、查询量很高的单个 PostgreSQL 数据库。 将单体 PostgreSQL 部署逐步迁移到分片架构。 在多个实例之间做水平分区,承载 OLTP 类型的负载。
spqr 怎么安装和运行?
使用 Docker 运行快速示例: make run 从源码构建项目: make build 使用配置文件运行路由器: spqr-router run --config path-to-router-config.yaml
在哪里获取 spqr?
源代码和安装说明在 GitHub 上:https://github.com/pg-sharding/spqr

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目