PostgreSQL é o banco relacional principal da Veloz. Vem com PgBouncer opcional, túnel local seguro e variáveis de ambiente injetadas nos seus serviços.
| Versão padrão | Versões disponíveis | Porta padrão |
|---|---|---|
| 17 | 17, 16, 15, 14 | 5432 |
Tamanhos
| 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 |
O tamanho padrão é essencial.
Criar via CLI
# Mais simples
veloz db create --name postgres --engine postgresql
# Com versão, storage e PgBouncer
veloz db create --name postgres --engine postgresql --version 16 --storage 20Gi --size essencial --poolerCriar via veloz.json
{
"databases": {
"postgres": {
"engine": "postgresql",
"version": "16",
"storage": "20Gi",
"size": "essencial",
"pooler": {
"enabled": true,
"poolMode": "transaction",
"defaultPoolSize": 20,
"maxClientConn": 100
}
}
}
}Ao rodar veloz deploy, o banco é criado se não existir, ou atualizado se a config mudou.
PgBouncer (Connection Pooler)
PgBouncer roda como sidecar junto ao PostgreSQL. Use sempre que sua aplicação abre/fecha muitas conexões (Lambda-style, serverless, escala horizontal).
| 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) |
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)
Quando o pooler está ativo, duas connection strings são expostas:
POSTGRES_POOLER_URL, use para queries (porta 6432)POSTGRES_DATABASE_URL, use para migrations e LISTEN/NOTIFY (conexão direta na porta 5432)
Uso com Prisma
datasource db {
provider = "postgresql"
url = env("POSTGRES_POOLER_URL") // pooled, para queries
directUrl = env("POSTGRES_DATABASE_URL") // direto, para migrations
}Importante: o
directUrlé necessário porqueprisma migrateusa locks que o pooler em modotransactionnão suporta. Sem ele, suas migrations vão travar.
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 });Acesso local
Túnel para GUI (DBeaver, pgAdmin, TablePlus)
# Abre na porta 5432 local
veloz db tunnel postgres
# Porta customizada
veloz db tunnel postgres --port 5433Em outra aba, conecte com qualquer client:
psql postgresql://user:[email protected]:5432/velozAs credenciais aparecem em veloz db credentials postgres.
Query rápida
# Interativo (abre prompt)
veloz db query postgres
# Inline
veloz db query postgres -q "SELECT count(*) FROM users"
veloz db query postgres -q "SELECT * FROM orders ORDER BY created_at DESC LIMIT 10"Dashboard
Cada banco tem uma seção de Insights no dashboard com métricas (conexões, QPS, latência, memória, disco), SQL Editor com syntax highlighting e Table Explorer para navegar a estrutura sem escrever SQL.
Comandos úteis
veloz db list # Listar bancos do projeto
veloz db credentials postgres # Ver host, porta, usuário, senha
veloz db update postgres --size turbo # Trocar tier
veloz db restart postgres # Reiniciar engine
veloz db delete postgres # Excluir (irreversível)Próximos passos
- Bancos de Dados, conceitos comuns (env vars, status, deploy update)
- MySQL e Redis, outras opções gerenciadas
- Variáveis de Ambiente, interpolação e composição de URLs