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.
Elastic scaling of compute
Citus distributes your workload across multiple instances, which you can elastically scale to continue scaling not only storage but also memory and compute.
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.
Dynamic Executors for Operational and Analytics Processing
Citus combines real-time inserts while powering both operational and analytical workloads by distributing the processing using multiple execution models.
Integrated row and columnar storage
Users can use row-based and column-based tables in the same database. Columnar storage enables superior compression and improves the performance of analytic workloads by reducing disk I/O times. Row storage allows Citus to achieve low latency for real-time workloads.
Citus allows you to ingest billions of events per day and provides access to real-time queries and analytics across your entire dataset.
All your data
Citus scaling capabilities allow you to run analytics across your entire dataset in real-time. With Citus there's no longer a need to archive data or provide stale reports to users.
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 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:
- 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 100,000 writes per second or more Citus can help. By de-centralizing your i/o, compute, and memory you're able to receive a high volume of writes while still maintaining indexes on your data in parallel.
- Combining current and historical data Because Citus allows you to scale-out your workload, you're able to store vast amounts of data directly in Citus. When the flexibility of modern datatypes like JSONB coupled with performant indexing via GIN, you're able to combine both structure and semi-structured data while still providing sub-second aggregations and rollups across your data.
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. While Citus extends Postgres, it does this by distributing data across many nodes. To fully leverage this some up front data modeling is usually required, if you have an existing application relying on Postgres but are not able to make an investment in re-exploring how you model your data Citus may not work as a drop-in replacement.