Database Overview
Visão geral do banco de dados PostgreSQL.
Arquitetura
graph TD
subgraph Staging
LambdaStg[Lambdas Staging] --> RDSStg[(PostgreSQL Staging<br/>db.t3.micro)]
RDSStg -.backup.-> S3Stg[S3 Backups Staging]
end
subgraph Production
LambdaProd[Lambdas Production] --> RDSProd[(PostgreSQL Production<br/>db.t3.medium)]
RDSProd --> ReadReplica[(Read Replica)]
RDSProd -.backup.-> S3Prod[S3 Backups Production]
RDSProd -.snapshot.-> Snapshots[Manual Snapshots]
end
Instâncias
Staging
Specs: - Instance: db.t3.micro - Storage: 20GB GP2 - Backups: 7 dias - Multi-AZ: Não - Read Replicas: Não
Connection:
Host: app-db-staging.xxxxx.us-east-1.rds.amazonaws.com
Port: 5432
Database: app_db
User: app_user
Password: [Via Secrets Manager]
Production
Specs: - Instance: db.t3.medium (2 vCPU, 4GB RAM) - Storage: 100GB GP3 - Backups: 30 dias - Multi-AZ: Sim - Read Replicas: 1
Connection:
# Write (primary)
Host: app-db-production.xxxxx.us-east-1.rds.amazonaws.com
# Read (replica)
Host: app-db-production-ro.xxxxx.us-east-1.rds.amazonaws.com
Connection Pooling
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
engine = create_async_engine(
DATABASE_URL,
pool_size=10, # Connections no pool
max_overflow=20, # Max connections extras
pool_pre_ping=True, # Test before use
pool_recycle=3600, # Recycle after 1h
echo=DEBUG # Log SQL queries
)
Schema Management
- Migrations: Alembic
- Versioning: Git (migrations files)
- Documentation: Auto-generated
Monitoring
- CloudWatch métricas
- Slow query logs
- Connection count
- CPU/Memory usage
Backups
- Automated daily backups
- Manual snapshots antes de migrations
- Point-in-time recovery habilitado
Security
- VPC privada
- Security groups restritivos
- Encryption at rest
- SSL/TLS enforced
- Secrets Manager para credentials