We want to achieve to a great layer over PostgreSQL, with caching, advanced user management and master/replica load balancing.
We do not recommend to use this project right now wait for this issue to get done
- Parsing Query and checking relation info
- Caching (By understanding the type of the query)
- User Management (only yaml provider)
- LoadBalancing (By query type [read/write])
- Automatic master/slave detection
First of all, That's funny and I want to learn how PostgreSQL works (as for connections)
As for User management goes, This project is usefull when you want to manage users with a centeral DB (like OpenLDAP, or a centeral yaml
file) I only found Squarespace/pgbedrock but it's inactive for 3 years... Also I want to manage users without postgresql itself ;)
As for loadbalancing goes that's great to loadbalance connections to servers in a smart way (By understanding what is the query)
For caching I want to make it posible to use any kind of caching for your database, since postgresql caching parameters are so hard to configure them in a good way.
When project starts it will make a connection pool to each server that is listed in the config.yaml
file
when a quey comes, it will parse given query, then it will return an error to user (if there is any error within the query)
we will select one of the servers to loadbalance between them
Checkout config.yaml
file this file could be in one of theas directories:
- /etc/pg_pro/
- $HOME/.pg_pro
- $PWD
a Working go environment
you have to set CGO_ENABLED=1
, since we are using pganalyze/pg_query_go to parse queries
I would recommend to use cosmtrek/air for hot reloading and having up-to-data go build
options
or you can just use docker
to build/deploy the project