PostgreSQL i SQLite via perfils

Generat automàticament des de docs/adr/0003-postgres-i-sqlite.md. No editis aquest fitxer directament.

Estat: Acceptat · Data: 2026-09-04

Context

“Auto-allotjable” vol dir dues coses per a públics diferents: qui té un NAS/servidor amb Postgres vol el motor estàndard; qui vol “descarrega i executa” vol un sol contenidor i un backup que sigui copiar un fitxer.

Opcions

OpcióProsContres
Només PostgreSQLEstàndard, pgvector, toolingObliga a 2 contenidors
Només SQLite1 contenidor real, backup trivialSense pgvector; dialecte Hibernate community
H2Integració Spring fàcilNo apte per producció
Postgres + SQLite per perfilMillor experiència per a tots dos públicsCal SQL portable i tests dobles

Decisió

Perfils Spring postgres (per defecte) i sqlite. Flyway amb migracions a db/migration/common (SQL portable) i, només quan sigui imprescindible, postgresql/ i sqlite/ (via placeholder {vendor}). UUID emmagatzemats de manera portable. Els tests d’integració s’executen amb els dos motors a cada PR.

Conseqüències

  • Evitar funcionalitats específiques d’un motor a common; si es necessiten (pgvector a la Fase 5), es fan opcionals i condicionades al perfil.
  • Tota nova migració es prova contra els dos motors abans de fusionar.
  • Configuració per env: FANEL_DB_URL/USER/PASSWORD o FANEL_SQLITE_PATH.