Never Worry About Scaling Your Database Again

Citus is an extension to Postgres that intelligently distributes your database & your queries across multiple nodes. However you query and however your data is organized, Citus scales your per-query performance, not just the number of queries you can run. Available as open source, enterprise on-prem software, and as a fully-managed database as a service.

Postgres icon

Power of Worry-Free Postgres

We get that you trust Postgres. So we built Citus as a Postgres extension to stay current with the latest releases. And we built Citus for horizontal scale. With Citus, you get to leverage all your Postgres expertise, use your familiar SQL toolset, and scale out your database.

Citus swirl icon

Scale Out Without Sacrifice

You should not have to re-architect your app when you hit the ceiling on single-node Postgres. Sharding your app and switching to NoSQL both steal time & resources from your core business. Not to mention having to give up SQL. At Citus, we make sharding simple.

Query faster icon

Query Faster Than Any One Server Can

By parallelizing SQL queries across multiple nodes, Citus delivers unparalleled performance. Even with real-time data ingest and sub-second queries across billions of rows of data, with high concurrency. And adding nodes to increase parallelism is as easy as dragging a slider.

Heart icon

Forget About Your Database

We have decades of collective experience managing millions of Postgres databases in the cloud. With our fully-managed database as a service, we carry the pager so you don’t have to. So you can focus on your app and forget about your database.

See How Citus Shards Postgres Across Nodes

SELECT count(*)
  FROM ads JOIN campaigns ON
       ads.company_id = campaigns.company_id
 WHERE ads.designer_name = 'Isaac'
   AND campaigns.company_id = 'Elly Co';
UPDATE campaigns
   SET start_date = '2018-03-17'
 WHERE company_id = 'Pat Co';
  SELECT company_id,
         avg(spend) AS avg_campaign_spend
    FROM campaigns
GROUP BY company_id;
UPDATE campaigns
   SET feedback = 'relevance'
 WHERE company_type = 'platinum';
   SET feedback = 'relevance'
 WHERE company_type = 'platinum';
-- Schema Change

ALTER TABLE campaigns
 ADD COLUMN campaign_type text
CITUS COORDINATOR NODE ME T A D AT A CITUS WORKER NODES W 1 W 2 W 3 W n BEGIN … assign_distributed_ transaction_id … UPDATE campaigns_2001 … COMMIT PREPARED … BEGIN … assign_distributed_ transaction_id … UPDATE campaigns_2017 … COMMIT PREPARED … BEGIN … assign_distributed_ transaction_id … UPDATE campaigns_2009 … COMMIT PREPARED … BEGIN; UPDATE campaigns_2012 SET …; COMMIT; SELECT … FROM ads_1001, campaigns_2001 SELECT company_id, sum(spend), count(spend) … FROM campaigns_2017 … SELECT company_id, sum(spend), count(spend) … FROM campaigns_2001 … SELECT company_id, sum(spend), count(spend) … FROM campaigns_2009 … BEGIN … ALTER TABLE campaigns_2001 … PREPARE TRANSACTION… COMMIT PREPARED… BEGIN … ALTER TABLE campaigns_2017 … PREPARE TRANSACTION… COMMIT PREPARED… BEGIN … ALTER TABLE campaigns_2009 … PREPARE TRANSACTION … COMMIT PREPARED …

All queries to a Citus database cluster are managed by the Citus coordinator node, which looks just like single-node Postgres to the application—modulo the performance benefits from scaling out. The Citus coordinator is equipped with a distributed SQL engine that transforms SQL queries & routes the transformed queries to the correct shards on the correct worker nodes. In this animation, the co-located join and update scenarios are examples of single-tenant SQL queries, hence they only need to query a subset of shards on a subset of the worker nodes. Whereas the distributed aggregate and distributed transaction scenarios need to access shards across multiple nodes.

Scale Out Your Database Without Giving Up Postgres

  • Citus is a PostgreSQL extension and not a fork, in sync with all the latest releases.
  • Leverage your PostgreSQL expertise and all the tools in the Postgres ecosystem.
  • Take advantage of all the innovations in Postgres—including rich data types and extensions like JSONB, PostGIS, HyperLogLog, pg_stat_statements, and full text search.
  • Scale out your database without giving up SQL. You don’t get joins from NoSQL databases. And application-level sharding solutions will not give you joins when you need them.
  • At Citus, we make sharding simple. We’ve done the distributed systems engineering to scale out Postgres without losing the things that make Postgres great. So you can scale out without sacrifice.

Migrating Your Application to Citus

scale-out database icon

No longer do you have to give up the relational benefits of SQL in order to get the performance of a scale-out database. And no longer do you have to redesign your data model and re-architect your SaaS application in order to scale out. Because Citus is an extension to Postgres, Citus works just like Postgres, with support for complex transactions, foreign keys, relationships between models, and joins.

migrate Rails & Django apps icon

Citus works well with most of the popular programming languages, whether Ruby, Python, Java, Node.js, Javascript, Go, C++. And to make it easy for you to migrate your multi-tenant Rails and Django applications to Citus, we’ve created PostgreSQL libraries so your SaaS app should work mostly as-is: an activerecord-multi-tenant gem for Ruby on Rails, and a Python django-multitenant library for Django.

