Skip to content

Instantly share code, notes, and snippets.

@cpursley
Last active March 2, 2024 18:39
Star You must be signed in to star a gist
Save cpursley/c8fb81fe8a7e5df038158bdfe0f06dbb to your computer and use it in GitHub Desktop.
Postgres is Enough

PostgreSQL is Enough

Background and Cron Jobs

Message Queues

GIS/Mapping

Audit Logs

Access Control & Authorization

Search

Full Text

Vector

Time Series

Column Oriented

NoSQL

Graph Data

Foreign Data

Alternative Query Langauges

HTTP

APIs

Events, Replication, CDC,

Unit Tests

HTML and Applications

Graphics / Visual

Migrations

Dashboards / UIs

Data Visualization

Package Management

Language Servers

Scalling

Miscellaneous

What's missing? Please share in the comments.

@mvasilkov
Copy link

There's also Apache Age for Graph DB functionality, a la Neo4j.

@raul
Copy link

raul commented Feb 6, 2024

I found https://github.com/purcell/postgresql-migrations useful for code-based database migrations.

@orm011
Copy link

orm011 commented Feb 6, 2024

In case you want to use a self-contained postgres server in a python project, here's a postrgres+pgvector wheel that you can pip install
https://github.com/orm011/pgserver/
The goal is to make it easier to get started using postgres even if you have no admin privileges to run the server system-wide as it is normally run.

@lovasoa
Copy link

lovasoa commented Feb 6, 2024

In the HTML section, you can add SQLPage (https://www.postgresql.org/about/news/announcing-sqlpage-build-dynamic-web-applications-in-sql-2672/) ! It lets you quickly build user interfaces on top of a postgres database.

@stlbucket
Copy link

https://postgraphile.org/

this belongs in the api section, imo

@thomaslillo
Copy link

thomaslillo commented Feb 6, 2024

very cool, thank you for putting this together!

@meekrosoft
Copy link

Any tips on suitability or replacement for documentdb and mongo?

@Amogh-Bharadwaj
Copy link

For CDC, PeerDB is a good option: https://github.com/PeerDB-io/peerdb

@cpursley
Copy link
Author

cpursley commented Feb 6, 2024

@meekrosoft I don't know documentdb so well but jsonb is a very capable replacement for unstructured data. I use it all the time.

@cpursley
Copy link
Author

cpursley commented Feb 6, 2024

@ralyodio I don't know surrealdb - can you sum up its capabilities?

@dr-jts
Copy link

dr-jts commented Feb 6, 2024

For rendering SVG look at pgSVG.

@9mm
Copy link

9mm commented Feb 6, 2024

@seancolsen
Copy link

Within "Dashboards / UIs", it would be great to mention Mathesar — a web based interface specifically tailored for PostgreSQL.

@pashagolub
Copy link

Advanced Scheduler (cron) pg_timetable

@jaimi-taos-wellhealth
Copy link

@kulminaator
Copy link

How about a multimaster cluster where i can upgrade postgres version in rolling node by node upgrades and not resort to ancient methods? How about having a cluster of postgresql machines where i can add/remove nodes, add nodes with new versions and upgrade the whole cluster without downtime? How come mongodb and elastic can do that. Cockroachdb and Yugabyte can do that. But with the classic postgresql I'm back in stone age. Yes some 3rd party clustering methods exist there but they are all s..t on a stick kind of solutions, not proper ones. Not the ones where i could say "hey shard that table into 16 shards for me and have parity over 3 nodes, let me command the shards off a node that i want to maintain".

Don't get me wrong, i have used postgresql for 18 years by now. I love a big bunch of what i can do with it. But managing a high-avialability setup just makes devops cry.

@jherazob
Copy link

jherazob commented Feb 7, 2024

Something missing that at least right now i feel should NOT be in Postgres is secrets management

@cpursley
Copy link
Author

cpursley commented Feb 7, 2024

@jherazob what are you thoughts on this approach?: Supabase Vault

@cpursley
Copy link
Author

cpursley commented Feb 7, 2024

Cockroachdb and Yugabyte can do that

@kulminaator I think you answered your own question; these are pg wire compatible. There's also Citus.

@jherazob
Copy link

jherazob commented Feb 8, 2024

@jherazob what are you thoughts on this approach?: Supabase Vault

I'm only vaguely aware of the existence of Supabase and have never really evaluated it before, so will have to give it a good look before forming an opinion, gut feeling still tells me that secrets on the DB is probably not good but i have to analyze their approach to give it a fair assessment

@arjunlol
Copy link

arjunlol commented Feb 9, 2024

@cpursley something that can be added to Audit Logs: https://github.com/BemiHQ/bemi

@StephanSchmidt
Copy link

StephanSchmidt commented Feb 9, 2024

Great! That this idea is getting traction :-)

@kenfar
Copy link

kenfar commented Feb 12, 2024

This is missing data warehousing, reporting and analytics.

@cpursley
Copy link
Author

@kenfar Any suggestions for those?

@LrWm3
Copy link

LrWm3 commented Feb 12, 2024

@cpursley @kenfar its deprecated but technically tobs can be salveged for this purpose: https://github.com/timescale/tobs

@kenfar
Copy link

kenfar commented Feb 12, 2024

@cpursley - no product is needed, just the right features:

  • partitioning
  • query parallelism
  • dimensional model (rather than say one-big-table)
  • pre-computed aggregate tables for common queries
  • appropriate hardware (sufficient memory, cpu, maybe very fast IO)

This is missing an MPP configuration (data distributed across multiple servers working together on queries), and columnar structures. But, those aren't absolutely essential.

@mjf
Copy link

mjf commented Feb 13, 2024

My Postgres collection, perhaps you'd like to use some of the items as well. Here is my list of Postgres blogs worth visiting regularly.

@cpursley
Copy link
Author

cpursley commented Feb 13, 2024

These are great @mjf, thanks! I added a link under miscellaneous.

@brianheineman
Copy link

brianheineman commented Feb 14, 2024

I've recently put together the Rust crate postgresql-embedded that will allow you to embed PostgreSQL into an executable for use in environments where downloading the installation may not be an option.

@WesleyYue
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment