docs: add PostgreSQL migration guide for future scalability
- Add section 9 to TECHNICAL_SPECIFICATIONS.md with:
- Migration criteria (DB size, connections, users, transactions)
- Proposed repository pattern architecture
- Migration steps overview
- Benefits of PostgreSQL
- Create docs/MIGRATION_TO_POSTGRES.md with comprehensive guide:
- When to migrate (detailed thresholds)
- Architecture overview (repository pattern)
- Step-by-step migration process (10 steps)
- Complete code examples:
* Base repository interfaces
* SQLite implementation
* PostgreSQL implementation
* Repository factory
* Migration script
- Docker Compose configuration
- Rollback plan
- Monitoring and maintenance
- Performance optimization
- Troubleshooting guide
This enables future migration when database grows beyond SQLite capabilities.
This commit is contained in:
parent
85978a710f
commit
1ad0e8bf13
2 changed files with 1038 additions and 0 deletions
|
|
@ -147,3 +147,54 @@ def loan_device(device_id: int, user_id: int) -> Loan:
|
|||
- **Logging**: Registrar préstamos/devoluciones para auditoría
|
||||
- **Versionado API**: `/api/v1/...` para compatibilidad futura
|
||||
- **Pruebas**: Cubrir flujos críticos (préstamo con dispositivo no disponible, devolución de préstamo inexistente)
|
||||
|
||||
---
|
||||
|
||||
## 9. Migración a PostgreSQL (Futuro)
|
||||
|
||||
### Contexto
|
||||
|
||||
El sistema actualmente utiliza **SQLite** como base de datos embebida, ideal para prototipos y aplicaciones pequeñas. Sin embargo, SQLite tiene limitaciones para escalar.
|
||||
|
||||
### Criterios para Migración
|
||||
|
||||
Considerar migrar a **PostgreSQL** cuando:
|
||||
- Tamaño DB > 1GB
|
||||
- Más de 50 conexiones simultáneas
|
||||
- Más de 200 usuarios activos
|
||||
- Más de 500 transacciones por minuto
|
||||
- Necesidad de múltiples servidores
|
||||
|
||||
### Arquitectura Propuesta
|
||||
|
||||
Usar un patrón de **Repository** para abstraer la base de datos:
|
||||
```
|
||||
backend/
|
||||
├── repositories/
|
||||
│ ├── base_repository.py # Interfaz abstracta
|
||||
│ ├── sqlite_repository.py # Implementación SQLite
|
||||
│ └── postgres_repository.py # Implementación PostgreSQL
|
||||
└── config/
|
||||
└── database.py # Fábrica de repositorios
|
||||
```
|
||||
|
||||
### Schema PostgreSQL
|
||||
|
||||
El schema es similar al de SQLite pero con tipos de datos más específicos y índices adicionales para rendimiento.
|
||||
|
||||
### Pasos para Migración
|
||||
|
||||
1. Instalar dependencias: `pip install psycopg2-binary sqlalchemy alembic`
|
||||
2. Configurar PostgreSQL y crear base de datos
|
||||
3. Ejecutar script de migración: `python scripts/migrate_to_postgres.py`
|
||||
4. Cambiar configuración: `DB_TYPE=postgres`
|
||||
5. Iniciar aplicación
|
||||
|
||||
### Beneficios
|
||||
|
||||
- Concurrencia ilimitada (múltiples escritores)
|
||||
- Escalabilidad a miles de conexiones
|
||||
- Mejor rendimiento con índices
|
||||
- Seguridad integrada (autenticación, roles)
|
||||
- Backups automáticos
|
||||
- Replicación y clustering
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue