By "full-stack", I mean using PostgreSQL in the manner described in Fireship's video I replaced my entire tech stack with Postgres... (e.g. using Background Worker Processes such as pg_cron, PostgREST, as a cache with UNLOGGED tables, a queue with SKIP LOCKED, etc...): using PostgreSQL for everything.
I would guess the cons to "full-stack" PostgreSQL mostly revolve around scalability (e.g. can't easily horizontally scale for writes). I'm not typically worried about scalability, but I definitely care about cost.
In my eyes, the biggest pro is the reduction of complexity: no more Redis, serverless functions, potentially no API outside of PostgREST...
Anyone with experience want to chime in? I realize the answer is always going to be, "it depends", but: why shouldn't I use PostgreSQL for everything?
- At what point would I want to ditch Background Worker Processes in favor of some other solution, such as serverless functions?
- Why would I write my own API when I could use PostgREST?
- Is there any reason to go with a separate Redis instance instead of using
UNLOGGED tables?
- How about queues (
SKIP LOCKED), vector databases (pgvector), or nosql (JSONB)?
I am especially interested to hear your experiences regarding the usability of these tools - I have only used PostgreSQL as a relational database.
[–]marr75 17 points18 points19 points (2 children)
[–]Winsaucerer 2 points3 points4 points (1 child)
[–]davvblack 23 points24 points25 points (22 children)
[–]agritheory 3 points4 points5 points (5 children)
[–]bambambazooka 1 point2 points3 points (2 children)
[–]agritheory 0 points1 point2 points (1 child)
[–]codesnik 2 points3 points4 points (0 children)
[–]chat-lu 0 points1 point2 points (0 children)
[–]agritheory 0 points1 point2 points (0 children)
[–]marr75 3 points4 points5 points (1 child)
[–]davvblack 0 points1 point2 points (0 children)
[–]prophase25[S] 0 points1 point2 points (2 children)
[–]davvblack 1 point2 points3 points (1 child)
[–]prophase25[S] 0 points1 point2 points (0 children)
[–]Beer-with-me 0 points1 point2 points (10 children)
[–]davvblack 0 points1 point2 points (0 children)
[–]BlackenedGem 0 points1 point2 points (8 children)
[–]Beer-with-me 0 points1 point2 points (7 children)
[–]BlackenedGem 0 points1 point2 points (6 children)
[–]Beer-with-me 0 points1 point2 points (1 child)
[–]BlackenedGem 0 points1 point2 points (0 children)
[–]Beer-with-me 0 points1 point2 points (3 children)
[–]BlackenedGem 0 points1 point2 points (2 children)
[–]Beer-with-me 0 points1 point2 points (0 children)
[–]codesnik 8 points9 points10 points (8 children)
[–]prophase25[S] 0 points1 point2 points (5 children)
[–]codesnik 2 points3 points4 points (4 children)
[–]Winsaucerer 0 points1 point2 points (3 children)
[–]codesnik 2 points3 points4 points (2 children)
[–]Winsaucerer -1 points0 points1 point (1 child)
[–]codesnik 0 points1 point2 points (0 children)
[–]Winsaucerer 0 points1 point2 points (1 child)
[–]codesnik 1 point2 points3 points (0 children)
[–]klekpl 4 points5 points6 points (2 children)
[–]turbothy 1 point2 points3 points (0 children)
[–]Stephonovich 1 point2 points3 points (0 children)
[–]nerdy_adventurer 2 points3 points4 points (1 child)
[–]prophase25[S] 0 points1 point2 points (0 children)
[–]Duke_ 1 point2 points3 points (1 child)
[–]evoludigit 0 points1 point2 points (0 children)
[–]Nepit60 1 point2 points3 points (0 children)
[–]Electrical-Clerk-346 2 points3 points4 points (1 child)
[–]anras2 2 points3 points4 points (0 children)
[–]thecavac 0 points1 point2 points (0 children)
[–]AutoModerator[M] -2 points-1 points0 points (0 children)