Few technical decisions get argued about as fiercely, or chosen as carelessly, as the database. People will defend their favourite to the death online, and then in real projects someone picks one in five minutes because it's what the last developer happened to know. Both extremes get you into trouble. The database is the foundation your whole solution sits on, and replacing it later is one of the most painful, expensive changes you can make.
Here's the good news: choosing well is less about knowing every product and more about asking the right questions about your data. Get those answers straight and the shortlist almost writes itself.
This is the same conversation we have with clients before a single table gets created. No religious wars, no "best database" leaderboard, just a practical way to match the tool to the job.
First, the question behind the question
"What database should we use?" is rarely the real question. The real questions are about your data and how you'll use it:
- What shape is your data? Neat, predictable rows and relationships, customers, invoices, orders? Or messy, varied, half-structured things that don't fit a tidy grid?
- How will you read it? Lots of complex queries joining many tables, or simple "fetch this one record by its key" lookups at huge scale?
- How important is correctness? If two things happen at once, must the numbers always balance to the cent, or is "eventually right" acceptable?
- How much will it grow, and how fast? Thousands of records, or billions? Steady, or spiky?
- Who has to run it? A managed cloud service, or your own team keeping the lights on?
Answer those honestly and you've done eighty percent of the work. The product names are just the last twenty.
The big split: relational vs the rest
Almost every database falls into one of two broad families, and knowing which one you need narrows the field dramatically.
Relational (SQL) databases
These store data in tables with defined columns and enforce relationships between them, PostgreSQL, MySQL/MariaDB, Microsoft SQL Server, Oracle. They're the default for a reason. If your data is structured and connected (and most business data is, customers have orders, orders have line items, line items have products), a relational database is almost always the right starting point.
Their superpower is integrity. Transactions either complete fully or not at all, so your books balance and your stock counts stay honest. They speak SQL, a mature query language that almost every reporting and BI tool understands, which matters enormously when leadership wants dashboards later.
NoSQL databases
"NoSQL" is really a family of specialised tools, each good at something relational databases find awkward:
- Document stores (MongoDB), flexible, varied records where the shape changes often, like product catalogues or content.
- Key-value stores (Redis), blisteringly fast lookups and caching, sessions, leaderboards.
- Wide-column stores (Cassandra), enormous write volumes spread across many machines.
- Graph databases (Neo4j), data that's mostly about relationships: social networks, recommendations, fraud rings.
- Time-series databases (InfluxDB, TimescaleDB), sensor readings, metrics, anything stamped with a time and queried by range.
NoSQL isn't "newer and therefore better." It's "different, and better for specific shapes of problem." Reach for it when you have one of those problems, not because it's fashionable.
A practical way to choose
Here's the decision path we actually use, in order:
- Default to PostgreSQL unless you have a clear reason not to. It's free, rock-solid, handles relational and JSON document data, and scales further than most businesses will ever need. For the majority of business applications, the honest answer is "Postgres, and stop overthinking it."
- Choose SQL Server if you're deep in the Microsoft ecosystem, Windows infrastructure, .NET applications, BI and analytics reporting. The integration and tooling pay for the licence. (It's what powers our own Period Pilot fiscal calendar system, precisely because it slots into BI and reporting tools so cleanly.)
- Choose MySQL/MariaDB for straightforward web apps, especially on common hosting stacks where it's the path of least resistance.
- Add a specialist alongside, not instead. Need caching? Add Redis next to your main database. Need full-text search? Add a search engine. Most strong systems are a relational core plus one or two specialists, not a single exotic database trying to do everything.
- Only go document-first (e.g. MongoDB) when your data genuinely has no stable shape, or you're optimising for a specific access pattern at large scale, and you've accepted the trade-offs in reporting and consistency.
The mistake we see most
Picking NoSQL "for scale" before there's any scale to speak of, then spending months rebuilding the joins, transactions and reporting the relational database would have given for free. Choose for the problem you have, with a sensible eye on the one you'll realistically grow into. Premature optimisation for a million users you don't have yet is just complexity you pay for today.
The factors people forget
The technical fit matters, but these quieter factors decide whether you're happy in two years:
- Reporting and analytics. If leadership will want dashboards, a SQL database your BI tools already understand saves you enormous pain. Data trapped in an awkward store is data nobody can use to make decisions.
- Hosting and operations. A managed service (think cloud-hosted Postgres or SQL Server) means backups, patching and failover are handled. Self-hosting saves licence money and costs you weekends.
- Your team's skills. The best database is partly the one your people can actually run well. A theoretically superior tool nobody understands is a liability.
- Backups, security and recovery. Ask "what happens when this breaks?" before you commit, not during the incident.
- Total cost. Licences, hosting, and the engineering time to operate it, all of it, over years, not just the sticker price today.
So, what's the right one?
For most businesses building most applications, a well-designed relational database, PostgreSQL or SQL Server, is the right answer, with a specialist tool added only where a specific need demands it. That's not a boring answer; it's a battle-tested one. The exciting failures usually come from chasing novelty instead of fit.
The deeper truth is that the database is a strategic decision dressed up as a technical one. Choose it with your three-year picture in mind, your reporting needs, your growth, your team, not just this month's feature. That's exactly the kind of foresight a good technology partner brings to the table before the first line of code is written.