odyssey
pgcat
Our great sponsors
odyssey | pgcat | |
---|---|---|
14 | 9 | |
3,098 | 1,511 | |
0.9% | - | |
8.4 | 9.6 | |
2 days ago | about 1 year ago | |
C | Rust | |
BSD 3-clause "New" or "Revised" License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
odyssey
- Open sourcing our fork of PgBouncer
-
The C++ Asynchronous Framework
This is /extremely/ uncharitable. It depends more on the project.
For example, both Go and .NET are very well written with comprehensible documentation. Many projects have also been absorbed by the Apache Foundation or other FOSS initiatives.
Every FANG has boat loads of teams working on umpteen different open source packages. The quality naturally varies.
Let me pick two more esoteric projects as a point of comparison.
Yandex Odyssey (https://github.com/yandex/odyssey) an advanced multi-threaded PostgreSQL connection pooler and request router. Figuring out how exactly and when to use this is not quite clear. There is no "getting started" guide for this package. There is barely any explanation for how it works or what it does.
pg_auto_failover (https://github.com/citusdata/pg_auto_failover) run by Citus (owned by Microsoft) monitors and manages automated failover for a Postgres cluster. This repo even has diagrams explaining the workflow and complete instructions.
-
Postgres Connection Pooling and Proxies
Odyssey, developed by Yandex, is a newer solution for pooling. While Pgbouncer is a single-threaded pooler, Odyssey supports multi-core and multi-threaded processing. The tool has the following features:
- PgCat: Postgres pooler with sharding, load balancing and failover support
- GitHub - yandex/odyssey: Scalable PostgreSQL connection pooler
- Scalable PostgreSQL connection pooler
- yandex/odyssey: Scalable PostgreSQL connection pooler - Advanced multi-threaded PostgreSQL connection pooler and request router.
- Scalable PostgreSQL Connection Pooler
pgcat
-
PostgreSQL with PGBouncer
You should check out https://github.com/levkk/pgcat
-
pgcat: a PostgreSQL pooler
I created a pool called "yugabyte" (pools.yugabyte), with pool mode 'session', so that a session remains connected to a backend. I created a pool of servers in pools.yugabyte.shards.0 (yugabyte shards pool 0), with all three of the YSQL nodes in the YugabyteDB cluster, and gave one the role of "primary" and the two others the role of "replica". For YugabyteDB YSQL this does not make sense. Currently, pgcat allows to have the roles to be all "replica", but not have more than one "primary".
-
Postgres Connection Pooling and Proxies
pgcat is pgbouncer rewritten in Rust with support for load balancing between replicas, failover in case a replica fails a health check, and sharding at the pooler level.
- pgcat - PgBouncer rewritten in Rust, with sharding, load balancing and failover support.
- Show HN: PgCat, Postgres pooler with sharding, load balancing and failover
-
Hacker News top posts: Feb 9, 2022
Show HN: PgCat, Postgres pooler with sharding, load balancing and failover\ (38 comments)
-
PgCat: Postgres pooler with sharding, load balancing and failover support
This is actually pretty amazing. I wouldn't normally trust a single author implemented project to sit between my application and my database, since that is a rather critical single point of failure. However, a grep that fails to find `unsafe` in a rust code base lets me know that this code is in fact pretty safe[1]. I don't need to trust the author, as much as I trust the Rust core team, and LLVM.
Since I can see basic functionality exercised in the test suites, and trust that Rust has validated its more general correctness, this gives me more confidence in your project than I would historically expect to be able to gather in such a short amount of time.
1: https://github.com/levkk/pgcat/search?q=unsafe
What are some alternatives?
pgbouncer - lightweight connection pooler for PostgreSQL
pgbouncer-fast-switchover - Adds query routing and rewriting extensions to pgbouncer
cloudpilot-emu - A PalmOS emulator for the web
pgcat - PostgreSQL pooler with sharding, load balancing and failover support.
pgcat - Enhanced PostgreSQL logical replication
pgagroal - High-performance connection pool for PostgreSQL
pgbouncer_exporter - Prometheus exporter for PgBouncer
PostgreSQL - Mirror of the official PostgreSQL GIT repository. Note that this is just a *mirror* - we don't work with pull requests on github. To contribute, please see https://wiki.postgresql.org/wiki/Submitting_a_Patch
catfs - Cache AnyThing filesystem written in Rust
pgjdbc - Postgresql JDBC Driver