PostgreSQL
The warehouse and the backbone of the control plane. One instance, multiple schemas, responsible for platform state plus analytics data.
Tier
Hot. PostgreSQL is part of the base install and stays running at all times. Expected memory: ~800 MB–1.2 GB depending on warehouse size.
Role
Everything writable lands here. The same PostgreSQL instance holds:
- Platform state — user accounts, roles, permissions, sessions, audit log.
- Warehouse raw — landed data from Airbyte, awaiting dbt.
- Warehouse marts — dbt outputs served to Metabase.
- Service metadata — Airflow's DAG state, OpenMetadata's catalogue (when enabled).
Each concern gets its own schema. Separation makes permissions cleaner without adding operational complexity.
Schema layout
platform -- users, roles, sessions, audit raw -- Airbyte-landed tables, one per source marts -- dbt outputs: fct_*, dim_*, stg_* airflow -- Airflow's internal metadata tables openmetadata -- OpenMetadata's internal tables (if enabled)
Configuration
Credentials are collected at install time:
POSTGRES_USER— superuser for platform managementPOSTGRES_PASSWORD— bcrypt-stored as platform password; stored plain in.envfor PostgresPOSTGRES_DB— default database name (typicallyOrcheStack)
OrcheStack creates per-service PostgreSQL roles with scoped privileges so each downstream tool (dbt, Airflow, Metabase) authenticates as its own user with only the permissions it needs.