{"repo":"mkleczek/pgwrh","free":true,"listed":false,"github":"https://github.com/mkleczek/pgwrh","clone":"git clone https://github.com/mkleczek/pgwrh.git","description":"Simple PostgreSQL sharding using logical replication and postgres_fdw","language":"PLpgSQL","stars":23,"topics":["postgresql","scale-out","sharding"],"license":"AGPL-3.0","category":"databases-storage","readme_excerpt":"pgwrh An extension implementing sharding for PostgreSQL based on logical replication and postgres fdw. The goal is to scale read queries overcoming main limitation of traditional setups based on streaming replication and hot standbys: lack of sharding and large storage requirements. See Architecture for more information on inner workings. :warning: WIP : readme might be incomplete and contain mistakes in usage instrutions (as the API is still changing) Features Horizontal Scalability and High Availability No need for rebalancing Setting up and maintaining a highly available cluster of sharded storage servers is inherently tricky, especially during changes to cluster topology. Adding a new replica often requires rebalancing (ie. reorganizing data placement among replicas). pgwrh minimizes the need to copy data by utilizing Weighted Randezvous Hashing algorithm to distribute shards among replicas. Adding replicas never requires moving data between existing ones. Data redundancy pgwrh maintains requested level of redundancy of shard data. Administrator can specify: the percentage of replicas to host each shard the minimum number of copies of any shard (regardless of the percentage setting above) So it is possible to implement policies like: \"Shards X, Y, Z should be distributed among 20% of replicas in the cluster, but in no fewer than 2 copies\" . Availability zones Replicas can be assigned to availability zones and pgwrh ensures shard copies are distributed evenly across all of","default_branch":null,"files":null,"tree":[],"storefront":"/r/mkleczek","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mkleczek/pgwrh/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}