Pular para conteúdo

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

Ver Migrations →

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

Ver Backup & Restore →

Security

  • VPC privada
  • Security groups restritivos
  • Encryption at rest
  • SSL/TLS enforced
  • Secrets Manager para credentials

Referências