docs
Configuração

Bancos de Dados

Bancos de dados gerenciados na Veloz — PostgreSQL, MySQL e Redis com provisioning automático.

A Veloz oferece bancos de dados gerenciados como serviços de primeira classe. PostgreSQL, MySQL e Redis — provisionados automaticamente, com backups, connection pooling e variáveis de ambiente injetadas nos seus serviços.

Engines suportados

Engine Versões disponíveis Porta padrão
PostgreSQL 17, 16, 15, 14 5432
MySQL 8.4, 8.0 3306
Redis 7, 6 6379

Se nenhuma versão for especificada, a Veloz usa a mais recente (PostgreSQL 17, MySQL 8.4, Redis 7).

Tamanhos disponíveis

Os tamanhos variam conforme o engine. PostgreSQL e MySQL compartilham os mesmos tiers. Redis tem tiers otimizados para memória.

PostgreSQL e MySQL

Tamanho CPU Memória
basico 0.25 vCPU 256 MB
essencial 0.5 vCPU 512 MB
turbo 1 vCPU 1 GB
turbo-plus 1.5 vCPU 2 GB
nitro 2 vCPU 4 GB
nitro-plus 4 vCPU 8 GB

Redis

Tamanho CPU Memória
basico 0.15 vCPU 128 MB
essencial 0.25 vCPU 256 MB
turbo 0.25 vCPU 512 MB
turbo-plus 0.5 vCPU 1 GB
nitro 0.5 vCPU 2 GB
nitro-plus 1 vCPU 4 GB

O tamanho padrão é essencial.

Criar via CLI

# PostgreSQL com pooler
veloz db create --name postgres --engine postgresql --storage 20Gi --size essencial --pooler
 
# MySQL
veloz db create --name mysql --engine mysql --version 8.4 --storage 10Gi
 
# Redis
veloz db create --name cache --engine redis --size turbo
 
# Listar bancos
veloz db list
 
# Ver credenciais
veloz db credentials postgres
 
# Reiniciar
veloz db restart postgres
 
# Excluir
veloz db delete postgres

Criar via veloz.json

Adicione a seção databases no seu veloz.json:

{
  "databases": {
    "postgres": {
      "engine": "postgresql",
      "version": "16",
      "storage": "20Gi",
      "size": "essencial",
      "pooler": {
        "enabled": true,
        "poolMode": "transaction",
        "defaultPoolSize": 20,
        "maxClientConn": 100
      }
    },
    "cache": {
      "engine": "redis",
      "size": "basico"
    }
  }
}

Ao rodar veloz deploy, bancos são criados automaticamente se não existirem.

Campos

Campo Tipo Padrão Descrição
engine string Obrigatório: postgresql, mysql ou redis
version string (mais recente) Versão do engine
storage string "10Gi" Tamanho do disco persistente (mínimo 10Gi)
size string "essencial" Tier: basico, essencial, turbo, turbo-plus, nitro, nitro-plus
pooler object PgBouncer (apenas PostgreSQL)

Pooler (PgBouncer)

Campo Tipo Padrão Descrição
enabled boolean false Ativar PgBouncer sidecar
poolMode string "transaction" transaction, session, statement
defaultPoolSize number 20 Conexões por pool (1-200)
maxClientConn number 100 Max conexões de clientes (1-10000)

Deploy atualiza bancos existentes

Ao rodar veloz deploy, se a configuração no veloz.json mudou em relação ao banco existente, o CLI aplica as alterações automaticamente:

  • Tamanho (size) — altera CPU/memória se o tier mudou (ex: essencialturbo)
  • Pooler — ativa/desativa PgBouncer ou altera o pool mode
  • Storage — redimensiona o volume se o novo tamanho é maior (volumes só crescem, nunca diminuem)

O banco precisa estar no status LIVE para aceitar alterações de tamanho e pooler.

Variáveis de ambiente auto-injetadas

Quando um banco está LIVE, connection strings são injetadas automaticamente em todos os serviços do projeto:

Banco único no projeto

Se existe apenas um banco de um tipo no projeto, variáveis genéricas são injetadas:

  • DATABASE_URL — URL de conexão (PostgreSQL/MySQL)
  • REDIS_URL — URL de conexão (Redis)

Variáveis com prefixo

Sempre injetadas, usando o nome do banco em UPPER_SNAKE_CASE como prefixo:

