1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-06-30 22:33:49 +02:00
Files
go-micro/store/postgres/pgx
Brian Ketelsen ddc34801ee Plugins and profiles (#2764)
* feat: more plugins

* chore(ci): split out benchmarks

Attempt to resolve too many open files in ci

* chore(ci): split out benchmarks

* fix(ci): Attempt to resolve too many open files in ci

* fix: set DefaultX for cli flag and service option

* fix: restore http broker

* fix: default http broker

* feat: full nats profile

* chore: still ugly, not ready

* fix: better initialization for profiles

* fix(tests): comment out flaky listen tests

* fix: disable benchmarks on gha

* chore: cleanup, comments

* chore: add nats config source
2025-05-20 13:24:06 -04:00
..
2025-05-20 13:24:06 -04:00
2025-05-20 13:24:06 -04:00
2025-05-20 13:24:06 -04:00
2025-05-20 13:24:06 -04:00
2025-05-20 13:24:06 -04:00
2025-05-20 13:24:06 -04:00
2025-05-20 13:24:06 -04:00

Postgres pgx plugin

This module implements a Postgres implementation of the micro store interface. It uses modern https://github.com/jackc/pgx driver to access Postgres.

Implementation notes

Concepts

Every database has they own connection pool. Due to the way connections are handled this means that all micro "databases" and "tables" can be stored under a single or several Postgres database as specified in the connection string (https://www.postgresql.org/docs/8.1/ddl-schemas.html). The mapping of micro to Postgres concepts is:

  • micro database => Postgres schema
  • micro table => Postgres table

Expiry

Expiry is managed by an expiry column in the table. A record's expiry is specified in the column and when a record is read the expiry field is first checked, only returning the record if it's still valid otherwise it's deleted. A maintenance loop also periodically runs to delete any rows that have expired.