<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/just-use-postgres--c90ppdw4c" -->

---
title: Just Use Postgres! | daily.dev
description: A comprehensive review of Denis Magda&#x27;s book covering PostgreSQL&#x27;s capabilities beyond traditional relational features. The 402-page guide explores core...
canonical: https://daily.dev/posts/just-use-postgres--c90ppdw4c
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Just Use Postgres! | daily.dev
og:description: A comprehensive review of Denis Magda&#x27;s book covering PostgreSQL&#x27;s capabilities beyond traditional relational features. The 402-page guide explores core...
og:url: https://daily.dev/posts/just-use-postgres--c90ppdw4c
og:image: https://api.daily.dev/og/posts/c90PpDw4C.png
og:image:alt: Just Use Postgres!
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Just Use Postgres!

**[Vlad Mihalcea](https://daily.dev/sources/vladmihalcea)** · 4 min read · 255 upvotes · 24 comments

## Summary

A comprehensive review of Denis Magda's book covering PostgreSQL's capabilities beyond traditional relational features. The 402-page guide explores core database concepts like indexing (B+Tree, hash, partial), transactions, and modern SQL features (CTEs, window functions), then dives into non-relational capabilities including JSON storage and full-text search. The book examines PostgreSQL's extension ecosystem: pgvector for ML/GenAI embeddings, TimescaleDB for time series data, PostGIS for geospatial queries, and pgmq for message queues. Includes performance tuning guidance and discusses when PostgreSQL might not be the right choice.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://vladmihalcea.com/book-review-just-use-postgres/>

## Community discussion

Top comments from developers on daily.dev.

**@andrewvaz** · 9 upvotes

> This is something I have been saying for some time already. Why spread your data across multiple platforms? Some say security. I personally prefer making my platform redundant and hardened. If something goes wrong it's easier to find the problem and fix it, everything is in one place.

**@crossplatform** · 5 upvotes

> Postgres is not good enough for development.

**@pozda** · 5 upvotes

> i used a lot of different databases, Postgresql is the most complete one but not a golden hammer, i have an app where i use PocketBase and that's perfect choice for the requirements of the project.
>
> Use the database that is good enough to run your project without hiccups, don't use tank to kill a fly.
>
> and MOST important advice - don't optimize for scaling early

**@saumyajain21** · 2 upvotes

> So recently been using mongo, and this seems so weird and lots of issue are just because a new field was introduced later without proper migrations and data seeding. I know its the fault of developers, but it would be pretty hard for them to mess this much in the postgres environment.

**@a\_meb\_a** · 1 upvotes

> great

## Similar posts on daily.dev

- [It’s 2026, Just Use Postgres](https://daily.dev/posts/it-s-2026-just-use-postgres-qtm7zngdf) · Hacker News · 374 upvotes · 23 comments

---

Tags: [#performance](https://daily.dev/tags/performance), [#database](https://daily.dev/tags/database), [#backend](https://daily.dev/tags/backend), [#sql](https://daily.dev/tags/sql), [#postgresql](https://daily.dev/tags/postgresql)

[View this post on daily.dev](https://daily.dev/posts/just-use-postgres--c90ppdw4c)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Just Use Postgres!","url":"https://daily.dev/posts/just-use-postgres--c90ppdw4c","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/just-use-postgres--c90ppdw4c"},"datePublished":"2025-11-24T09:04:33.214Z","dateModified":"2025-11-24T09:04:53.662Z","description":"A comprehensive review of Denis Magda's book covering PostgreSQL's capabilities beyond traditional relational features. The 402-page guide explores core...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/b3fa4cd49537d4fd7c59f3765dbb8992?_a=AQAEulh","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/b3fa4cd49537d4fd7c59f3765dbb8992?_a=AQAEulh","isAccessibleForFree":true,"articleSection":"Vlad Mihalcea","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Vlad Mihalcea","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/5dd0066095304e2ea086956d3ed96c1b","url":"https://daily.dev/sources/vladmihalcea"},"commentCount":24,"discussionUrl":"https://daily.dev/posts/just-use-postgres--c90ppdw4c","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":255},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":24}],"keywords":"performance,database,backend,sql,postgresql","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Vlad Mihalcea","item":"https://daily.dev/sources/vladmihalcea"},{"@type":"ListItem","position":3,"name":"Just Use Postgres!"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/just-use-postgres--c90ppdw4c","comment":[{"@type":"Comment","text":"This is something I have been saying for some time already. Why spread your data across multiple platforms? Some say security. I personally prefer making my platform redundant and hardened. If something goes wrong it’s easier to find the problem and fix it, everything is in one place.","datePublished":"2025-11-25T13:58:10.074Z","url":"https://daily.dev/posts/c90PpDw4C#c-MBsFINqHJ","author":{"@type":"Person","name":"Andrew Vaz","url":"https://daily.dev/andrewvaz","image":"https://lh3.googleusercontent.com/a/ACg8ocJ6KlvjV2AlNuC438nFoPIx826S9B2Cfv3V5zjmCDWwCeTcke0=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":9}},{"@type":"Comment","text":"Postgres is not good enough for development.","datePublished":"2025-11-25T05:22:40.982Z","url":"https://daily.dev/posts/c90PpDw4C#c-tAhA8EkbI","author":{"@type":"Person","name":"Volodymyr Hoida","url":"https://daily.dev/crossplatform","image":"https://media.daily.dev/image/upload/s--mecc21JQ--/f_auto/v1777930646/avatars/avatar_oFvh25hEfEcJLoQ3TZnTq?_a=BAMAMiWQ0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":5}},{"@type":"Comment","text":"i used a lot of different databases, Postgresql is the most complete one but not a golden hammer, i have an app where i use PocketBase and that’s perfect choice for the requirements of the project.\nUse the database that is good enough to run your project without hiccups, don’t use tank to kill a fly.\nand MOST important advice - don’t optimize for scaling early","datePublished":"2025-12-03T11:07:54.219Z","url":"https://daily.dev/posts/c90PpDw4C#c-LQmZsbCWp","author":{"@type":"Person","name":"Ivan Pozderac","url":"https://daily.dev/pozda","image":"https://media.daily.dev/image/upload/s--TXWPZECX--/f_auto/v1709771359/avatars/avatar_DXQoaoUnUwOKEL06n9OtF"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":5}},{"@type":"Comment","text":"So recently been using mongo, and this seems so weird and lots of issue are just because a new field was introduced later without proper migrations and data seeding. I know its the fault of developers, but it would be pretty hard for them to mess this much in the postgres environment.","datePublished":"2025-11-28T10:40:27.579Z","url":"https://daily.dev/posts/c90PpDw4C#c-oouTwMp3O","author":{"@type":"Person","name":"Saumya Jain","url":"https://daily.dev/saumyajain21","image":"https://avatars.githubusercontent.com/u/61699679?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}},{"@type":"Comment","text":"great","datePublished":"2025-12-01T11:13:35.423Z","url":"https://daily.dev/posts/c90PpDw4C#c-8BORJ4z3B","author":{"@type":"Person","name":"Phillippe Michel Weir","url":"https://daily.dev/a_meb_a","image":"https://media.daily.dev/image/upload/s--BwH-uTMq--/f_auto/v1740136991/avatars/avatar_N403VFK9lAHNRwlSAhl1h"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}}]}
```

