Postgres that allows you to scale out horizontally
Citus is a distributed database that extends PostgreSQL, allowing you to continue using all the powerful Postgres features while still scaling.
Whether you're running into a ceiling on a single node, or need more performance for real-time analytical queries Citus can help.
Features
-
Horizontal Scaling
Citus distributes your workload across multiple instances, which you can elastically scale to continue scaling not only storage but also memory and compute.
-
Transparent Sharding
Citus makes it easy to scale by transparently sharding your data across multiple Postgres instances. Choose which data and how you want to shard it, and Citus takes care of the rest for you.
-
Integrations with your Favorite Frameworks
Citus integrates with your favorite frameworks making deployment and getting started as easy as possible.
-
Designed for Multi-tenancy
B2B multi-tenant applications leverage key features in a relational database: transactions, foreign keys, and joins. As your business grows, Citus allows your database to grow with you while enabling you to keep using these key database features.
Benefits
-
Multi-tenant Database
Most B2B applications already have the notion of a tenant in their data model. Citus allows you to scale your database to 100K+ tenants with minimal changes to your application.
-
Real-time
Citus allows you to ingest billions of events per day and provides access to real-time queries and analytics across your entire dataset.
-
Community
Stay on the latest version of PostgreSQL. Citus is not a fork of Postgres, meaning you still get all of the great Postgres features.
-
Run Anywhere
Run Citus either on premises or on the cloud. Citus Cloud plans offer continuous protection, active monitoring, and high availability.
When to Use:
Citus works by allowing you to scale out your data across multiple physical Postgres instances–thus turning your traditional database into a distributed system. Because of the distributed nature some use cases are best suited for Citus. You can read more on how customers are using us today. Some of the common workloads that make sense on when to use Citus include:
- Multi-tenant (B2B) database. Most SaaS databases already have the notion of a tenant or customer built into their data model. Citus provides full SQL coverage for your multi-tenant database and allows transparently scaling your database to hundreds of machines. Citus also manages all your tenants in one distributed database, thereby providing efficient use of hardware resources.
- Real-time analytics and operations combined. Citus allows you perform sub-second scans or aggregations across billions of events while still providing millisecond latency on inserts, upserts, or small look-ups.
- High throughput data ingest. If you have high ingest requirements of 500,000 writes per second, Citus can help by scaling your i/o, compute, and memory resources. Further, Citus gives you the flexibility of semi-structured data types like JSONB. This enables users to combine the power of structured and semi-structured data types within one database.
When Not to Use:
While Citus can be flexible for many workloads, there are often certain workloads that require more work to get the full value of Citus. Some workloads that Citus is not an ideal fit for include:
- No real-time workloads. If your application does not require either real-time ingestion of data and you're not running real-time queries against it, then traditional data warehousing solutions, such as Redshift, may be a better fit.
- Free form SQL by analysts. Because of the distributed nature of Citus some SQL primitives do not map seamlessly. If you have data scientists or end customers that are looking to run free-form SQL, not controlled by an application, then Citus is not an ideal fit for you.
- Drop-in Postgres replacement. Citus extends Postgres by distributing data across many machines. If your workload can be handled within a single machine and you don’t expect your data to grow, PostgreSQL will be a better fit. Or, if you have an existing application relying on Postgres, but you can’t spend time in data modeling, Citus may not work as a drop-in replacement.