database

PostgreSQL

Our default relational database — row-level security, real constraints, no surprises.

How we use it

PostgreSQL is our default relational database for new product builds and most cloud migrations. Real constraints, real transactions, and row-level security as the access-control layer — not a NoSQL default reached for out of habit.

What we use it for

  • Managed Postgres — RDS, Cloud SQL, or Azure Database, depending on the cloud
  • Row-level security — access control enforced in the database, not just the application layer
  • Read replicas — for reporting workloads that would otherwise slow down writes
  • Full-text search and JSONB — covers a lot of ground before a separate search service is justified

Typical patterns

  1. Migrations in version control — schema changes reviewed like application code
  2. Automated backups — with a tested restore path, not just a checkbox
  3. Connection pooling — PgBouncer or the managed equivalent under load

Our standards

Every schema change goes through a migration file, reviewed in the same PR as the code that depends on it. Backups are tested, not assumed to work.

Related services

Using PostgreSQL in production?

Tell us what you run today. We will say whether PostgreSQL fits, what we would change, and what it would take — no deck.