• Postgres elephant outline icon
    Postgres at Any Scale

    Scale out Postgres by distributing your data & queries across a cluster. And it’s simple to add nodes & rebalance shards when you need to grow.

  • Parallelized Performance

    Speed up queries by 20x to 300x (or more) through parallelism, keeping more data in memory, higher I/O bandwidth, and columnar compression.

  • Fork icon
    Not a Fork

    As an extension to Postgres, it’s easy to keep Citus in sync with the latest Postgres releases & stay current with all the latest innovations in its community.

  • Running shoes icon
    Run Anywhere

    Focus on your application and forget about your database. Run Citus in the cloud with Azure Cosmos DB for PostgreSQL.

All the Features You Need For Postgres At Any Scale

What’s New in Citus

Citus 12.1

Citus 12.1 is out & includes support for PostgreSQL 16! With logical replication enhancements and outer join performance improvements too.

PostgreSQL 16

Citus supports Postgres 16 GA—with logical replication enhancements and outer join performance improvements. Keep in mind you can always find the latest Citus to PostgreSQL version compatibility in our online FAQ.

Citus 12

In Citus 12, thanks to schema-based sharding you can now onboard existing apps with minimal changes and enable an architecture where different microservices can easily share the same distributed databases—plus improved MERGE support & performance improvements for multi-tenant monitoring.

Fully open source

With Citus 11, the remaining Citus Enterprise features are now available as open source, including the non-blocking aspect of the shard rebalancer, tenant isolation, user management, fine-grained access controls, pg_dist_poolinfo, and performance optimizations for data loading.

Schema-based sharding

Citus 12 allows converting schemas into a grouping of single shard co-located tables and automatically distributes them across your cluster—making onboarding applications easier with fewer required changes and enables new workloads like microservices.

HA with Patroni

Patroni automatically discovers and registers Citus worker nodes on the coordinator and handles failovers by replacing addresses of workers. It also helps to make controlled switchovers of worker nodes transparent by pausing client connections so that applications don’t experience errors.

Query from any node

Queries can be handled by any Citus node, because the table schema & metadata is synchronized from the coordinator to all the workers. Most applications will continue to query the Citus coordinator as they’ve always done, but workloads that need high query throughput can benefit.

Cluster activity views

Citus extends pg_stat_activity via citus_stat_activity and citus_dist_stat_activity views. These views pull all the activity across the cluster, making it easier to examine the activity within the cluster. This becomes handy especially if your app is using the query from any node feature.

Power of Postgres At Any Scale

All the Goodness of Postgres

With Citus you can use all your favorite Postgres features at scale, including data types, operators, functions, extensions, and indexes. Plus the reliability of Postgres and all the ongoing innovation in the Postgres community. Also, JSONB.

PostgreSQL 16

Citus supports Postgres 16 GA—with logical replication enhancements and outer join performance improvements. Keep in mind you can always find the latest Citus to PostgreSQL version compatibility in our online FAQ.

Postgres Tooling & Ecosystem

The Postgres ecosystem of tools, extensions, and libraries is vast. One of the reasons Citus is popular is because Citus is an extension to Postgres: therefore you get to leverage your Postgres expertise and use all of your familiar Postgres tools.

Relational Database Semantics

Citus offers relational database features like ACID transactions, joins, foreign key constraints, and SQL—to give you the flexibility of a relational database, at any scale.

Streaming Replication

The streaming replication feature in Postgres can be used to set up hot standby nodes with auto-failover for High Availability and read replicas for high-throughput read workloads.

Rails & Django integration

Like Postgres, Citus is compatible with all the popular programming languages. And for Rails and Django we’ve created gems and libraries to make it easy for your application to adapt to a sharded, distributed Postgres database.

Scale-Out Architecture

Packaged as a Postgres Extension

Because Citus is an extension to Postgres and not a fork, Citus can easily stay current with the latest releases of Postgres, allowing you to benefit from all of the latest innovations in Postgres.

Schema-based sharding

Citus 12 allows converting schemas into a grouping of single shard co-located tables and automatically distributes them across your cluster—making onboarding applications easier with fewer required changes and enables new workloads like microservices.

Row-based sharding

Transparently shard Postgres tables across multiple nodes to give your application more memory, compute, and disk. Which gives you parallelism, high performance, and a way to scale. Plus, you can now shard Postgres on a single Citus node, too.

Single-node Citus

Be “scale-out-ready” by sharding your data on a single Citus node, using a distributed data model from the start—so you can easily add nodes later. Or use single-node Citus as a handy way to try out Citus.

Easy to add nodes

It’s simple to add nodes to Citus, whether starting with Citus on a single node, or using Citus on a distributed cluster.

Shard Rebalancer

When you add nodes to a Citus cluster, the open source shard rebalancer enables you to redistribute shards and track their progress across nodes to balance the data distribution and performance of your Citus database.

