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 postgresCriar 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:
essencial→turbo) - 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çãosession— conexão é mantida durante toda a sessão do clientestatement— 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 6380O 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 senhaQuery (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 bancoLimites
- 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
- veloz.json — Referência completa do arquivo de configuração
- Variáveis de Ambiente — Gerenciar secrets
- Guia Prisma + Veloz — Deploy fullstack com banco