Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TODO: Citus support (Postgres sharding) #258

Open
vitabaks opened this issue Feb 22, 2023 · 2 comments
Open

TODO: Citus support (Postgres sharding) #258

vitabaks opened this issue Feb 22, 2023 · 2 comments
Assignees
Labels
enhancement Improvement of the current functionality new feature New functionality priority: low

Comments

@vitabaks
Copy link
Owner

vitabaks commented Feb 22, 2023

With Citus you get distributed Postgres features like sharding, distributed tables, reference tables, a distributed query engine, columnar storage, and the ability to query from any node.

how-citus-scales-out

What is Citus?

Citus is a PostgreSQL extension that transforms Postgres into a distributed database—so you can achieve high performance at any scale.

With Citus, you extend your PostgreSQL database with new superpowers:

  • Distributed tables are sharded across a cluster of PostgreSQL nodes to combine their CPU, memory, storage and I/O capacity.
  • References tables are replicated to all nodes for joins and foreign keys from distributed tables and maximum read performance.
  • Distributed query engine routes and parallelizes SELECT, DML, and other operations on distributed tables across the cluster.
  • Columnar storage compresses data, speeds up scans, and supports fast projections, both on regular and distributed tables.
  • Query from any node enables you to utilize the full capacity of your cluster for distributed queries

You can use these Citus superpowers to make your Postgres database scale-out ready on a single Citus node. Or you can build a large cluster capable of handling high transaction throughputs, especially in multi-tenant apps, run fast analytical queries, and process large amounts of time series or IoT data for real-time analytics. When your data size and volume grow, you can easily add more worker nodes to the cluster and rebalance the shards.

Details:

TODO: Deploy Multi-Node High Availability Citus clusters with Patroni using Ansible.

+ Citus cluster: demo ----------+--------------+---------+----+-----------+
| Group | Member  | Host        | Role         | State   | TL | Lag in MB |
+-------+---------+-------------+--------------+---------+----+-----------+
|     0 | coord1  | 172.27.0.10 | Replica      | running |  1 |         0 |
|     0 | coord2  | 172.27.0.6  | Sync Standby | running |  1 |         0 |
|     0 | coord3  | 172.27.0.4  | Leader       | running |  1 |           |
|     1 | work1-1 | 172.27.0.8  | Sync Standby | running |  1 |         0 |
|     1 | work1-2 | 172.27.0.2  | Leader       | running |  1 |           |
|     2 | work2-1 | 172.27.0.5  | Sync Standby | running |  1 |         0 |
|     2 | work2-2 | 172.27.0.7  | Leader       | running |  1 |           |
+-------+---------+-------------+--------------+---------+----+-----------+

Consider sponsoring the project via GitHub or Patreon

@vitabaks vitabaks self-assigned this Feb 22, 2023
@vitabaks vitabaks added the enhancement Improvement of the current functionality label Feb 22, 2023
@vitabaks
Copy link
Owner Author

vitabaks commented Mar 9, 2023

https://www.citusdata.com/blog/2023/03/06/patroni-3-0-and-citus-scalable-ha-postgres

@vitabaks
Copy link
Owner Author

vitabaks commented Sep 4, 2024

If you're interested in this feature, please consider becoming a sponsor.

The development of this feature requires sponsorship to fund developer efforts. If you're already a sponsor and are interested in this feature, please leave a comment here so we can prioritize this issue accordingly.

We also welcome contributions from those willing to dedicate their time to implement this feature on a voluntary basis. Please see the Contributing Guide for more information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Improvement of the current functionality new feature New functionality priority: low
Projects
None yet
Development

No branches or pull requests

2 participants
@vitabaks and others