Hyperscale (Citus) is now available on Azure Database for PostgreSQL. Want to learn more?

Never Worry About Scaling Your Database Again

Citus is an extension to Postgres that transforms Postgres into a distributed database.

SEE HOW

Four Ways to Get Citus

Citus Open Source icon

Citus
Community

Open Source Download

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.

Azure icon

Citus on
Azure

Hyperscale (Citus)

Hyperscale (Citus) is now a deployment option for Azure Database for PostgreSQL, giving you the performance & scale of Citus, fully integrated into the Azure cloud.

Citus DBaaS icon

Citus Cloud on
AWS

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 Enterprise icon

Citus
Enterprise

Enterprise Software

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

See How Citus Shards Postgres Across Nodes

APPLICATION
SELECT count(*)
  FROM ads JOIN campaigns ON
       ads.company_id = campaigns.company_id
 WHERE ads.designer_name = 'Isaac'
   AND campaigns.company_id = 'Elly Co';
APPLICATION
BEGIN;
UPDATE campaigns
   SET start_date = '2018-03-17'
 WHERE company_id = 'Pat Co';
COMMIT;
APPLICATION
  SELECT company_id,
         avg(spend) AS avg_campaign_spend
    FROM campaigns
GROUP BY company_id;
APPLICATION
BEGIN;
UPDATE campaigns
   SET feedback = 'relevance'
 WHERE company_type = 'platinum';
UPDATE ads
   SET feedback = 'relevance'
 WHERE company_type = 'platinum';
COMMIT;
APPLICATION
-- 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.

Why Scale Out Postgres? Performance.

Citus vs. Single-Node Postgres

A side-by-side comparison of Citus vs. single-node Postgres, comparing the performance of CREATE INDEX, data loading, analytical queries, and lookup queries.

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.

LEARN MORE

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.

LEARN MORE

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.

Ready to get started with Citus?

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.

Compare Citus Products

With Citus you have options: open source, a fully-managed database as a service, and enterprise software. Use the comparison table to see what’s right for you.

SEE OUR COMPARISON TABLE

What’s happening with Citus & Microsoft Azure? Sign up to stay in the loop.

Benefits of Scaling Out Postgres with Citus

Postgres icon
Power of Postgres

Citus is a Postgres extension (not a fork), so you can stay current with new releases, use your familiar SQL toolset, & leverage all your Postgres expertise.

Citus swirl icon
Scale Out Without Sacrifice

We make it simple to shard PostgreSQL. So you don’t have to re-architect your app when you hit the ceiling on single-node Postgres.

Query faster icon
Query Faster

By sharding your data & parallelizing SQL across multiple nodes, Citus delivers insanely fast performance. Even with real-time data ingest & billions of rows.

Heart icon
Forget About Your Database

With our fully-managed database as a service, we carry the pager so you don’t have to. And we have decades of collective experience managing Postgres in the cloud.

Distributed database icon
Consolidating Data Stores

A distributed Postgres database like Citus can handle both your analytics & your transactional workloads. Hence the “transactional & analytics” acronym: HTAP.

Are You Ready to Get Started?