<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/tags/postgresql/best-of/2026/03" -->

---
title: Best PostgreSQL posts — March 2026 | daily.dev
description: The most upvoted PostgreSQL posts from March 2026, curated by the daily.dev community.
canonical: https://daily.dev/tags/postgresql/best-of/2026/03
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/tags/postgresql/best-of/2026/03
og:type: website
og:site_name: daily.dev
og:title: Best PostgreSQL posts — March 2026 | daily.dev
og:description: The most upvoted PostgreSQL posts from March 2026, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of PostgreSQL — March 2026

1. 1  
[](https://daily.dev/posts/netflix-automates-rds-postgresql-to-aurora-postgresql-migration-across-400-production-clusters-gz0lmzjax "Netflix Automates RDS PostgreSQL to Aurora PostgreSQL Migration Across 400 Production Clusters")  
Article  
![Avatar of infoq](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/afc3bced3e1e4b188dd9127017a60e0c)InfoQ · 27w  
Netflix Automates RDS PostgreSQL to Aurora PostgreSQL Migration Across 400 Production Clusters  
Netflix built an internal automation platform to migrate nearly 400 RDS PostgreSQL production clusters to Amazon Aurora PostgreSQL with minimal downtime. The system uses a self-service workflow that handles physical read replica creation from storage snapshots, WAL replication validation, CDC slot coordination, controlled quiescence and cutover, and rollback safeguards. Because Netflix routes all database access through an Envoy-based data access layer that abstracts endpoints from application code, migrations happen transparently at the infrastructure level. A real-world case study shows how the team resolved an elevated OldestReplicationSlotLag caused by a stale logical replication slot before completing a successful migration for device certification and partner billing workloads.  
47
2. 2  
[](https://daily.dev/posts/autobase-2-6-0-released-wav9iwdjt "Autobase 2.6.0 released")  
Article  
![Avatar of postgres](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/8dab534748a94108858df41b7ef7fe86)PostgreSQL · 28w  
Autobase 2.6.0 released  
Autobase 2.6.0 introduces a blue-green deployment workflow for PostgreSQL clusters, enabling near-zero downtime upgrades. Users can prepare a fully upgraded cluster in advance, then switch traffic in seconds. Rollback is equally fast and lossless thanks to reverse logical replication. Autobase is an open-source DBaaS alternative that automates deployment, failover, backups, restores, upgrades, and scaling without requiring deep DBA expertise.  
48
3. 3  
[](https://daily.dev/posts/pgit-what-if-your-git-history-was-a-sql-database--k2mbbtlm1 "pgit: What If Your Git History Was a SQL Database?")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 26w  
pgit: What If Your Git History Was a SQL Database?  
pgit is a Git-like CLI that stores repository history in PostgreSQL using delta compression via a custom Table Access Method (pg-xpatch). It lets you query your entire commit history with SQL and provides built-in analyses for churn, coupling, hotspots, bus factor, and activity. Benchmarked against 20 real repositories (273k commits), pgit outcompresses \`git gc --aggressive\` on 12 out of 20 repos. The tool also works well as an interface for AI agents: a Claude agent produced a full codebase health report on Neon's repo in under 10 minutes using a 4-sentence prompt. pgit is not meant to replace git for daily workflows but excels at programmatic codebase history analysis.  
44
4. 4  
[](https://daily.dev/posts/kdwarn-introducing-pgtui-a-postgres-tui-client-ye5vxg4ar "kdwarn: Introducing pgtui, a Postgres TUI client")  
Article  
![Avatar of lobsters](https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg)Lobsters · 26w  
kdwarn: Introducing pgtui, a Postgres TUI client  
pgtui is a Postgres TUI client written in Rust that lets users interact with a PostgreSQL database from the terminal. Built with ratatui, sqlx, and the toml crate, it supports browsing relations, paginated data viewing, sorting, filtering with WHERE clauses, inserting and editing records via a terminal editor, deleting records, multi-column primary key support, and managing multiple database connections. The project originated from the idea of writing content in TOML/markdown and storing it in a database.  
30  
1
5. 5  
[](https://daily.dev/posts/an-introduction-to-database-system-design-yqoe7mogi "An Introduction to Database System Design")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 25w  
An Introduction to Database System Design  
A beginner-friendly introduction to database system design covering core concepts and practical implementation. Topics include the components of a database system, types of databases (relational, NoSQL, cloud, etc.), the four stages of database design (requirements analysis, conceptual, logical, physical), and normalization through the first three normal forms. A hands-on section walks through designing a library database using PostgreSQL and pgAdmin 4, with SQL examples for creating tables with primary/foreign keys, inserting data, and querying with SELECT, WHERE, and JOIN.  
55
6. 6  
[](https://daily.dev/posts/waiting-for-postgresql-19-introduce-the-repack-command-select-from-depesz--naffqzlbk "Waiting for PostgreSQL 19 – Introduce the REPACK command – select * from depesz;")  
Article  
![Avatar of depesz](https://media.daily.dev/image/upload/s--ir7juGOi--/f_auto/v1758461024/logos/depesz)depesz · 26w  
Waiting for PostgreSQL 19 – Introduce the REPACK command – select \* from depesz;  
PostgreSQL 19 introduces a new built-in REPACK command that consolidates the functionality of VACUUM FULL and CLUSTER into a single, cleaner command. It rewrites a table to reclaim disk space from bloat, supports ordering by a specified index, and includes a new progress view (pg\_stat\_progress\_repack). Currently it acquires the same locks as VACUUM FULL, but the design explicitly paves the way for a future CONCURRENTLY mode. Practical examples show an 8.5GB bloated table reduced to \~1.6GB after deleting 80% of rows and running REPACK. Supported options include VERBOSE and ANALYZE, with the ability to analyze specific columns.  
27
7. 7  
[](https://daily.dev/posts/the-real-cost-of-random-i-o-b3khnmb6n "The real cost of random I/O")  
Article  
![Avatar of lobsters](https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg)Lobsters · 28w  
The real cost of random I/O  
PostgreSQL's \`random\_page\_cost\` has been set to 4.0 by default for \~25 years, but experiments on modern SSDs show the actual cost ratio of random vs. sequential I/O is closer to 25-35x, not 4x. This means the planner picks suboptimal plans (sequential scan instead of index scan) for selectivities between 0.2% and 2.2%. Setting \`random\_page\_cost\` to \~30 aligns cost estimates with actual durations. However, lowering the value can still be justified in OLTP workloads with high cache hit rates, where random I/O avoids expensive full table scans. A complicating factor is that prefetching (which benefits sequential and bitmap scans but not index scans) interacts with \`random\_page\_cost\` in non-obvious ways, and the current cost model ignores prefetching entirely. Proposed improvements include separating non-I/O costs from \`random\_page\_cost\`, better cache statistics, and incorporating prefetching into the cost model.  
26
8. 8  
[](https://daily.dev/posts/supabase-joins-the-stripe-projects-developer-preview-ypiackz6j "Supabase joins the Stripe Projects developer preview")  
Article  
![Avatar of supabase](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/d0aa77cfb88d44dd8e6d5cd02fdf80bd)Supabase · 26w  
Supabase joins the Stripe Projects developer preview  
Supabase has joined the Stripe Projects developer preview as a co-design partner. Stripe Projects is a new Stripe CLI workflow that lets developers and AI agents provision real services with a single command. Running one command provisions a full Supabase project including Postgres, Auth, Storage, Edge Functions, and Realtime, with credentials automatically written to a local .env file. The integration is deterministic and repeatable, designed to work for both humans and AI agents that cannot interact with browser-based dashboards. Users retain full ownership of their Supabase account and data, and can rotate credentials at any time.  
28  
1
9. 9  
[](https://daily.dev/posts/from-md5-to-scram-the-next-security-shift-in-postgresql-nekgwu5a0 "From MD5 to Scram: The next security shift in PostgreSQL")  
Article  
![Avatar of cybertec_postgresql](https://media.daily.dev/image/upload/s--T-0b7qSy--/f_auto/v1720886268/logos/cybertec_postgresql)CYBERTEC PostgreSQL · 26w  
From MD5 to Scram: The next security shift in PostgreSQL  
PostgreSQL 18 deprecates MD5 password encryption by issuing warnings whenever a user is created or altered with MD5-encrypted passwords. A new GUC parameter \`md5\_password\_warnings\` (default: on) controls these warnings. MD5 support is expected to be fully removed in a future release. The recommended replacement is scram-sha-256, which has been the default \`password\_encryption\` setting for several versions already.  
21
10. 10  
[](https://daily.dev/posts/managed-databases-are-now-available-in-laravel-forge-hxuqcatz7 "Managed Databases Are Now Available in Laravel Forge")  
Article  
![Avatar of laravel](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/1f77002e78e1486ab699e1b8e03d7fd2)Laravel · 26w  
Managed Databases Are Now Available in Laravel Forge  
Laravel Forge now offers fully managed PostgreSQL clusters provisioned directly from the Forge dashboard. Features include automated daily backups, point-in-time recovery (7-day window), high availability with 99.95% uptime SLA, read replicas, real-time monitoring, and configurable maintenance windows. Clusters are billed hourly with costs based on compute size, storage, and whether high availability is enabled. Managed databases integrate with existing Forge servers via private networking or optional public access, eliminating the need for separate database provider accounts.  
20
11. 11  
[](https://daily.dev/posts/why-i-as-someone-who-likes-mysql-now-want-to-recommend-postgresql-wp1hsdggg "Why I, as Someone Who Likes MySQL, Now Want to Recommend PostgreSQL")  
Article  
![Avatar of devto](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/devto)DEV · 26w  
Why I, as Someone Who Likes MySQL, Now Want to Recommend PostgreSQL  
A long-time MySQL user explains why they now recommend PostgreSQL for new projects. The post acknowledges that many historical PostgreSQL weaknesses (VACUUM complexity, DDL operations, replication) have become less relevant in the managed cloud era. It then details concrete application-level advantages PostgreSQL still holds: ON CONFLICT DO NOTHING vs INSERT IGNORE, the RETURNING clause for getting back changed rows, more natural VALUES usage in JOINs and UPDATEs, window functions in update processing via CTEs, partial indexes, deferred foreign key constraints, pgvector support, and simpler character set/collation handling. The conclusion is not that MySQL is bad, but that PostgreSQL offers clearer advantages for application implementation today.  
19  
3
12. 12  
[](https://daily.dev/posts/model-withoutrelation-in-laravel-12-54-0-utyyasdyi "Model::withoutRelation() in Laravel 12.54.0")  
Article  
![Avatar of ln](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ln)Laravel News · 27w  
Model::withoutRelation() in Laravel 12.54.0  
Laravel 12.54.0 ships several new features and bug fixes. The headline addition is Model::withoutRelation(), which clones a model with specific relations removed without mutating the original — useful for serialization, queued jobs, and circular reference handling. Other additions include an interval() method on InteractsWithData for parsing duration inputs into CarbonInterval, improved Response::dump() output that now includes request method, URL, and status code, BinaryFileResponse assertion support in HTTP tests, queue:monitor showing oldest pending job age in standard output, custom CommonMark extensions for mail Markdown rendering, a composite index on the jobs table for better queue polling performance, and native tsvector column type support in the PostgreSQL schema builder. Bug fixes cover queue deadlocks, database migration edge cases, URL validation for punycode subdomains, filesystem permission issues, and a CommonMark security update.  
17
13. 13  
[](https://daily.dev/posts/i-built-a-demo-showing-how-singleflight-reduced-our-database-load-by-97-during-a-cache-stampede-ajcarecvb "I built a demo showing how singleflight reduced our database load by 97% during a cache stampede")  
Article  
![Avatar of kgtashohakjtdfa49s0ru](https://media.daily.dev/image/upload/s--YH0IUQxf--/f_auto/v1731052430/avatars/avatar_kgTaShoHaKjTDfa49S0ru)Augustus Nguyen · 28w  
I built a demo showing how singleflight reduced our database load by 97% during a cache stampede  
A Redis connection blip caused 200 concurrent requests to bypass cache and hit PostgreSQL directly. The solution was the singleflight pattern from golang.org/x/sync/singleflight, which deduplicates concurrent identical requests so only one hits the database. A runnable demo is provided with a full Docker Compose stack including PostgreSQL, Redis, Prometheus, and Grafana, plus a load test script. Results show \~97% cache hit rate with only \~220 DB queries out of \~7,500 total requests.  
17  
4
14. 14  
[](https://daily.dev/posts/how-to-work-with-dapper-in-net-yzgrlyllb "How to Work With Dapper in .Net")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 25w  
How to Work With Dapper in .Net  
A hands-on guide to using Dapper, a micro-ORM for .NET, to build a Web API backed by PostgreSQL. Covers installation, database seeding, the repository pattern, CRUD operations (query, insert, update, delete), SQL injection protection via parameterisation, batch deletes, transactions, and multi-mapping for JOIN queries. Compares Dapper to Entity Framework, highlighting trade-offs between development speed and execution performance.  
17
15. 15  
[](https://daily.dev/posts/pgdsat-version-2-0-has-been-released-yosbjkrbk "pgdsat version 2.0 has been released")  
Article  
![Avatar of postgres](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/8dab534748a94108858df41b7ef7fe86)PostgreSQL · 28w  
pgdsat version 2.0 has been released  
pgdsat 2.0, an open-source PostgreSQL Database Security Assessment Tool, has been released. It checks around 90 PostgreSQL security controls, including all recommendations from the CIS compliance benchmark. Version 2.0 adds 13 new security checks aligned with the CIS Benchmark for PostgreSQL 17 and includes bug fixes. The tool runs on Linux under the GPLv3 license and is maintained by HexaCluster Corp.  
14
16. 16  
[](https://daily.dev/posts/inside-look-at-reddit-s-metadata-store-g4g3f9yai "Inside Look at Reddit's Metadata Store")  
Article  
![Avatar of systemdesigncodex](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/0df89304c19443509ec91a6ccb707853)System Design Codex · 26w  
Inside Look at Reddit's Metadata Store  
Reddit built a unified media metadata store to consolidate scattered metadata from multiple systems into a single AWS Aurora Postgres database. The system handles 100K+ read requests per second with p50 latency of 2.6ms and p99 of 17ms. The migration used dual writes, backfill, and a Kafka-based Change Data Capture pipeline to detect and fix inconsistencies. For future scalability toward an estimated 50TB by 2030, Reddit implemented range-based partitioning using pg\_partman and pg\_cron, leveraging monotonically increasing post\_id values to keep recent partition indexes cached in the buffer pool.  
14
17. 17  
[](https://daily.dev/posts/from-heroku-to-render-7gg0qgz7h "From Heroku to Render")  
Article  
![Avatar of rubyla](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/rubyla)RUBYLAND · 26w  
From Heroku to Render  
A developer migrates a personal Rails photo-sharing app from Heroku to Render after Heroku announced entering maintenance mode. After a failed attempt with Fly.io due to confusing setup and validation errors, Render proved straightforward: Docker-based deployment via GitHub's container registry, easy PostgreSQL setup with automatic DATABASE\_URL linking, a simple database restore using heroku pg:backups and pg\_restore, and a smooth DNS cutover. The whole process required minimal manual configuration compared to Heroku's classic git-push workflow, and the author praises Render's UI simplicity compared to AWS.  
14

[See all PostgreSQL archives](/tags/postgresql/best-of)

```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","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/tags/postgresql/best-of/2026/03#page","url":"https://daily.dev/tags/postgresql/best-of/2026/03","name":"Best PostgreSQL Posts — March 2026","description":"The most upvoted PostgreSQL posts from March 2026, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/tags/postgresql/best-of/2026/03#items","numberOfItems":17,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/netflix-automates-rds-postgresql-to-aurora-postgresql-migration-across-400-production-clusters-gz0lmzjax","name":"Netflix Automates RDS PostgreSQL to Aurora PostgreSQL Migration Across 400 Production Clusters"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/autobase-2-6-0-released-wav9iwdjt","name":"Autobase 2.6.0 released"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/pgit-what-if-your-git-history-was-a-sql-database--k2mbbtlm1","name":"pgit: What If Your Git History Was a SQL Database?"},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/kdwarn-introducing-pgtui-a-postgres-tui-client-ye5vxg4ar","name":"kdwarn: Introducing pgtui, a Postgres TUI client"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/an-introduction-to-database-system-design-yqoe7mogi","name":"An Introduction to Database System Design"},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/waiting-for-postgresql-19-introduce-the-repack-command-select-from-depesz--naffqzlbk","name":"Waiting for PostgreSQL 19 – Introduce the REPACK command – select * from depesz;"},{"@type":"ListItem","position":7,"url":"https://daily.dev/posts/the-real-cost-of-random-i-o-b3khnmb6n","name":"The real cost of random I/O"},{"@type":"ListItem","position":8,"url":"https://daily.dev/posts/supabase-joins-the-stripe-projects-developer-preview-ypiackz6j","name":"Supabase joins the Stripe Projects developer preview"},{"@type":"ListItem","position":9,"url":"https://daily.dev/posts/from-md5-to-scram-the-next-security-shift-in-postgresql-nekgwu5a0","name":"From MD5 to Scram: The next security shift in PostgreSQL"},{"@type":"ListItem","position":10,"url":"https://daily.dev/posts/managed-databases-are-now-available-in-laravel-forge-hxuqcatz7","name":"Managed Databases Are Now Available in Laravel Forge"},{"@type":"ListItem","position":11,"url":"https://daily.dev/posts/why-i-as-someone-who-likes-mysql-now-want-to-recommend-postgresql-wp1hsdggg","name":"Why I, as Someone Who Likes MySQL, Now Want to Recommend PostgreSQL"},{"@type":"ListItem","position":12,"url":"https://daily.dev/posts/model-withoutrelation-in-laravel-12-54-0-utyyasdyi","name":"Model::withoutRelation() in Laravel 12.54.0"},{"@type":"ListItem","position":13,"url":"https://daily.dev/posts/i-built-a-demo-showing-how-singleflight-reduced-our-database-load-by-97-during-a-cache-stampede-ajcarecvb","name":"I built a demo showing how singleflight reduced our database load by 97% during a cache stampede"},{"@type":"ListItem","position":14,"url":"https://daily.dev/posts/how-to-work-with-dapper-in-net-yzgrlyllb","name":"How to Work With Dapper in .Net"},{"@type":"ListItem","position":15,"url":"https://daily.dev/posts/pgdsat-version-2-0-has-been-released-yosbjkrbk","name":"pgdsat version 2.0 has been released"},{"@type":"ListItem","position":16,"url":"https://daily.dev/posts/inside-look-at-reddit-s-metadata-store-g4g3f9yai","name":"Inside Look at Reddit's Metadata Store"},{"@type":"ListItem","position":17,"url":"https://daily.dev/posts/from-heroku-to-render-7gg0qgz7h","name":"From Heroku to Render"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Tags","item":"https://daily.dev/tags"},{"@type":"ListItem","position":3,"name":"PostgreSQL","item":"https://daily.dev/tags/postgresql"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/tags/postgresql/best-of"},{"@type":"ListItem","position":5,"name":"March 2026"}]}]}
```