Variável Descrição
{NOME}_DATABASE_URL URL de conexão direta
{NOME}_HOST Hostname interno
{NOME}_PORT Porta do engine
{NOME}_USERNAME Usuário do banco
{NOME}_PASSWORD Senha gerada automaticamente
{NOME}_DATABASE Nome do database
{NOME}_POOLER_URL URL via PgBouncer (se habilitado, porta 6432)
{NOME}_POOLER_PORT Porta do pooler

Exemplo: banco chamado postgres gera POSTGRES_DATABASE_URL, POSTGRES_HOST, etc.

PgBouncer (Connection Pooler)

PgBouncer roda como sidecar junto ao PostgreSQL. Modos disponíveis:

  • transaction (recomendado) — conexão é devolvida ao pool após cada transação
  • session — conexão é mantida durante toda a sessão do cliente
  • statement — conexão é devolvida após cada statement (não suporta transações multi-statement)

Uso com Prisma

datasource db {
  provider  = "postgresql"
  url       = env("POSTGRES_POOLER_URL")   // pooled — para queries
  directUrl = env("POSTGRES_DATABASE_URL")  // direto — para migrations
}

Uso com Drizzle

// queries — via pooler
const queryClient = postgres(process.env.POSTGRES_POOLER_URL);
 
// migrations — conexão direta
const migrationClient = postgres(process.env.POSTGRES_DATABASE_URL, { max: 1 });

Status do banco

Status Descrição
PENDING Aguardando deploy
PROVISIONING Recursos sendo criados
WAITING_ON_PROVIDER Aguardando engine ficar pronto (> 1 min)
LIVE Pronto para uso
FAILED Falha no provisionamento
STOPPED Parado manualmente

DB Insights (Dashboard)

O dashboard inclui uma seção de Insights para cada banco com métricas em tempo real e histórico.

Métricas disponíveis

  • Conexões ativas — quantas conexões estão abertas
  • Queries por segundo — throughput do banco
  • Latência — tempo de resposta das queries
  • Uso de memória — consumo do engine
  • Uso de disco — espaço utilizado vs disponível

SQL Editor

Edite e execute queries SQL diretamente no dashboard:

  • Syntax highlighting para PostgreSQL, MySQL e comandos Redis
  • Resultados em tabela com paginação
  • Histórico de queries por sessão
  • Download de resultados em CSV

Table Explorer

Navegue pela estrutura do banco sem escrever SQL:

  • Lista de schemas e tabelas
  • Colunas com tipos e constraints
  • Preview de dados (primeiras 100 linhas)
  • Edição inline de registros (gera SQL de alteração)

Redis Explorer

Para bancos Redis:

  • Lista de keys com filtro por padrão
  • Detalhes de cada key (tipo, TTL, tamanho)
  • Edição de valores

Acesso via CLI

Tunnel (conexão local)

Crie um túnel local para acessar o banco com qualquer ferramenta (DBeaver, pgAdmin, TablePlus, etc):

# PostgreSQL — abre na porta 5432 local
veloz db tunnel postgres
 
# MySQL — porta customizada
veloz db tunnel mysql --port 3307
 
# Redis
veloz db tunnel cache --port 6380

O túnel conecta via WebSocket ao db-proxy (Rust) da plataforma, com audit logging de todas as conexões.

Após conectar, use qualquer client:

# PostgreSQL
psql postgresql://user:[email protected]:5432/veloz
 
# MySQL
mysql -h 127.0.0.1 -P 3307 -u user -p
 
# Redis
redis-cli -h 127.0.0.1 -p 6380 -a senha

Query (execução rápida)

Execute queries diretamente pela CLI:

# Query interativa (abre prompt)
veloz db query postgres
 
# Query inline
veloz db query postgres --query "SELECT count(*) FROM users"
veloz db query postgres -q "SELECT * FROM orders LIMIT 10"
 
# Redis
veloz db query cache -q "GET session:abc123"
veloz db query cache -q "KEYS user:*"

Referência completa

veloz db list                    # Listar bancos
veloz db create                  # Criar banco (interativo)
veloz db credentials <nome>      # Ver credenciais
veloz db tunnel <nome>           # Túnel local
veloz db query <nome>            # Executar query
veloz db query-help              # Ajuda de sintaxe
veloz db update <nome>           # Alterar tamanho/pooler
veloz db restart <nome>          # Reiniciar engine
veloz db delete <nome>           # Excluir banco

Limites

  • Máximo de 5 bancos por projeto
  • Armazenamento mínimo: 10 GB
  • Volumes só crescem — não é possível reduzir o tamanho do disco
  • PgBouncer disponível apenas para PostgreSQL

Próximos passos