Expertise

Database Expert

The database is the hardest layer of software to change and the least forgiving of mistakes. For more than twenty years I have worked with Oracle, MySQL, PostgreSQL and SQL Server at different scales; I take end-to-end responsibility, from schema design to fixing slow queries, from backup strategy to database migrations.

What does a database expert do?

Database expertise is a far wider field than knowing how to write SQL. It requires foreseeing how the data will be modelled, what a query will do at scale, how the data will come back in a failure, and at which point the system will stall as it grows. I treat this layer together with the rest of the application, because a poor schema slows down even the best-written application.

Schema and data modelling

A correct schema makes future changes easier. Relationships, keys, constraints and indexes must be thought through up front. I pay particular attention to these points:

  • The balance between normalisation and performance: Normalising everything is as wrong as keeping everything in a single table. The decision is made by measuring reporting needs.
  • Data types: The right type choice in date, money, text and numeric fields affects both correctness and speed.
  • Constraints and integrity: Rules that should not be left to the application layer are also defined in the database.
  • Growth plan: Table sizes, archiving and partitioning needs are foreseen up front.

Query performance and indexing

A large share of slow systems come from wrong indexes or unnecessary queries. My approach begins with measurement, not guesswork: slow query logs, execution plans and the real data volume are examined. Then index additions, query rewriting, caching and, if needed, schema corrections are made. Every change is measured before and after; proving "it got faster" requires evidence.

N+1 queries, lists that over-fetch and wrong pagination on the application side matter at least as much as the database side. That is why I evaluate database work together with the application code.

Backup, high availability and disaster scenarios

Taking a backup does not mean being able to restore. A backup that is not regularly tested with a restore may be useless in a real crisis. During setup I clarify the following:

  • Recovery point objective (RPO) and acceptable downtime (RTO).
  • The combination of full, incremental and transaction log backups.
  • Keeping backups in a separate location with access control.
  • Lag and failover behaviour when replication or a cluster is used.

Security and authorisation

Database accounts are separated for application, read, reporting and administration. The application account is not given unnecessary privileges; administrative access is protected with a separate network and authentication. For sensitive data, masking, encryption and access logs are considered. When these defaults are set at the start of a project, they do not produce large costs later.

Migration and modernisation

Migrating from Oracle to PostgreSQL, from MySQL to a managed service, or from an old server to a new cluster is not just a data-copying job. Compatibility differences, stored procedures, date and text behaviour, application connection settings and the downtime plan must be handled together. I explained each database family in more detail on its own page:

Which database, when?

There is no single right answer. The existing team's knowledge, licence cost, hosting environment, data volume and integration needs are decisive. In enterprise systems with an existing investment, Oracle or SQL Server may make sense; for new open-source projects PostgreSQL is a strong default, and for high read traffic MySQL/MariaDB is a mature option. I make the decision according to need and total cost, not fashion.

Frequently asked questions

Which database should I choose?

The existing team's knowledge, licence cost, hosting, data volume and integrations decide. For new projects, PostgreSQL is often a strong default; if there is an enterprise investment in Oracle/SQL Server, it may make sense to continue with it. The decision is made together during the discovery phase.

The database is slow — where do we start?

First, measurement: slow query logs, execution plans and resource usage. Then the most expensive queries and missing indexes are fixed. N+1 and over-fetching problems on the application side are also part of the same review.

I have backups — is that enough?

Taking backups alone is not enough; regular restore testing is required. Keeping backups in a separate location, encrypting them and controlling access also matters. In a real crisis, the time and data-loss targets must be clear.

Does the system go down during a database migration?

In most cases downtime can be kept to a minimum: first the schema and compatibility are prepared, then the migration is done with a short read-only window or dual writes. Downtime is planned according to data volume and architecture.

Do you design the schema around the existing application?

I take existing constraints into account, but I do not copy a wrong model as it is. In critical places I offer correction proposals and a migration plan; the cost and benefit of each proposal are measured.

Would you take over database administration?

Yes, for setup, improvement and a specific migration project. For ongoing operations I prefer to hand over to your teams with documentation; maintenance support can be discussed separately when needed.