ADR-019: PostgreSQL como base de datos estándar¶
Estado: aceptado Fecha: 2026-05-17
Contexto¶
SmallCountry necesita un sistema de bases de datos relacionales (RDBMS) que sea el estándar para todos los servicios. Sin un estándar, cada servicio podría elegir su propia base de datos (MySQL, PostgreSQL, SQLite), lo que genera sobrecarga operativa: múltiples motores que administrar, respaldar, monitorear y asegurar. La decisión se alinea con ADR-012, donde farmOS ya requiere PostgreSQL + PostGIS.
Decisión¶
PostgreSQL será la base de datos relacional estándar para todos los servicios de SmallCountry. Cualquier servicio que requiera datos relacionales usará PostgreSQL. Se mantendrá una única instancia (con réplicas si es necesario) para minimizar la carga operativa.
Alternativas consideradas¶
| Opción | Por qué se descartó |
|---|---|
| MySQL / MariaDB | Amplia adopción, pero PostgreSQL tiene mejor soporte geoespacial (PostGIS), mejor manejo de JSON, y es el requisito nativo de farmOS. Mantener ambos motores duplica el esfuerzo operativo. |
| SQLite | Excelente para edge y aplicaciones locales, pero no soporta concurrencia multiusuario ni réplicas. No es adecuado para servicios web con múltiples escritores. |
| MongoDB (o cualquier NoSQL) | No cubre las necesidades relacionales de farmOS, Authentik y otros servicios. Algunos datos geoespaciales y relacionales requieren integridad referencial y transacciones ACID. |
| ## Consecuencias | |
| - ✅ Un solo motor que operar, respaldar, monitorear y asegurar. Simplifica la administración. | |
| - ✅ PostGIS integrado: datos geoespaciales nativos para farmOS y futuros servicios de mapas. | |
| - ✅ Soporte nativo de JSON/JSONB: permite modelo híbrido relacional-documento cuando sea necesario. | |
| - ✅ Madurez, estabilidad y ecosistema de herramientas (pgAdmin, pgBackRest, patroni para HA). | |
| - ❌ Algunas aplicaciones o stacks legacy asumen MySQL. Requerirá adaptación o contenedores Docker con su propio MySQL en casos extremos, documentados como excepción. | |
| - ❌ Mayor consumo de recursos que SQLite para bases de datos pequeñas (pero irrelevante a escala de SmallCountry). | |
| ## Referencias | |
| - Ficha: PostGIS | |
| - ADR-012: farmOS como ERP agrícola |