At a glance
| Product type | PostgreSQL extension (sharding layer inside the database), not a network proxy |
| Supported databases | PostgreSQL (Citus 14 targets current versions, including PostgreSQL 18) |
| Pooling modes | Not a connection pooler; elastic clusters on Azure offer PgBouncer, and self-managed clusters typically put PgBouncer in front |
| Routing and read/write splitting | Routes each query to the shards that hold the data, or fans out across nodes; not a read/write splitter |
| Load balancing and failover | Data and query work spread across nodes; high availability through Patroni (self-managed) or the managed service |
| Authentication and TLS | Standard PostgreSQL authentication and TLS; Microsoft Entra ID on Azure elastic clusters |
| Deployment | Self-managed (deb and rpm packages, single-node Docker image) or Azure elastic clusters |
| Licensing | AGPL-3.0, free; Azure bills compute, storage and IOPS |
Citus is the way to scale PostgreSQL itself across several servers without leaving PostgreSQL: it is an extension, not a proxy or a fork, so tables, SQL and most extensions keep working while data is distributed by a shard key or by schema. It needs a data model designed around a distribution column or per-tenant schemas, and for a managed service on Azure today you should choose elastic clusters, not Cosmos DB for PostgreSQL.
Overview
Citus is an extension that turns PostgreSQL into a distributed database. A cluster is a set of PostgreSQL servers with the extension installed: distributed tables are split into shards by a distribution column and spread over the nodes, reference tables are copied to every node so joins and foreign keys work, and a distributed query planner either routes a query to one node or runs it in parallel across many. Schema-based sharding, added in Citus 12.0, treats each schema as a shard, which suits multi-tenant applications and microservices. Citus also includes a columnar access method for compressed analytical tables.
Microsoft acquired Citus Data in January 2019 and develops the extension in the open; 14.3.0 (23 October 2026) is current and the README examples pair Citus 14 with PostgreSQL 18. On Azure, elastic clusters in Azure Database for PostgreSQL flexible server are Microsoft's managed Citus offering. Azure Cosmos DB for PostgreSQL, the earlier managed Citus service, is on a retirement path with new deployments blocked; see Azure Cosmos DB and Azure Database for PostgreSQL.
Key features
- Row-based sharding of distributed tables by a distribution column
- Schema-based sharding (since 12.0) for multi-tenant apps and microservices
- Reference tables replicated to all nodes for joins and foreign keys
- Distributed query planner that routes single-shard queries and parallelises multi-shard queries and DML
- Online shard rebalancing when nodes are added
- Columnar access method for compressed, scan-friendly tables
- Queries can be run from any node, not only the coordinator
Integrations and ecosystem
Pros and cons
Pros
- Scales PostgreSQL horizontally while keeping PostgreSQL SQL, tools and extensions
- Two sharding models, by distribution column or by schema
- Managed option on Azure in addition to self-hosting
- Open source with regular releases on two supported lines (13.x and 14.x)
Cons
- Schemas and queries must be designed around the distribution column to avoid costly cross-shard work
- AGPL-3.0 obligations need a licence review for some redistribution and SaaS uses
- Azure Cosmos DB for PostgreSQL users face a migration to elastic clusters
- Self-managed multi-node clusters need manual setup and separate HA tooling
Pricing
The Citus extension is free and open source under the AGPL-3.0 licence; you can run it on your own PostgreSQL servers at no licence cost. The managed option is elastic clusters in Azure Database for PostgreSQL flexible server, billed by Azure for compute (per vCore), storage and IOPS with no extra charge for Citus, according to Microsoft's migration page. The older managed service, Azure Cosmos DB for PostgreSQL, is closed to new deployments.
Pricing checked on the vendor's official page on 7 November 2026. Prices change; confirm before buying.
Who it is best for
Teams that have outgrown one PostgreSQL server for multi-tenant SaaS, real-time analytics or high-throughput workloads and want to stay on PostgreSQL rather than move to a different distributed database.
Typical use cases
- Multi-tenant SaaS with each tenant in its own schema or keyed by tenant_id
- Real-time analytics dashboards over large event tables
- Scaling write throughput beyond a single PostgreSQL server
- Storing older analytical data in columnar tables next to row tables
Who should look elsewhere
- Applications that only need more connections or read replicas: a pooler such as PgBouncer or replicas are simpler.
- Teams that want a distributed database with built-in multi-region consensus replication: see CockroachDB vs PostgreSQL.
Verdict
Citus is the most direct way to shard PostgreSQL while staying on PostgreSQL, with a managed path on Azure through elastic clusters. It is a data-architecture decision rather than a drop-in component: model the distribution key or schemas first, check the AGPL terms, and if you run Azure Cosmos DB for PostgreSQL, plan the move to elastic clusters.
Frequently asked questions
Is Citus a proxy or a database?
Neither exactly: it is a PostgreSQL extension. Every node is a normal PostgreSQL server with Citus installed, and the extension handles sharding and distributed queries inside the database rather than in a separate proxy process.
Is Azure Cosmos DB for PostgreSQL being retired?
It is on a retirement path. Microsoft Learn says new deployments are blocked, existing clusters including read replicas remain supported, and new projects should use elastic clusters in Azure Database for PostgreSQL. Microsoft provides a migration tool; no final retirement date was published as of 7 November 2026.
Is Citus free?
Yes, the extension is open source under AGPL-3.0 and free to self-host. On Azure you pay for the elastic cluster's compute, storage and IOPS, with no extra charge for Citus.
Does Citus need a connection pooler?
Often. Citus is not a pooler, and distributed queries open connections between nodes, so deployments commonly put PgBouncer in front; Azure elastic clusters support PgBouncer.
Sources
- Citus GitHub repository (README and licence)
- Citus releases
- Citus documentation
- Microsoft blog: Microsoft acquires Citus Data (24 January 2019)
- Microsoft Learn: Elastic clusters in Azure Database for PostgreSQL
- Microsoft Learn: Azure Cosmos DB for PostgreSQL overview (retirement notice)
- Microsoft Learn: Migrate to Azure Database for PostgreSQL with Elastic Cluster
Checked November 2026.
Listed in: Database Proxy & Connection Pooling, NoSQL & Distributed Databases.
How we research reviews and what star ratings mean: our editorial method.