Servers

Databases

Databases are at the core of most applications we build and maintain. Proper setup, security, and maintenance are critical to ensure stability, protect data, and allow reliable recovery when needed.

Database Engines

We work with several different database engines depending on the requirements of the project. The most common are SQL Server and MySQL/MariaDB, which cover the majority of our web and application projects. We also use PostgreSQL when it fits the technology stack, and SQLite when it matches the needs of the application.

For projects that require high scalability or specific data models, we also consider NoSQL alternatives, such as CosmosDB or document-based databases. These are particularly useful when working with globally distributed data, flexible schemas, or high-throughput workloads.

The choice of engine is determined by the application stack, performance needs, and any existing infrastructure within the client organization.

Setup

When setting up a database, we follow a consistent process to avoid misconfigurations and security issues:

Define user roles with the principle of least privilege. Application users only get the permissions they need, and administrative access is kept separate.

Store connection strings securely using environment variables or secret management services. These should never be committed to version control.

Set the correct collation and character set at the time of creation to ensure consistency for sorting, indexing, and multilingual data.

Apply naming conventions to databases, users, and schemas so they are easy to identify across environments (e.g. projectname_stage).

Backup and restore

Every production database must have a defined backup and restore strategy. The exact setup, how often backups are taken, how long they are retained, and where they are stored, depends on the needs of the project. These requirements must always be discussed and agreed with the client, since backup frequency and retention directly affect cost.

When a restore is needed, the process depends on the hosting model. For provider-managed databases, restores are usually requested through the provider’s control panel or support team. For self-managed databases, our team performs the restore using the latest available backup, either into the same environment or into a new one for validation.