Introducing Citus 6.0 - A database designed for multi-tenancy

Written by Craig Kerstiens
November 14, 2016

Update in October 2022: The Citus managed database service is now available in the cloud as Azure Cosmos DB for PostgreSQL. And as always, the Citus database is also available as open source: you can find the Citus repo on GitHub or download Citus here.

Citus 6.0 allows you to scale out your transactional relational database with minimal changes to your application, thus reducing complexity over other alternatives while still allowing scale. If you're building a multi-tenant application and outgrow a single node Postgres, by sharding based on tenant with Citus 6.0 you can linearly add more memory and processing power to your database without a large re-architecting of your application. You can still maintain referential integrity, and to your application it's still just standard Postgres. We’ll dive into the specifics further, but at a high level Citus 6.0 brings support for:

  • Explicit APIs and performance improvements for co-located data
  • Foreign Key Constraints on co-located tables
  • Distributed roll-ups via INSERT INTO … SELECT
  • Faster DDL changes on distributed tables
  • Postgres 9.6 support
  • Much more

You can get started with Citus 6.0 today on Citus Cloud or give the community edition a try with our Docker image.

Co-located data

For some time now Citus has been able to push-down your queries, when data was joined across two tables and both of those tables resided on the same distributed node, it would be able to perform that join directly on the distributed node. Now this experience becomes simpler and creates an explicit relationship under the covers. When you create new distributed tables that share a shard count and key type these get linked together within the Citus metadata. When you then look to scale out your cluster we ensure these pieces of data are moved at the same time to keep your app operational while data is moved around.

With this new co-location metadata in place you now can use your sharded database more like a single node instance than ever before. With Citus aware of the relationship between tables, we allow you to create foreign keys between them as well, providing you stronger referential integrity for apps that need it.

Flexible analytics with simple roll-ups

For our many customers that provide real-time analytics to their customers, doing so becomes even easier. Now you can easily perform roll-ups on any of the data you've already distributed via INSERT INTO ... SELECT. This means that you don't have to build a complex ETL pipeline, or connect directly to your workers to perform these aggregations in parallel. With your event data distributed across many nodes, you can easily roll them up into pre-aggregated tables, making building applications that provide real-time dashboards simpler than ever before.

Faster DDL changes on distributed tables

Citus supports fully transactional ALTER TABLE statements across shards of a distributed table, enabling you to modify your schema as your application evolves in a simple way. Now with Citus 6.0, you can also perform operations like CREATE INDEX fully in parallel across shards, leveraging more CPU cores and speed as you build and maintain indexes.

Postgres 9.6 is here

We’d be remiss if we didn’t spend some time talking about Postgres 9.6. Citus 6.0 now supports Postgres 9.6 which brings a whole set of exciting features in and of itself. While Postgres 9.6 deserves it’s own full post, there’s already a number that exist that you can take a look at. But, we do want to highlight a few features that make both Postgres, but also Citus even more powerful:

  • Parallel execution of sequential scans, joins and aggregates.
  • Substantial performance improvements
  • And of course many other performance and usability improvements from new index types to new UDFs for JSONB.

Get started today

Get started today by provisioning a dev instance on Citus cloud which comes setup with Citus 6.0 and Postgres 9.6 ready for you to use.

In addition to all of the above there’s much more not mentioned in this new release. You can read about all of the improvements and fixes in this release within our changelog. If you have any questions join the conversation within our slack channel.

Craig Kerstiens

Written by Craig Kerstiens

Former Head of Cloud at Citus Data. Ran product at Heroku Postgres. Countless conference talks on Postgres & Citus. Loves bbq and football.