Article

PostgreSQL Is Boring. That’s Why We Keep Choosing It.

AuthorAbhishek LokhandeSenior Backend & API Engineer
CategoryData & Backend
Reading time3 min read
Last reviewedAugust 10, 2026
Topics
PostgreSQLDatabase architectureBackend engineeringSQLProduct development
A plain black database cylinder standing steady in the middle of scattered red paper fans, splashes and ribbons Abhishek Lokhande, Senior Backend and API Engineer at Script Lanes

Infrastructure is rarely improved by being interesting. A database earns trust by being predictable, easy to inspect when something goes wrong, well understood, and able to survive the product ideas nobody mentioned in the kickoff meeting.

Boring infrastructure gives the team more time to build interesting products.

“Boring” is an engineering compliment

Teams love discussing databases at the beginning of a product because the choice feels foundational. It is also easy to confuse novelty with advantage. A database should make common product work straightforward: transactions, constraints, joins, indexes, backups, migrations, reporting and reliable operations.

PostgreSQL keeps winning that conversation for us. It handles a remarkably wide range of ordinary product work, and it does not make the team invent a new data strategy every six months.

Relational data is still everywhere

Users belong to organisations. Orders have items. Appointments have clinicians and patients. Subscriptions have invoices. Permissions belong to roles. Most business software is full of relationships, and relational databases are very good at expressing them.

Isometric diagram: five block-shaped tables linked in a ring by red and black connectors, standing for records such as customers, orders and payments
Most product data has relationships.

The important benefit is not that SQL is fashionable. It is that the database can enforce truths the application should not be allowed to forget: uniqueness, foreign keys, valid transactions and consistent updates.

Transactions save you from interesting incidents

A payment record and an order status often need to change together. A stock movement may need to succeed with the reservation that caused it. When a workflow needs several writes to behave as one business action, a transaction — all of them succeed or none of them do — is not academic database theory. It is the difference between a clean rollback and a reconciliation spreadsheet.

Isometric diagram: two pending writes travelling along one track, through a single gate, and out the other side with red ticks
Half a business operation is usually a full support ticket.

If the product team is manually fixing half-completed business operations every Monday, the architecture has created an operations feature nobody requested.

JSON is useful — and not an excuse to abandon structure

PostgreSQL can store JSON where flexibility is genuinely useful: data arriving from another system, patchy metadata, settings that keep changing, or a snapshot of an event. That does not mean every table should become id plus one enormous JSON column.

Use structure where the business has structure. Use JSON where variability is the point. The database is allowed to know things about your domain.

Indexes are product work

Performance discussions often arrive too late. A query that feels instant with 5,000 rows can become a customer-facing problem with 20 million. Indexes are the shortcuts a database uses to find rows without reading the whole table. They, and the query plans around them, should evolve with real usage.

Do not pre-optimise every hypothetical query. Do watch for slow queries in production, so the database can tell you where reality differs from your assumptions.

The ORM does not remove the database

An ORM turns the objects in your code into SQL for you. Prisma, query builders and repositories all make life easier, but PostgreSQL still does the work. Developers still need to understand transactions, indexes, constraints, joins, locking and query plans.

Abstraction is useful when it removes repetition. It is dangerous when it removes understanding.

Choose boring on purpose

There are workloads where another database is clearly better: specialised analytics, globally distributed key-value access, graph traversal or extreme time-series workloads. Use them when the workload earns the complexity.

For a large class of web and mobile products, PostgreSQL is a strong default. It lets the team postpone exotic infrastructure until the product actually needs it. That is not a lack of ambition. It is focus.

Found this useful? Build with us.

Tell us what you have in mind. Within 48 hours you'll hear back with an honest plan, clear pricing, and friendly, straight answers.

Start a projectStart a project