/spqr

Stateless Postgres Query Router.

Primary LanguageGoOtherNOASSERTION

Go Go Docs Telegram Chat

Stateless Postgres Query Router

Stateless Postgres Query Router is a production-ready system for horizontal scaling of PostgreSQL via sharding.


PostgreSQL is awesome, but it's hard to manage a single database with some terabytes of data and 105+ queries per second. Current sharding solutions focus on analytical and hybrid workloads (OLAP, HTAP). Moreover, most of those solutions do not provide a smooth path for monolith to sharded transitions, which is why Yandex Cloud's Data Platform team developed SPQR.

SPQR is a production-ready system for horizontal scaling of PostgreSQL via sharding. We appreciate any kind of feedback and contribution to the project.

To get started, please visit our documentation. The full list of features is available here.

Development

You can use make run for a quick example using Docker. For local development, you need the latest Go version.

How to build:

make
make build

How to run:

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

Tests

SPQR has all types of tests: unit, regress, and end-to-end. These tests require Docker Compose, and can be run using make. For more information on testing, please see unittest, regress, and feature sections in Makefile.

Support

We have a Telegram chat to discuss SPQR usage and development. If you're missing a feature or have found a bug, please open a GitHub Issue. We appreciate any kind of feedback and contribution to the project.

License

The SPQR source code is distributed under the PostgreSQL Global Development Group License.