Skip to content
Agencei

Expertise

PostgreSQL expertise: a reliable, high-performance database

PostgreSQL is the most complete open-source relational database system: ACID transactions, rich types (JSONB, arrays, geometry), advanced indexing, partitioning, logical replication and extensions such as PostGIS or pgvector. Versions 16 and 17 further improved logical replication, vacuum and query performance.

Agencei uses PostgreSQL as the default database for the Spring Boot, Node.js, Python and Next.js applications we build. We also work on existing databases: performance audits, schema reviews, migrations from MySQL or Oracle, replication and backup setup.

This expertise is for companies whose application relies on critical data and who want a database that is fast, consistent, backed up and operable over the long term.

Use cases

Business application or SaaS database

Relational modelling, integrity constraints, multi-tenant isolation by schema or by row-level security policies.

Slow query optimisation

Execution plan analysis, suitable indexes (B-tree, GIN, BRIN, partial), query rewriting and server parameter tuning.

Migration to PostgreSQL

Transfer from MySQL, Oracle or SQL Server with conversion of schema, types and procedures, followed by data validation.

High availability and backups

Streaming replication, automatic failover, continuous backups with point-in-time recovery (pgBackRest, WAL-G) and restore drills.

JSON data and search

JSONB for semi-structured data, built-in full-text search and pgvector for semantic search in AI projects.

Partitioning large tables

Range or list partitioning for event and history tables, with automatic purging of old partitions.

Project types

  • Schema design for a new application
  • Performance audit of an existing database
  • MySQL or Oracle to PostgreSQL migration
  • Major version upgrade
  • Replication and high availability
  • Backup and restore strategy
  • Vector database for an AI project

Integration with the rest of the stack

  • PostgreSQL + Spring Boot (JPA, jOOQ, Flyway)

    Typed data access, versioned migrations and integration tests on a real instance thanks to Testcontainers.

  • PostgreSQL + Node.js (Prisma, Drizzle)

    Schema declared in TypeScript, typed queries and generated migrations, with a connection pool sized for containers.

  • PostgreSQL + AWS (RDS, Aurora)

    Managed instance with automatic backups, encryption, read replicas, Performance Insights and private network connectivity.

  • PostgreSQL + Kubernetes (CloudNativePG)

    When the database must run inside the cluster, the operator handles replication, failover and backups to S3.

  • PostgreSQL + Python (SQLAlchemy, pgvector)

    Data pipelines and AI applications that store embeddings and documents in the same database as the business data.

Examples of problems solved

Query that became slow as data grew

Reading the plan with EXPLAIN ANALYZE, adding a composite or partial index, rewriting a correlated subquery and refreshing statistics.

Table bloat and autovacuum falling behind

Per-table autovacuum thresholds, dealing with long transactions that block cleanup and reorganising with pg_repack.

Deadlocks and waiting locks

Analysing pg_locks and logs, standardising update order, shortening transactions and using SKIP LOCKED for queues.

Too many open connections

Introducing PgBouncer or application-side pooling, tuning max_connections and fixing connections that are never returned.

Dreaded major upgrade

Rehearsing the upgrade on a copy, choosing between pg_upgrade and logical replication to limit downtime, and a rollback plan.

Frequently asked questions

PostgreSQL or MySQL?

Both are reliable. PostgreSQL offers richer types, more advanced indexing, closer adherence to the SQL standard and extensions such as PostGIS or pgvector. MySQL remains common for PHP CMSs. For a new application, we generally recommend PostgreSQL.

Can PostgreSQL replace MongoDB for JSON?

Often, yes. The JSONB type, indexable with GIN, lets you store semi-structured documents alongside relational data, with transactions and joins on top.

Do we need a managed database such as RDS?

For most companies, yes: backups, patches and failover are handled for you. A self-hosted instance is justified by cost, sovereignty or extensions that are not available.

How do you secure a PostgreSQL database?

Encrypted connections, least-privilege roles, row-level security for multi-tenancy, private networking with no public exposure, encryption at rest and audit logging.

Which version do you use?

The latest stable major version for new projects, currently PostgreSQL 17, and at least a still-supported version for existing databases, with an upgrade plan.

Tell us about your project

Describe your need in a few lines: we come back to you with a first analysis and the next steps.