migrate single-node to Citus icon

As for migrating your data from single-node Postgres to Citus, the tools you need depend on the size of your database. For some, pg_dump and pg_restore are sufficient. For others migrating from single-node RDS Postgres to Citus, we’ve created a citus_warp utility that replicates your current database into Citus and keeps the two in sync while you’re getting ready to deploy to production. If you need help figuring out if Citus is right for you and how best to migrate, just contact us and we’ll help figure it out.

Is Citus Right For You?

Citus scales out Postgres horizontally—transforming your favorite relational & open source database into a distributed database. If you’re running into the limits of single-node Postgres, Citus might be right for you. Some common workloads that work well on Citus are:

Multi-Tenant Applications

What happens when your SaaS business becomes an overnight success? The good news is you no longer have to re-architect your app to migrate to NoSQL or to shard your application. Because most SaaS applications already have the notion of a tenant or customer built into their data model, SaaS apps are a good fit for a distributed database like Citus. Citus gives you relational semantics—including ACID transactions and full SQL coverage—and allows you to transparently scale to hundreds of machines.


Real-Time Analytics

Customer-facing analytics dashboards often require sub-second response times. And since so many users query their dashboards at the same time, the ability to support high numbers of concurrent users is important as well. By sharding and parallelizing your SQL queries across multiple nodes, Citus gives you real-time analytics and transactions. So you can perform sub-second scans and aggregations across billions of events, while still providing millisecond latency on inserts, upserts, and small look ups.


When Not To Use Citus—because not all workloads need a powerful, distributed database
  • If single-node Postgres can support your application as-is & you do not expect to grow.
  • If you only need offline analytics & do not need real-time ingest nor real-time queries.
  • If your analytics app does not need to support a large number of concurrent users.

Businesses In These Segments Trust Citus Data

Sales & Marketing icon
Sales & Marketing Automation
E-commerce icon
Web analytics icon
Analytics &
Network security icon
Information & Network Security
Ad networks icon
Finance icon

One Great Database, Three Ways to Get It

Citus Cloud = Fully-Managed Database as a Service

Citus Cloud is our fully-managed database as a service, backed with our expertise monitoring and managing millions of Postgres databases. We carry the pager, so you don’t have to.

Citus Community = Open Source

Citus Community is our open source edition. If you need worry-free Postgres that scales out, download our Citus distributed database and get started today.

Citus Enterprise = On-Prem Software

Citus Enterprise gives you the same awesome scale-out features as our open source edition, plus advanced features like shard rebalancing & tenant isolation.

All the Features You Need in Worry-Free Postgres

Citus Distributed Database Features: Citus Community Citus Cloud Citus Enterprise

Relational database semantics

Citus is Postgres, which means we offer relational database features like ACID transactions, joins, foreign key constraints, and SQL coverage.

Horizontal scalability & sharding

Citus is an extension to Postgres that enables you to scale out Postgres across multiple nodes, giving your Postgres database a much larger memory, compute, and disk footprint than on a single-node. And increasing performance in a big way. At Citus, we like to say that we make sharding simple.

Distributed SQL engine

Distributed query planner and executor that parallelizes queries across shards, enabling massive parallelism and efficient resource utilization.

Extension to Postgres

Citus is not a fork, rather we use PostgreSQL’s extension APIs to scale out. We give you trusted, familiar Postgres.

Rich data types & Postgres extensions

PostgreSQL and Citus support 40+ data types, including semi-structured data types and JSONB. Popular Postgres extensions frequently used with Citus include HyperLogLog (HLL), PostGIS, hstore, pg stat statements, dblink, plpgsql, uuid ossp, ltree, & more.

Flexible deployment options

Citus is available as open source, on-prem enterprise software, and as a fully-managed database as a service.

Compatible with popular programming languages, includes Rails & Django support

Works with Ruby, Python, Java, Node.js, Javascript, Go, C++. And to make it easy to migrate your multi-tenant Rails and Django apps to Citus, we’ve created PostgreSQL libraries: activerecord-multi-tenant gem on Rails, and django-multitenant library for Django.

Distributed transactions

Probabilistic distincts (sketch algorithms)

Fine-grained access controls

High Availability & Streaming Replication

Citus Cloud includes fully automated HA that is managed by the team at Citus; Citus Enterprise includes software features & instructions to implement HA on-prem.

Tenant isolation

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

Citus Support & SLA

Zero-downtime shard rebalancer

When adding nodes to a Citus cluster, the zero-downtime shard rebalancer enables you to redistribute shards across old and new nodes to better balance the data distribution and the performance of your Citus database.

Simple provisioning & easy to scale out

In Citus Cloud, you can setup a cluster in just a few clicks; adding more nodes & increasing memory, compute, and disk is as simple as dragging a slider

Fully-managed database as a service

Citus Cloud is run by a team with decades of collective experience managing millions of Postgres databases in the cloud. Hosted on AWS and available in most AWS regions, Citus Cloud includes automated backups, high availability, point in time recovery, automated health checks, automated monitoring, forks, & followers.

Citus Cloud security suite

Includes 2FA, encryption at rest and in flight, role-based, fine-grained access controls, VPC peering, IP whitelisting, and of course continual review of security vulnerabilities.

Are You Ready to Get Started?