Fast relational operations

Using advanced data placement and replication features, Citus gives you the fastest possible experience for relational database features like joins, foreign keys, subqueries, and stored procedures.

Tenant isolation

Multi-tenant SaaS applications sometimes need to isolate the shards for a large tenant to ensure that the large customer gets the resources they need and doesn’t negatively impact performance for everyone else. Hence: tenant isolation.

Distributed SQL Engine

Distributed Query Engine

Citus takes an incoming SQL query, plans the query for parallel execution, and pushes down the parallel computations to the nodes in the database cluster. As you add nodes, Citus automatically distributes queries to leverage all the memory and cpu cores available.

Adaptive Query Executor

The Citus distributed query executor dynamically adapts to the type of distributed SQL query, and uses a dynamic pool of connections to each worker node to execute Postgres queries on the shards.

Distributed Transactions

Citus provides atomic transactions across shards and nodes with advanced techniques like 2PC recovery and distributed deadlock detection to give you a seamless database experience.

Distributed Explain

The Postgres EXPLAIN feature creates a query plan for each query it receives and is invaluable in optimizing performance. In Citus, we’ve created a distributed EXPLAIN feature that performs the same function in the context of a distributed database.

Parallel Query

Parallelize analytical queries across the Citus distributed database cluster for maximum performance, giving your application the memory, compute, and higher IO bandwidth of multiple nodes.

Columnar Storage

With the Citus columnar feature, you can compress regular Postgres tables and/or distributed tables to reduce disk footprint, reduce I/O bandwidth needs, and speed up analytics queries.

Multiple Table Types

With Citus you can use a mix of distributed tables (with co-location), reference tables, and local Postgres tables—so you can optimize performance by sharding large tables; placing often-referenced tables on all the Citus nodes; and keeping the smaller tables local to the coordinator.

Monitoring & Management

Monitoring Metrics

Citus utilities can be used to query Citus table and relation sizes. The popular pg_stat_statements gives visibility into statistics about queries that are running on the database. And you can integrate your favorite monitoring tools with Postgres and Citus.

Access Controls

Granular access controls in Citus enable you to limit capabilities to certain types of users to control user access and reduce risk.

User Management

Citus automatically manages user creation for you across the cluster, and enables fine-grained control over inter-node authentication using certificates or other methods.

Tenant Monitoring

Find noisy neighbors in your cluster with CPU usage insights and query counts from citus_stat_tenants. Citus maintains a resource utilization snapshot for top N tenants you can use with Grafana to visualize congestion & locate roadblocks.

Cluster Activity Views

New in Citus 11, Citus extends pg_stat_activity via citus_stat_activity and citus_dist_stat_activity views. These views pull all the activity across the cluster, making it easier to examine the activity within the cluster. This becomes handy especially if your app is using the query from any node feature.

Data Types & Extensions

JSONB

PostgreSQL and Citus support 40+ data types, including semi-structured data types and JSONB. Many developers cite the JSONB support in Postgres as a super effective way to store unstructured data and documents in the database.

Custom Types

Custom types—also called user-defined types—are a super useful Postgres feature. In a Citus distributed cluster, custom types (as well as Postgres extensions) are automatically propagated to new and existing worker nodes, without any special steps on your part.

PostGIS

PostGIS is an extension to Postgres that adds support for geographical objects to Postgres, allowing location queries to be run in SQL. Open source, freely available, and works with Citus.

HyperLogLog (HLL)

HLL is an algorithm for the count-distinct problem and can approximate the number of distinct elements in a set. With sketch algorithms for probabilistic distincts such as HLL, you can provide deeper analytics in real-time across petabytes of data.

HA with Patroni

Patroni automatically discovers and registers Citus worker nodes on the coordinator and handles failovers by replacing addresses of workers. It also helps to make controlled switchovers of worker nodes transparent by pausing client connections so that applications don’t experience errors.

t-digest

t-digest is a sketch algorithm for accurately estimating quantiles and percentiles. Originally created by Ted Dunning back in 2013, there is now a popular Postgres extension for t-digest too.

Full Text Search

Full text search in Postgres enables you to search documents, parts of documents, and semi-structured data using regular expressions and text search from within your Citus database.

pgvector

pgvector is a PostgreSQL extension for vector similarity search. It can also be used for storing embeddings. pgvector supports exact and approximate nearest neighbor search, L2 distance, inner product, and cosine distance, and any language with a Postgres client.

Run Citus Anywhere

Open Source

We’re on a mission to make it so you no longer have to worry about scaling your database. With Citus open source, you extend your Postgres database with superpowers like distributed tables, a distributed SQL query engine, columnar storage, and the ability to use Citus on a single node.

In the Cloud

Convenience trumps all, and many Citus users tell us they would rather focus on their application—and not on managing their database. So Citus is available as a managed service in the cloud with Azure Cosmos DB for PostgreSQL.