PostgreSQL
PostgreSQL serves as the primary relational database for all MATIH services, deployed via the Bitnami Helm chart with primary-replica replication and connection pooling.
Control Plane PostgreSQL
# From matih-control-plane/values.yaml
postgresql:
enabled: true
auth:
existingSecret: matih-db-credentials
primary:
persistence:
enabled: true
size: 50Gi
storageClass: gp3
resources:
requests: { cpu: 500m, memory: 1Gi }
limits: { cpu: 2000m, memory: 4Gi }
readReplicas:
replicaCount: 2
persistence:
enabled: true
size: 50Gi
metrics:
enabled: true
serviceMonitor:
enabled: trueData Plane PostgreSQL
The data plane has its own PostgreSQL instance with databases for each service:
| Database | Service | Purpose |
|---|---|---|
| ai_service | ai-service | Agent state, sessions, prompts |
| query_engine | query-engine | Query cache, metadata |
| catalog_service | catalog-service | Catalog metadata |
| pipeline_service | pipeline-service | Pipeline definitions |
| bi_service | bi-service | Dashboards, widgets |
| semantic_layer | semantic-layer | Semantic models |
Database Initialization
A Kubernetes Job creates databases and users on first deployment:
dbInit:
enabled: true
image:
repository: postgres
tag: "16-alpine"
postgresql:
host: postgresql
port: 5432
existingSecret: postgresql
passwordKey: postgres-passwordSecret Management
PostgreSQL credentials are stored in Kubernetes secrets, never in values files:
# Correct pattern
auth:
existingSecret: matih-db-credentials
# Per-service credentials
config:
database:
existingSecret: "ai-service-db-credentials"
passwordKey: "password"